Pertanyaan ini sudah ada jawabannya di sini:
Saya telah memperhatikan ini pada banyak mesin Windows yang berbeda, pada banyak kesempatan yang berbeda: penggunaan RAM yang dilaporkan oleh Task Manager atau Resource Monitor sering tampak menambah jumlah yang secara signifikan lebih rendah dari jumlah aktual yang digunakan.
Misalnya, berkali-kali di laptop atau desktop saya, saya telah melihat sesuatu seperti 7GB sedang digunakan, namun total RAM yang Bekerja lebih dari 3GB. Saya hanya tidak tahu di mana itu digunakan!
Berikut adalah contoh ekstrem yang saya perhatikan hari ini di Resource Monitor pada server:
Jika Anda mengklik kanan gambar dan membuka di tab baru, dan melihat angka-angka, Anda akan melihat bahwa Perangkat Kerja (yang tidak termasuk memori virtual nonfisik) bertambah hingga sekitar 1,7GB. Saya mendapatkan nomor yang sama dengan menambahkan penggunaan RAM di Task Manager ketika "Tampilkan proses dari semua pengguna" diaktifkan.
Sekarang, inilah tangkapan layar tab Performance task manager:
Ini mengatakan memori fisik 7.6GB sedang digunakan.
Saya melihat ini sepanjang waktu, di komputer pribadi, laptop, dan sekarang server: total penggunaan RAM yang dilaporkan oleh alat sistem hanya menyumbang sekitar 1/4 dari penggunaan RAM yang saya amati. WTF sedang berlangsung ???
Apakah ada penjelasan yang memuaskan tentang di mana semua RAM saya berada? Apa yang melahapnya, dan mengapa tidak meninggalkan jejak?
EDIT: Ini gambar penggunaan RAM grafis, seperti yang diminta pengguna:
EDIT 2: Menanggapi respons James, berikut adalah gambar proses yang tidak di-paging poolmon.exe
, diurutkan berdasarkan ukuran:
Hasil ini membingungkan saya. poolmon
dengan benar menyatakan bahwa saya memiliki 6GB kumpulan non-halaman yang digunakan, tetapi semua proses kolam non-halaman berukuran kurang dari 8MB.
Apa artinya ini? Apakah poolmon
gagal mendeteksi beberapa proses menggunakan kumpulan non-halaman?
sumber
Jawaban:
Maaf, saya tahu ini kedengarannya seperti tanggapan sembrono ... tetapi jawaban untuk pertanyaan dalam judul Anda adalah "karena mereka tidak seharusnya."
Atau untuk membuatnya lebih sopan: Ada banyak penggunaan RAM yang tidak dalam perangkat kerja pribadi proses. Beberapa di antaranya ada di perangkat kerja bersama proses - tetapi Anda tidak bisa mendapatkan gagasan yang dapat diandalkan tentang penggunaan aktual di sana, karena berbagi; menambahkan angka proses akan memberi Anda hasil yang terlalu besar.
Hal-hal lain yang menempati RAM, seperti kumpulan non-halaman, bagian penduduk dari kumpulan halaman, dan bagian-bagian tetap dari penggunaan ruang kernel lainnya, sama sekali tidak muncul di tampilan "proses" Task Manager.
Mengenai masalah spesifik Anda:
Pada tampilan Task manager, lihat bagian "memori kernel"? Anda memiliki "memori tanpa halaman" 6 GB (itu kumpulan tanpa halaman). Itu bagian dari bagian "Sedang digunakan" dalam grafik kedua Anda. Kelompok non-halaman tidak dikenakan biaya untuk proses apa pun, itulah sebabnya menambahkan nomor per-proses di task manager tidak mendekati total yang digunakan. Beberapa pengemudi kemungkinan besar menggunakannya. Ini adalah jumlah yang sepenuhnya berlebihan; itu harus di bawah 1 GB. driver apa pun yang bertanggung jawab atas bagian berlebihan dari penggunaan kumpulan non-halaman tidak diragukan lagi buggy.
RAMmap dapat mengkonfirmasi ini (pada tab "Gunakan Hitungan", lihat total untuk "Non-Halaman Pool") tetapi tidak dapat membantu Anda menemukan driver yang menyebabkannya.
Berikut cara menemukannya: Dapatkan salinan alat Microsoft "poolmon". Ini adalah alat karakter-mode (anak laki-laki, apakah pernah) didistribusikan dengan Windows Driver Kit. Untuk Windows 7 WDK adalah unduhan gratis . Anda harus mengunduh semuanya (ini ISO) dan menginstalnya, tetapi Anda dapat memilih untuk menginstal alatnya saja, jika itu yang Anda inginkan.
Temukan poolmon di direktori WDK - pastikan untuk memilih yang tepat, 32- atau 64-bit - dan jalankan dari prompt perintah administrator. Anda akan mendapatkan tampilan seperti ini:
Sekarang, tekan tombol "p" (tidak, saya tidak bercanda. Tidak ada menu di sini!) Sampai kolom "Type" hanya menampilkan "Nonp". Kemudian tekan "b" (dua kali jika perlu) untuk mengurutkan tampilan dalam urutan menurun dengan kolom Bytes (yang sudah dilakukan dalam sampel di sini).
Kemudian lihat kolom "Tag" untuk baris paling atas. Dalam kasus (jelas buatan) yang ditampilkan di sini adalah "Kebocoran". (Sistem ini menjalankan driver yang sengaja disadap untuk menyebabkan masalah ini - ini adalah kolam bocor "yang bocor").
btw, garis yang disorot adalah yang diubah sejak pembaruan sebelumnya ke layar kuno ini.
Sekarang cari c: \ Windows \ System32 \ Drivers untuk file .sys yang berisi string itu. Dalam hal ini Anda akan mencari "Leak", seperti ini:
Kemudian cari web untuk referensi ke string itu dan / atau nama driver itu.
Kembali ke sini dan melaporkan nama lengkap, nama pabrikan, dll. Dari file .sys juga akan sangat membantu.
(Taruhan saya adalah bahwa tag yang Anda temukan adalah ECMC, drivernya adalah intmsd.sys, dan itu terkait dengan produk yang disebut ExpressCache atau IntelliMemory. Saya akan "mencopot" produk itu. Ada pembaruan untuk memperbaiki masalah, tetapi bahkan dengan versi tetap saya belum pernah melihat kinerja sistem yang ditingkatkan oleh produk ini; pada dasarnya duplikat fungsi yang sudah ada di Windows.)
Jika Anda tidak dapat menemukannya dengan cara itu, langkah selanjutnya adalah menggunakan "Windows Performance Toolkit". Cari di forum ini untuk string itu, dengan jawaban oleh magicandre1981, untuk caranya. Abaikan jawaban yang menyebutkan xperf - ini adalah versi alat yang lebih lama.
PEMBARUAN: Menurut komentar, OP melakukan hal di atas dan menemukan bahwa meskipun poolmon melaporkan ukuran total kolam tanpa halaman memang besar, semua potongan yang dialokasikan tampaknya kecil. Dugaan saya (juga dalam komentar) adalah bahwa ini disebabkan oleh apa yang akan saya sebut kolam "kembung": Pool dialokasikan, kemudian dibebaskan, tetapi karena beberapa alasan jumlah RAM yang dialokasikan ke pool tidak menyusut untuk mencerminkan "membebaskan" . Mengikuti prosedur yang dijelaskan dalam jawaban ini oleh magicandre dapat mengidentifikasi pelakunya.
sumber
poolmon
hari ini jika saya punya waktu, dan mencoba membaca jawaban Anda lebih dekat juga untuk memastikan saya memahaminya. Apakah Anda mengatakan mungkin ada kebocoran memori? Jika demikian, itu sepenuhnya masuk akal, karena kami sedang mengerjakan perangkat lunak yang diketahui mengalami kebocoran memori yang mengerikan.poolmon.exe
di server yang dimaksud, dan mengedit pertanyaan saya untuk menyertakan tangkapan layar.poolmon
menyatakan saya memiliki 6GB kumpulan halaman (seperti yang Anda tunjukkan dari tangkapan layar Task Manager saya), tetapi ketika saya melihat hanya proses "Nonp" dan mengurutkan berdasarkan ukuran, semuanya kecil (yang terbesar adalah 8MB). Apakah Anda punya ide mengapapoolmon
tidak mendeteksi sebagian besar penggunaan kumpulan non-halaman?