Windows menggunakan terlalu banyak RAM, cara mendiagnosis sumber daya babi

73

Saya memiliki 16GB RAM sistem. Pada startup tanpa aplikasi yang terbuka kecuali task-manager Windows menggunakan sekitar 3gb RAM. Saya melihat pada tab proses, tetapi sepertinya tidak ada yang luar biasa. Bagaimana saya bisa mengetahui mengapa Windows saya menggunakan begitu banyak RAM.

masukkan deskripsi gambar di sini

semua proses dari semua pengguna

masukkan deskripsi gambar di sini


Membaca dari poolmon nampaknya driver broadcom nirkabel saya menggunakan sekitar 0.4GB RAM. Bahkan jika saya menghapusnya masih akan menggunakan 2.6GB saat start-up, yang masih terlalu banyak.

masukkan deskripsi gambar di sini


Setelah menginstal ulang driver nirkabel yang terkait dengan kebocoran memori. Saya memiliki tangkapan layar baru dan ingin mengonfirmasi bahwa itu memang kebocoran memori.

masukkan deskripsi gambar di sini

Vader
sumber
3
Pertama-tama, Anda hanya memiliki 12GB. Salah satu dari empat batang 4GB Anda buruk atau tidak terpasang dengan benar, atau motherboard Anda tidak mendukung 16GB. Kedua, sudahkah Anda mencoba menjalankan program keamanan untuk memeriksa malware? Essential Securitys adalah built-in, jadi pastikan untuk memperbarui definisinya dan menjalankan pemindaian. Juga coba beberapa program anti-rootkit karena rootkit secara khusus bersembunyi (meskipun mereka juga biasanya mencoba untuk menjaga profil rendah agar tidak diperhatikan, dan menggunakan beberapa gigabyte RAM hampir tidak menyatu).
Synetech
Anda mungkin ingin melihat kinerja -> monitor sumber daya
Journeyman Geek
Coba jalankan perintah tasklist yang mengarahkan outputnya ke file, C: \ blah> tasklist> aa, lalu buka file aa, Anda melihat total untuk setiap proses mis. 15.100K, menghapus K setelahnya, dan menjumlahkan total dengan Excel. Lihat apakah total cocok dengan angka yang digunakan manajer tugas mendekati grafik untuk digunakan. Bagi saya total dari daftar tugas adalah 4GB dan manajer tugas mengatakan 4.5GB. Saya tidak bisa menjelaskan perbedaan yang saya miliki tetapi tidak besar. itu akan menarik jika Anda memiliki perbedaan besar.
barlop
Saya tidak punya keunggulan
Vader
1
Tag NDxx adalah ndis.sys. Saya kira BRCM adalah Broadcom. Itu akan menunjukkan adaptor jaringan Anda menjadi masalah.
David Marshall

Jawaban:

82

Anda memiliki kebocoran memori yang disebabkan oleh pengemudi. Lihatlah nilai tinggi memori kernel non-halaman. Dalam kasus Anda ini lebih dari 3,7 GB. Anda dapat menggunakan poolmon untuk melihat driver mana yang menyebabkan tingginya penggunaan.

Instal Windows WDK , jalankan poolmon, sortir melalui Ptipe sesudah kolam sehingga non-paged ada di atas dan via Bbyte untuk melihat tag yang menggunakan sebagian besar memori. Jalankan poolmon dengan pergi ke folder tempat WDK diinstal, buka Tools (atau C: \ Program Files (x86) \ Windows Kits \ 10 \ Tools \ x64) dan klik poolmon.exe.

Sekarang lihat pooltag mana yang menggunakan sebagian besar memori seperti ditunjukkan di sini:

masukkan deskripsi gambar di sini

Sekarang buka prompt cmd dan jalankan perintah findstr. Untuk melakukan ini, buka cmd prompt dan ketik "cd C: \ Windows \ System32 \ drivers", tanpa tanda kutip. Kemudian ketik "findstr / s __ . ", Di mana __ adalah tag (nama paling kiri di poolmon). Lakukan ini untuk melihat driver mana yang menggunakan tag ini:

masukkan deskripsi gambar di sini

Sekarang, buka folder driver (C: \ Windows \ System32 \ drivers) dan klik kanan driver yang dimaksud (intmsd.sys pada contoh gambar di atas). Klik Properti, buka tab detail untuk menemukan Nama Produk. Cari pembaruan untuk produk itu.

