Kebocoran memori Windows Server 2008 R2 64-bit

12

Saya mengalami masalah di salah satu server kantor saya. Server Windows 2008 R2 tervirtualisasi dengan memori RAM 6GB. Ini hanya memiliki Microsoft SQL Server (memori yang ditetapkan maksimum = 3GB), dan hanya perangkat lunak yang tidak mengkonsumsi lebih dari 1GB RAM. Namun, memori RAM server hampir penuh, dan melihat proses-proses dalam task manager sepertinya mereka tidak menjumlahkan ini. Saya telah menginstal RamMap, tetapi tidak dapat mengartikannya dengan sangat mudah, adakah "nilai tinggi" yang dapat Anda identifikasi?

masukkan deskripsi gambar di sini

Guillermo Zooby
sumber
1
Mengurutkan berdasarkan "Total" atau "Aktif" akan membuat jawabannya cukup jelas.
Dmitry Grigoryev

Jawaban:

18

Yah, saya melihat ~ 3,2 gigabyte memori Driver Locked, yang langsung terlihat mencurigakan.

Memori jenis ini, memori Driver Locked, adalah memori yang telah dikunci oleh driver mode kernel. Biasanya untuk tujuan mentransfer kecil jumlah data, biasanya untuk singkat periode waktu.

Jadi, jika Anda memiliki sebagian besar memori driver yang terkunci, untuk waktu yang lama , biasanya itu pertanda ada sesuatu yang tidak beres.

Saya akan mengambil tebakan liar di sini dan menebak bahwa karena Anda menyebutkan bahwa itu adalah server tervirtualisasi, bahwa itu adalah driver balon VMware yang melakukan ini. Saya tidak memiliki cukup data untuk dapat memberi tahu Anda mengapa melakukan hal ini, tetapi ada banyak kasus dan VMware mendukung KB, seperti ini , yang secara khusus berbicara tentang driver balon yang secara keliru mempertahankan sejumlah besar memori ketika seharusnya tidak tidak mungkin.

Anda juga harus mempertimbangkan kemungkinan bahwa driver balon berperilaku seperti yang dirancang, dan berusaha membuat halaman server Anda kehabisan memori karena sangat perlu memberikan memori ke VM lain di host yang sama.

Ada kemungkinan lain bahwa itu bukan driver memori dinamis hypervisor sama sekali, tetapi hanya beberapa driver perangkat jahat.

Driver biasanya mengalokasikan memori yang "ditandai" dengan tag 3 atau 4 karakter yang memberikan petunjuk tentang driver apa yang bertanggung jawab untuk membuat alokasi.
poolmon.exe, bagian dari Windows SDK / DDK, dapat membantu mendiagnosis.

Seperti saya katakan, tebakan liar, tapi itu yang terbaik yang bisa saya lakukan dengan data yang saya miliki.

Ryan Ries
sumber
16

Yah, saya punya setiap versi SQL Server yang bisa dibayangkan di tempat, dari 2005 hingga 2016, dan saya belum melihat ada kebocoran memori sebesar 100% dari mem digunakan sebenarnya. Lihat apakah Anda memiliki Memori Dinamis untuk Mesin Virtual Anda diaktifkan .

Driver Lockedadalah sosok yang harus Anda konsentrasi. Dalam kasus spesifik Anda, Driver Lockedmungkin salah satu driver Hyper-V, yang mengunci semua memori yang tidak digunakan (ditetapkan untuk VM, tetapi tidak digunakan oleh atm), sehingga dapat "memberikannya" ke beberapa VM lain yang dikonfigurasi dengan Memori Dinamis, atau bahkan untuk host OS, mana yang membutuhkannya saat ini. Anda dapat mengujinya dengan membuka beberapa file besar atau aplikasi yang intensif memori di dalam mesin virtual itu - memori DriverLocked akan turun karena beberapa metrik lainnya meningkat. IMHO ini seharusnya tidak menjadi alasan untuk khawatir jika Anda tidak terlalu banyak menyediakan memori di semua VM.

Kitet
sumber
5
Saya mengalahkan Anda dengan seperti 8 detik ... selamat datang di Server Fault. :)
Ryan Ries
Anda memang, memang :-)
Kitet