Jika pooltag hanya menampilkan driver Windows atau terdaftar di pooltag.txt ( "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt")

Anda telah menggunakan xperf untuk melacak apa yang menyebabkan penggunaan . Instal WPT dari Windows SDK , buka cmd.exe sebagai admin dan jalankan ini:

xperf -pada PROC_THREAD + LOADER + POOL -Stackwalk PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C: \ pool.etl

menangkap 30 -60-an tumbuh. Buka ETL dengan WPA.exe, tambahkan grafik Pool ke panel analisis.

Letakkan kolom pooltag di tempat pertama dan tambahkan kolom tumpukan. Sekarang muat simbol di dalam WPA.exe dan rentangkan tumpukan tag yang Anda lihat di poolmon.

masukkan deskripsi gambar di sini

Sekarang temukan driver pihak ke-3 lain yang dapat Anda lihat di tumpukan. Di sini Thretag (Utas) digunakan oleh AVKCl.exe dari G-Data. Cari pembaruan driver / program untuk memperbaikinya.

magicandre1981
sumber
1
Oh maaf. @ Jebediah Kerman, sudahkah Anda menjalankan perintah findstr? Dari namanya bisa jadi driver kartu jaringan terkait. Jika Anda masih memiliki masalah, jalankan RAMMap, simpan data sebagai RMP, kompres file RMP dan unggah zip.
magicandre1981
ini mungkin terdengar bodoh. Tapi bagaimana cara memulai poolmon. Saya dulu bisa mencari "poolmon.exe" dan meluncurkan
Vader
@JebediahKerman Saya pikir Anda sudah melakukan ini dan menemukan tag. Apakah gambar dari pos Anda bukan biliar Anda?
magicandre1981
Gambar itu milik saya. untuk beberapa alasan indeks pencarian tidak lengkap.
Vader
@JebediahKerman apakah Anda sudah melihat apa NDFT ini? Anda juga dapat menggunakan xperf untuk melacak penggunaan kumpulan: channel9.msdn.com/show/Defrag-Tools/…
magicandre1981
15

Nah, hal pertama, sebelum saya masuk ke jawaban yang lebih detail. Dalam tangkapan layar pertama Anda, Non-Paged Pool Anda (sejenis penggunaan memori kernel) berada pada 1,3GB. Bagi saya itu nampak sangat tinggi, terutama hanya 30 menit setelah booting. Saya kira saya bisa melihat NP Pool mendapatkan setinggi itu setelah penggunaan yang lama atau dengan program yang bocor seperti saringan. Sebaliknya, NP Pool saya biasanya antara 100 dan 200 megabyte, dan kumpulan halaman saya mungkin setinggi 400 atau 500 (dan itu setelah sistem saya berjalan tanpa reboot selama berminggu-minggu.)


Anda dapat mengaktifkan beberapa kolom tambahan di Task Manager dengan mengklik kanan header kolom, dan memilih kolom pilih. Anda harus menambahkan Working Set (private), Working Set (shared), Commit, dan NP Pool. Saya akan memindai semua proses Anda dari semua pengguna, dan melihat apakah ada di antara mereka yang memiliki NP Pool lebih dari 256KB. Jika Anda melihat ada, terutama yang jauh lebih tinggi, yang mungkin menjadi sumber masalah, atau setidaknya bagian dari itu.

Perangkat kerja total Anda, jumlah memori fisik yang digunakan oleh suatu proses, adalah kombinasi dari perangkat kerja pribadi dan bersama (WS). Privat biasanya lebih besar untuk sebagian besar proses, namun mungkin ada beberapa yang menggunakan jumlah WS bersama yang lebih besar. Keduanya biasanya dijumlahkan dengan total WS. Komit adalah jumlah set kerja Anda yang telah dikomit ke backing store (dalam kebanyakan kasus, file halaman Windows). Aplikasi berlatar belakang akan sering memiliki Komit lebih besar daripada WS, menunjukkan bahwa banyak kumpulan halaman mereka telah ditukar keluar dari memori dan ke dalam file halaman Anda (yang cukup normal untuk aplikasi desktop yang telah diminimalkan dan tidak digunakan untuk sementara waktu).

Non-Paged Pool adalah memori yang tidak dapat, dan tidak akan, ditukar dengan memori fisik ... yang secara efektif menggunakan memori fisik minimum permanen Anda. Memori NP Pool sering berisi kode program dan bagian-bagian penting yang harus ada dalam memori fisik untuk berperilaku dengan benar atau aman, tumpukan khusus, dll. Dari 60 proses, jika semuanya memiliki memori NP Pool 256 KB, maka penggunaan memori fisik minimum absolut Anda akan menjadi sekitar 15.360KB. Dalam kebanyakan kasus satu atau dua aplikasi mungkin memiliki NP Pool 256KB, sementara sebagian besar memiliki lebih sedikit, seringkali jauh lebih sedikit (atau tidak ada). Sangat tidak mungkin sistem akan pernah menampilkan keseluruhan dari semua proses yang bekerja, jadi jangan pernah berharap penggunaan memori menjadi rendah.


Akhirnya, tujuan memiliki lebih banyak memori adalah untuk menghindari keharusan data halaman ke dan dari ruang memori yang diperluas (swap, file halaman) pada disk fisik. Paging adalah proses yang melibatkan memindahkan blok memori fisik yang dialokasikan, mendorong beberapa ke disk, dan membawa yang lain ke memori fisik dari disk. Paging adalah, untuk membuatnya sederhana, sangat tidak diinginkan. Ini bukan "buruk" per-se, tetapi bisa menjadi hambatan nyata pada kinerja ketika itu terjadi terlalu sering. Poin utama meningkatkan total RAM fisik dalam suatu sistem adalah untuk memungkinkan lebih banyak proses menjaga lebih banyak komit mereka dalam memori fisik (perangkat kerja yang lebih besar). Mengkonsumsi memori bukan masalah, dan ketika lebih banyak proses yang dieksekusi menggunakan lebih banyak memori, kinerja total sistem dan kinerja proses aktif biasanya akan lebih tinggi,

Windows mengelola memori untuk Anda, dan secara otomatis halaman data masuk dan keluar dari memori ke dan dari halaman (swap) file untuk Anda. Jika Anda menjalankan proses yang membutuhkan memori 9GB dan sistem Anda sudah menggunakan 4GB (dari 12GB), maka sistem akan secara otomatis mencari tahu proses mana yang tidak memerlukan akses langsung ke seluruh rangkaian kerja mereka, dan itu akan menampilkan beberapa atau semua halaman dari kumpulan halaman mereka untuk bertukar untuk membebaskan 1GB tambahan itu. Jika proses besar Anda pada akhirnya membutuhkan lebih banyak memori, windows akan semakin mengurangi set proses kerja lainnya hingga memiliki ruang kosong yang cukup untuk mengalokasikan blok yang baru diminta. Proses besar Anda pada akhirnya dapat menggunakan semua memori yang tersedia kecuali NP Pool dan mungkin beberapa overhead minimum tambahan untuk menjalankan proses secara berkala yang tidak memungkinkan Windows untuk membebaskan lebih dari set kerja mereka (i. e. mereka memiliki kesalahan halaman yang tertunda bahwa Windows jika tidak akan bertukar dari memori fisik, tetapi karena mereka diminta, mereka tidak dapat dipindahkan.)

Jika suatu proses membutuhkan lebih banyak memori daripada yang diizinkan untuk mengakses (proses 32bit biasanya dapat mengakses 2Gb, dan beberapa sedikit kurang dari 4Gb dengan teknik yang ditingkatkan, masing-masing proses 64bit biasanya dapat mengakses sekitar 48Gb memori, masing-masing), maka windows terkadang akan mencoba untuk memvirtualkan memorinya dengan ruang swap. Jika aplikasi 32bit ingin menggunakan ruang maksimum yang diizinkan 2Gb, tetapi hanya 1.2Gb yang tersedia, windows akan memesan 2Gb penuh dalam file halaman, dan memindahkan proses sendiri data masuk dan keluar dari file halaman sebagaimana diperlukan untuk mendukung penggunaan memori aplikasi. Total penggunaan "memori" dalam hal ini mungkin tampak lebih besar daripada memori fisik yang tersedia, saat menggunakan Total Commit. Total Commit biasanya akan maksimal pada ukuran file halaman total grand, yang ketika dikelola oleh sistem, biasanya 2-3x jumlah memori fisik. Dalam kasus anda,


Satu poin terakhir. Anda mengatakan dalam jawaban Anda bahwa Anda memiliki 16Gb RAM, sedangkan Task Manager hanya melihat 12Gb RAM. Satu dari dua hal di sini. Entah sistem Anda benar-benar hanya memiliki RAM 12Gb, atau salah satu stik Anda tidak mendaftar dengan benar. Jika tongkat ram (saya mengasumsikan tongkat 4G 4Gb), mungkin buruk, mungkin tidak duduk sepenuhnya dengan benar di motherboard Anda, atau motherboard Anda mungkin memiliki masalah pendeteksian memori.

Untuk memeriksa apakah ini yang terakhir, Anda harus memperbarui BIOS motherboard Anda terlebih dahulu ke versi terbaru. Saya memiliki masalah yang sama ... enam dudukan ram Tripple-Channel DDR3 saya (6x 2Gb) semuanya baik berdasarkan pengujian masing-masing ... tapi motherboard saya secara acak memutuskan untuk tidak menghitung satu atau dua dari mereka setiap kali, sering meninggalkan saya dengan hanya 8Gb ram. Pembaruan BIOS memperbaiki masalah ini, dan saya memiliki akses yang dapat diandalkan ke semua 12GB memori saya sekarang.

jrista
sumber
menarik..dan saya hanya memperhatikan bahwa memori non-halamannya sangat besar..menambang 539 MB, 139MB non-halaman. Kita jelas tahu lebih banyak dari saya tentang ini .. Tapi, Anda salah total komit. tulis "Total Commit biasanya akan maksimal pada ukuran file halaman total grand" RAM saya adalah 12GB. Saya mengatur pagefile saya ke 4000MB (3,8GB?) min dan 1,5-2x memori sebagai max. Kom max saya adalah 15GB (komit = 7 / 15 saat ini), pagefile saya sekitar 4GB atau mungkin sedikit kurang seperti 3,8GB. Max Commit lebih seperti ukuran pagefile + ukuran RAM. Ketika pagefile saya 12GB max komit saya sekitar 24GB. Pagefile hampir 3,8GB atau 4GB maks komit adalah 15GB
barlop
@barlop: Ya, Anda agak salah paham apa itu komit. Secara teknis, biaya komit adalah total "ruang memori yang hampir dapat dialamatkan", termasuk ruang yang didukung oleh manajer memori yang diperluas dan kesadaran alamat yang besar. Max commit tidak akan menjadi file halaman + RAM, melainkan akan digambarkan sebagai total ruang alamat virtual yang dikelola sistem. File halaman pada umumnya harus mencakup, paling tidak, total ukuran memori fisik, dan juga memperpanjang melampaui ukuran memori fisik total. Dalam kasus Anda, saya berharap berkomitmen setidaknya 18Gb (1,5x) atau 24Gb (2x), namun itu ...
jrista
... akan menjadi kasus untuk file halaman yang dikelola sistem. Sepertinya Anda telah secara manual mengubah pengaturan file halaman Anda, dalam hal ini saya harus tahu lebih banyak tentang konfigurasi spesifik Anda untuk memberi tahu Anda mengapa komit Anda saat ini adalah 15Gb (karena file halaman 3,8 / 4Gb akan mengindikasikan komit 16Gb, bukan 15Gb .) Sangat mungkin untuk mengkonfigurasi secara manual tidak ada file halaman, atau file halaman yang terlalu kecil, dan yang dapat menyebabkan masalah kinerja aneh dan masalah alokasi memori. Rekomendasi terbaik, kecuali jika Anda memiliki pengaturan server yang sangat spesifik (yaitu database), adalah untuk memungkinkan windows mengelola file halamannya.
jrista
Satu catatan terakhir. Untuk kinerja maksimal, yang terbaik adalah membiarkan windows mengalokasikan ukuran file halaman maksimum sebelumnya. Ini biasanya dilakukan pada pengaturan server seperti database SQL Server, di mana Anda dapat melakukan pra-alokasi 64 GB atau lebih (biasanya 2x ukuran ram fisik, jadi mungkin bahkan 128 GB atau 256 GB) ke file halaman yang didistribusikan secara merata di antara beberapa disk fisik untuk kinerja maksimum . File halaman yang terdistribusi, terutama ketika preallocated ke ukuran maksimum, memungkinkan interleaved membaca / menulis pada semua disk yang berpartisipasi, sehingga memungkinkan peningkatan kinerja paging melalui paralel I / O.
jrista
Sebagai contoh dari beban memori yang berat, sistem saya saat ini memiliki: penggunaan memori fisik 7,5 / 12Gb; 14.7 / 23.3Gb berkomitmen; Kolam paged 491mb; 145mb np pool. Ini untuk 146 proses, kumpulan paged maksimal 2276k kumpulan np maksimum 263k. Ukuran komit terbesar 696.396k, dan untuk proses yang sama WS adalah 714.256k (proses tab Opera.) (Hitungan proses tinggi saya disebabkan oleh browser web ... mereka mengisolasi tab melalui proses akhir-akhir ini, dan saya seorang hipabber ... puluhan terbuka sekaligus, begitu banyak proses tambahan.)
jrista
12

Bagaimana saya bisa mengetahui mengapa Windows saya menggunakan begitu banyak RAM.

Ini menggunakan begitu banyak RAM karena dirancang untuk melakukannya. Sama sekali tidak ada biaya yang terkait dengan penggunaan RAM. Bahkan, RAM yang digunakan lebih baik daripada RAM gratis karena sistem operasi tidak perlu melakukan apa pun untuk menggunakannya. Menggunakan RAM gratis membutuhkan membuatnya digunakan yang membutuhkan upaya.

Jika Anda berpikir "Saya ingin RAM gratis sekarang sehingga saya dapat menggunakannya nanti", lupakan saja. RAM tidak harus bebas sekarang untuk digunakan nanti. Anda dapat menggunakannya sekarang dan menggunakannya nanti. Tidak ada tradeoff di sini - sama sekali tidak ada kerugian untuk menggunakan RAM.

RAM tetap digunakan dan secara langsung beralih dari satu penggunaan ke penggunaan lain tanpa harus melalui upaya membuatnya gratis hanya harus membuatnya digunakan lagi. Sistem operasi modern membiarkan RAM gratis hanya ketika mereka tidak punya pilihan lain.

David Schwartz
sumber
12
Jika sistem windows7 saya menggunakan ram 3gb pada startup, tanpa aplikasi terbuka, sesuatu pasti salah
Vader
5
@JebediahKerman Mengapa Anda mengatakan itu? Saya berusaha menjelaskan kepada Anda mengapa itu tidak terjadi dan mengapa Windows dirancang untuk melakukan itu. Apakah Anda tidak mengerti penjelasan saya? Atau, jika Anda tidak setuju, bisakah Anda menjelaskan di mana Anda pikir saya salah?
David Schwartz
11
@ DavidvidSchwartz jawaban yang benar-benar salah. Dia mengalami kebocoran memori oleh seorang pengemudi
magicandre1981
9
@ Davidvidchwartz: Perilaku yang Anda jelaskan (alokasi RAM yang dapat digunakan kembali) harus dibuat dari memori yang dapat di-page. Angka yang mengkhawatirkan adalah memori berkapasitas 1,3 GB. Anda tidak bisa hanya membebaskannya untuk sumber daya lain, kemana perginya 1.3 GBbyte? Menjadi "non-paged" berarti bahwa ownser mengatakan "byte ini sangat penting, Anda bahkan tidak bisa meletakkannya di disk, apalagi membuangnya".
MSalters
25
Mengapa "jawaban" ini dipilih begitu tinggi? Ini benar-benar melenceng. Terlepas dari kata-kata spesifik yang digunakan (yang sudah sangat jelas untuk memulai), pertanyaannya bukan “Why is Windows using RAM?”, pertanyaannya adalah “Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”posting ini sebaiknya merupakan komentar yang terbaik karena tidak membahas pertanyaan aktual atau bahkan upaya untuk menjawabnya; hanya berdentang dengan sedikit saran, dan saran buruk pada itu karena jika OP mengabaikannya seperti yang disarankan, kebocoran memori tidak akan ditemukan.
Synetech
2

Alasan yang tidak disebutkan di atas adalah Hyper-V.

Saya dapat mengidentifikasinya dengan utilitas RamMap yang sangat baik :

masukkan deskripsi gambar di sini

Tangkapan layar berasal dari setelah. Sebelum memori "Driver Locked" melebihi 6GB, lebih dari 80% RAM di mesin ini. Saya harus masuk ke Hyper-V Manager dan menonaktifkan "Memori Dinamis". Anehnya, bahkan setelah mengaktifkannya kembali, memori "Driver Locked" tetap rendah - Saya hanya dapat menduga kejadian sebelumnya meningkatkannya dan Hyper-V tidak secara otomatis mengurangi memori yang dialokasikan:

masukkan deskripsi gambar di sini

Dagelf
sumber