Windows çok fazla RAM kullanıyor, nasıl kaynak domuz teşhisi


73

16GB sistem RAM'im var. Açılışta, görev yöneticisi dışındaki hiçbir uygulama açılmadığında Windows yaklaşık 3GB RAM kullanıyor. İşlemler sekmesine baktım, ancak hiçbir şey normalin dışında görünüyor. Windows'umun neden bu kadar RAM kullandığını nasıl öğrenebilirim?

görüntü tanımını buraya girin

tüm kullanıcılardan gelen tüm işlemler

görüntü tanımını buraya girin


Bilardodan okuduğumda, kablosuz internet bağlantısı sürücüm yaklaşık 0.4GB RAM kullanıyor gibi görünüyor. Çıkarsam bile, başlangıçta hala 2,6GB kullanıyor olacaktı, bu hala çok fazla.

görüntü tanımını buraya girin


Bellek sızıntısı ile ilişkili kablosuz sürücüyü yeniden kurduktan sonra. Yeni bir ekran görüntüsüne sahibim ve bunun gerçekten bir bellek sızıntısı olduğunu onaylamak istiyorum.

görüntü tanımını buraya girin


3
Her şeyden önce, sadece 12GB'ınız var. Dört 4 GB'lık çubuklarınızdan biri bozuk veya kötü oturmuş ya da anakartınız 16GB'ı desteklemiyor. İkincisi, kötü amaçlı yazılım olup olmadığını kontrol etmek için herhangi bir güvenlik programı çalıştırmayı denediniz mi? Security Essentials yerleşiktir, bu nedenle tanımlarını güncellediğinizden ve bir tarama gerçekleştirdiğinizden emin olun. Ayrıca, rootkit'ler özellikle gizlendiğinden bazı anti-rootkit programlarını da deneyin (fark edilmeden gitmek için genellikle düşük bir profil tutmaya çalışırlar ve birkaç gigabayt RAM kullanmanın pek bir karışımı yoktur).
Synetech

Performansa bakmak isteyebilirsiniz -> kaynak monitörü
Journeyman Geek

Çıktısını bir dosyaya yönlendiren görev listesi komutunu çalıştırmayı deneyin, C: \ blah> tasklist> aa, ardından aa dosyasını açın, her işlem için toplamları görürsünüz, örneğin 15.100K, onlardan sonra K'yi kaldırın ve toplamı Excel ile toplayın. Toplamın, görev yöneticisinin size kullanılan grafiğinin yanında sağladığı kullanılmış rakamla aynı olup olmadığını kontrol edin. Benim için görev listesinden toplam 4 GB ve görev yöneticisi 4.5 GB diyor. Sahip olduğum tutarsızlığı açıklayamam ama bu çok büyük değil. Büyük bir tutarsızlık varsa, ilginç olurdu.
barlop

Ben excel yok
Vader

1
NDxx etiketleri ndis.sys'dir. BRCM'nin Broadcom olduğunu sanıyorum. Bu ağ bağdaştırıcınızın sorun olduğuna işaret eder.
David Marshall

Yanıtlar:


82

Bir sürücünün neden olduğu bellek sızıntısı var. Disk belleği olmayan çekirdek belleğinin yüksek değerine bakın. Senin durumunda bu 3,7 GB bitti. Hangi sürücünün yüksek kullanıma neden olduğunu görmek için poolmon'ı kullanabilirsiniz .

Yükleme , Windows WDK , koşmak Poolmon yoluyla sıralamak Polmayan disk belleği üstte ve üzeri olacak şekilde havuz tipi sonra Bbayt en fazla bellek harcayan etiketi görmeye sonra. WDK'nın kurulu olduğu klasöre gidip poolmon'u çalıştırın, Araçlar'a (veya C: \ Program Dosyaları (x86) \ Windows Kitleri \ 10 \ Tools \ x64) gidin ve poolmon.exe'ye tıklayın.

Şimdi hangi havuz etiketinin burada gösterildiği şekilde en çok belleği kullandığına bakın:

görüntü tanımını buraya girin

Şimdi bir cmd istemi açın ve findstr komutunu çalıştırın. Bunu yapmak için cmd istemini açın ve tırnak işaretleri olmadan "cd C: \ Windows \ System32 \ drivers" yazın. Sonra "findstr / s __ . " Yazın, burada __ etiketidir (poolmon'da en soldaki isim). Hangi sürücünün bu etiketi kullandığını görmek için bunu yapın:

görüntü tanımını buraya girin

Şimdi, sürücüler klasörüne gidin (C: \ Windows \ System32 \ drivers) ve söz konusu sürücüyü sağ tıklayın (yukarıdaki resim örneğinde intmsd.sys). Özellikler'i tıklatın, Ürün Adı'nı bulmak için ayrıntılar sekmesine gidin. Bu ürün için bir güncelleme arayın.

Pooltag sadece Windows sürücülerini gösteriyorsa veya pooltag.txt ( "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt") içinde listeleniyorsa

Kullanıma neyin neden olduğunu bulmak için xperf kullandınız . WPT'yi Windows SDK'dan yükleyin, bir cmd.exe dosyasını admin olarak açın ve şunu çalıştırın:

xperf - on PROC_THREAD + YÜKLEYİCİ + HAVUZ - yassı havuz PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular & & timeout -1 && xperf -d C: \ pool.etl

büyümenin 30 -60'ını yakala. ETL'yi WPA.exe ile açın, Havuz grafiklerini analiz bölmesine ekleyin.

Pooltag sütununu ilk sıraya yerleştirin ve yığın sütununu ekleyin. Şimdi sembolleri yük WPA.exe içinde ve Poolmon gördüğümüz etiketinin yığınını genişletin.

görüntü tanımını buraya girin

Şimdi yığında görebileceğiniz diğer 3. parti sürücüleri bulun. Burada Thre(Thread) etiketi G-Data'dan AVKCl.exe tarafından kullanılmaktadır. Düzeltmek için sürücü / program güncellemelerini arayın.


1
Ah özür dilerim. @Jebediah Kerman findstr komutunu çalıştırdınız mı? Adından ağ kartı sürücüsü ile ilgili olabilir. Hala sorun yaşıyorsanız, RAMMap'i çalıştırın, verileri RMP olarak kaydedin, RMP dosyasını sıkıştırın ve zip'i yükleyin.
magicandre1981 12:13

Bu aptal görünebilir. Ama bilardo nasıl başlarım? Eskiden "poolmon.exe" yi arayabiliyor ve fırlatıyordum
Vader

@JebediahKerman Sanırım bunu zaten yaptınız ve etiketleri bulduk. Gönderinizdeki resim havuzunuz değil mi?
magicandre1981 13:13

Resim benim. nedense arama dizini eksikti.
Vader

@JebediahKerman bu NDFT'nin ne olduğunu gördünüz mü? Ayrıca havuz kullanımını izlemek için xperf kullanabilirsiniz: channel9.msdn.com/Shows/Defrag-Tools/…
magicandre1981 13:13

15

İlk olarak, daha ayrıntılı bir cevaba girmeden önce. İlk ekran görüntüsünüzde, Disk belleği Olmayan Havuzunuz (bir çeşit çekirdek bellek kullanımı) 1,3 GB'dir. Bu alışılmadık derecede yüksek görünüyor, özellikle de bottan sonra sadece 30 dakika. NP Pool'un uzun süre kullandıktan sonra veya elek gibi sızan bir programla bu kadar yükseldiğini görebilirim. Buna karşılık, NP Havuzum genellikle 100 ila 200 megabayt arasındadır ve disk belleği havuzum 400 veya 500 kadar yüksek olabilir (ve sistemimi haftalarca yeniden başlatmadan çalıştırdıktan sonra).


Görev Yöneticisi'nde, sütun başlıklarını sağ tıklatarak ve sütun seçerek birkaç ek sütun etkinleştirebilirsiniz. Sen eklemek gerekir Working Set (private), Working Set (shared), Commit, ve NP Pool. Tüm işlemlerinizi tüm kullanıcıların taramasından geçirir ve herhangi birinin 256KB'dan daha fazla bir NP Pool'u olup olmadığını kontrol ederim. Herhangi birini, özellikle de oldukça yüksek olanları görürseniz, sorunun kaynağı veya en azından bir kısmı bu olabilir.

Toplam çalışma kümeniz, bir işlem tarafından kullanılan fiziksel bellek miktarı, özel ve paylaşılan çalışma kümelerinin (WS) birleşimidir. Özel çoğu işlem için genellikle daha büyüktür, ancak daha büyük miktarda paylaşılan WS kullanan bazı kişiler olabilir. İkisi normalde toplam WS'yi toplamalıdır. İşe alma, çalışma kümenizin destek deposuna vermiş olduğu miktardır (çoğu durumda, Windows sayfa dosyası). Arka planlı uygulamalarda, disk belleği havuzlarının çoğunun bellekten ve disk belleği dosyanızın (bir süredir simge durumuna küçültülmüş ve bir süre kullanılmamış olan masaüstü uygulamaları için oldukça normal) kullanıldığını belirten, WS'den daha büyük bir taahhüt sıklığı olacaktır.

Disk belleği olmayan havuz, kalıcı olarak minimum fiziksel bellek kullanımınız olan fiziksel bellekten ... değiştirilemeyecek ve asla alınamayacak bir bellektir. NP Havuz hafızası genellikle doğru ve güvenli davranmak için fiziksel hafızada olması gereken program kodunu ve kritik bölümleri, özel yığınları vb. İçerir. Hepsinde 256KB NP Havuz hafızası varsa, o zaman mutlak minimum fiziksel hafıza kullanımınız 15.360KB civarında olacaktı. Çoğu durumda, bir veya iki uygulama 256 KB'lık bir NP Havuzuna sahip olabilirken, çoğu daha az, genellikle oldukça az (veya hiç). Sistemin, çalışan tüm işlemlerin tamamını gösterdiği ve bellek kullanımının bu kadar düşmesini beklememesi pek olası değildir.


Son olarak, daha fazla belleğe sahip olmanın amacı fiziksel diskteki genişletilmiş bellek alanından (takas, sayfa dosyası) veri sayfalandırmaktan kaçınmaktır. Disk belleği, ayrılan fiziksel belleğin etrafını hareket ettirmeyi, bazılarını diske itmeyi ve diğerlerini diskten fiziksel belleğe getirmeyi içeren bir işlemdir. Çağrı, basit tutmak için son derece istenmeyen bir şeydir. Başlıca “kötü” değildir, ancak çok sık meydana geldiğinde performansta gerçek bir sürüklenme olabilir. Bir sistemdeki toplam fiziksel RAM'i artırmanın nihai noktası, fiziksel belleğe olan bağlılıklarını daha büyük tutabilmek için daha fazla işlem yapılmasına izin vermek (daha büyük çalışma kümesi). Belleği tüketmek sorun değildir ve daha fazla yürütme işlemi daha fazla bellek kullandığında, toplam sistem performansı ve etkin işlem performansı genellikle daha yüksek olur.

Windows, belleği sizin için yönetir ve otomatik olarak bellekteki verileri sizin için sayfa (takas) dosyasına girip çıkarır. 9 GB belleğe ihtiyaç duyan bir işlemi kullanıyorsanız ve sisteminizde zaten 4 GB (12 GB dışında) kullanılıyorsa, sistem otomatik olarak hangi işlemlerin tüm çalışma kümelerine hemen erişmesi gerekmediğini anlar ve bazılarını veya tümünü sayfalar. Bu disk belleği havuzunun 1GB'ını boşaltmak için takas etmek üzere havuzunu açtılar. Büyük işleminiz sonunda daha fazla belleğe ihtiyaç duyarsa, pencereler, yeni istenen bloğu ayırmak için yeterli boş alana sahip olana kadar diğer çalışma kümelerini azaltır. Büyük işleminiz sonunda, nihayetinde NP Pool dışındaki tüm kullanılabilir belleği ve belki de Windows'un çalışma setlerini daha fazla serbest bırakmasına izin vermeyen işlemleri düzenli aralıklarla yürütmek için ek minimum ek yükü tüketebilir (i. e. Windows'un fiziksel bellekten başka bir şey çıkarması durumunda bekleyen sayfa hataları var, ancak istendikleri için taşınamıyorlar.)

Bir işlem erişime izin verilenden daha fazla belleğe ihtiyaç duyarsa (32bit işlemler genellikle 2Gb'ye ve bazıları 4Gb'den biraz daha azına erişebilirken, 64bit işlemler genellikle her birinin 48Gb belleğine erişebilir), o zaman pencereler bazen deneyebilir hafızasını takas alanıyla sanallaştırmak için. Bir 32bit uygulama izin verilen maksimum 2Gb alanını kullanmak istiyorsa, ancak yalnızca 1.2Gb kullanılabilirse, pencereler tam 2Gb'yi sayfa dosyasında saklar ve işlemler için kendi verilerini gerektiği şekilde sayfa dosyasına girip çıkarır. Uygulamanın hafıza kullanımını destekleyin. Bu durumda, toplam "hafıza" kullanımı, Toplam Taahhüt işlemine devam ederken mevcut fiziksel hafızadan daha büyük görünebilir. Total Commit, genellikle sistem tarafından yönetildiğinde fiziksel belleğin genellikle 2-3 katı büyüklüğünde olan genel sayfa dosyası boyutunda maksimuma çıkar. Senin durumunda,


Son bir nokta. Cevabınızda 16 Gb RAM olduğunu söylemiştiniz, Görev Yöneticisi yalnızca 12 Gb RAM görüyor. Burada iki şeyden biri. Ya sisteminizde gerçekten sadece 12 Gb RAM var ya da çubuklarınızdan biri doğru kayıt yapmıyor. Bir ram çubuğu (4x 4 Gb çubukları varsayarsak), kötü olabilir, anakartınıza tam olarak yerleştirilmemiş olabilir veya anakartınızda bellek algılama sorunu olabilir.

İkincisi olup olmadığını kontrol etmek için önce anakart BIOS'unuzu en son sürüme güncellemelisiniz. Benzer bir problemim vardı ... altı Tripple-Kanal DDR3 tokma çubuğum (6x 2Gb) her biri ayrı ayrı test etmeye dayanarak iyiydi ... ama anakartım rastgele bir veya iki tanesini sık sık saymamaya karar verdi. sık sık beni sadece 8GB koç bırakıyor. Bir BIOS güncellemesi sorunu çözdü ve şu anda hafızamdaki tüm 12 Gb'ye güvenilir erişimim var.


ilginç .. ve sadece, disk belleği olmayan belleğinin çok büyük olduğunu farkettim .. benim 539 MB disk belleği, 139 MB disk belleği olmayan biri. Açıkçası benden daha fazlasını biliyorsunuz .. "Total Commit genellikle büyük toplam sayfa dosyası boyutunda maksimuma çıkar" yazıyor. RAM'im 12GB.Idosyamı 4000 MB (3.8GB?) dak ve 1.5-2x belleğe ayarlıyorum. / 15 şu anda), benim sayfa dosyam yaklaşık 4GB ya da muhtemelen biraz daha az 3.8GB.Max Commit daha fazla sayfa dosyası boyutu + RAM boyutu. Sayfa dosyalarım 12 GB iken benim maksimum işlem 24GB civarındaydı. Yaklaşık 3,8 GB veya 4 GB maksimum
dosya kapasitesi

@ barlop: Pekala, işin ne olduğunu biraz yanlış anlıyorsunuz. Teknik olarak konuşursak, taahhütte bulunmak, genişletilmiş bellek yöneticileri tarafından desteklenen alan ve büyük adres bilinci dahil olmak üzere toplam "neredeyse adreslenebilir bellek alanı" dır. Maksimum taahhüt, sayfa dosyası + RAM olmaz, bunun yerine sistem tarafından yönetilen toplam sanal adres alanı olarak tanımlanır. Sayfa dosyası genellikle en azından toplam fiziksel bellek boyutunu kapsamalı ve ayrıca toplam fiziksel bellek boyutunun ötesine uzatmalıdır. Senin durumunda, en azından 18Gb (1.5x) veya 24Gb (2x) olmayı taahhüt ederdim, ancak ...
jrista 12:03

... sistem tarafından yönetilen bir sayfa dosyası için geçerli olacaktır. Sayfa dosya ayarlarınızı el ile ayarlamış gibi görünüyorsunuz, bu durumda mevcut yapılandırmanızın neden 15 Gb olduğunu (3.8 / 4 Gb sayfa dosyası olarak 15 Gb değil, 16 Gb olarak belirteceğinizi söylemek için) özel yapılandırmanız hakkında daha fazla bilgi edinmek zorunda kalacağım. .) Hiçbir sayfa dosyasını veya çok küçük bir sayfa dosyasını el ile yapılandırmak tamamen garip performans sorunlarına ve bellek ayırma sorunlarına yol açabilir. En iyi öneri, oldukça spesifik bir sunucu (yani veritabanı) kurulumunuz yoksa, pencerelerin sayfa dosyasını yönetmesine izin vermektir.
jrista

Son bir not. Maksimum performans için, pencerelerin önceden maksimum sayfa dosyası boyutunu ayırmasına izin vermek en iyisidir. Bu genellikle, 64 Gb veya daha fazlasını önceden tahsis edebileceğiniz bir SQL Server veritabanı gibi sunucu kurulumlarında yapılır (genellikle fiziksel ram boyutunun 2 katı, yani belki 128 Gb veya 256 Gb), maksimum performans için birden fazla fiziksel disk arasında eşit olarak dağıtılmış bir sayfa dosyasına . Dağıtılmış sayfa dosyaları, özellikle maksimum boyuta önceden tahsis edildiğinde, tüm katılımcı disklerde interleaved okuma / yazma sağlar, böylece paralel G / Ç ile gelişmiş sayfalama performansı elde edilir.
jrista

Ağır bir bellek yükü örneği olarak, sistemim şu anda aşağıdakilere sahiptir: 7.5 / 12Gb fiziksel bellek kullanımı; 14.7 / 23.3Gb taahhüt; 491mb disk belleği havuzu; 145 mb np havuzu. Bu, 146 işlem için, maksimum sayfa 2276k havuzu ve 263k havuzu. En büyük işlem boyutu 696,396k ve aynı işlem için WS 714,256k (bir Opera sekmesi işlemidir.) (Yüksek işlem sayım web tarayıcısından kaynaklanıyor ... bu günlerde işlem sırasında sekmeleri izole ediyorlar ve ben aşırı sekreterim ... aynı anda düzinelerce açık, onlarca ek işlem.)
jrista

12

Windows'umun neden bu kadar RAM kullandığını nasıl öğrenebilirim?

Çok fazla RAM kullanıyor çünkü bunu yapmak için tasarlandı . RAM kullanmanın hiçbir maliyeti yoktur. Aslında, kullanılan RAM boş RAM'den daha iyidir çünkü işletim sistemi kullanmak için hiçbir şey yapmak zorunda değildir. Boş RAM kullanmak, çaba harcayan kullanılmış kılma gerektirir.

"RAM'imi şimdi ücretsiz istiyorum, böylece daha sonra kullanabilirim" diye düşünüyorsan, unut gitsin. RAM'in daha sonra kullanmak için şimdi ücretsiz olması gerekmez. Artık kullanabilirsiniz ve daha sonra kullanmak. Orada hiçbir RAM kullanmanın dezavantajı kesinlikle yoktur - değiş tokuş burada.

RAM kullanılmaya devam edilir ve tekrar kullanılmasını sağlamak için serbest bırakma çabası olmadan bir kullanımdan diğerine doğrudan geçilir. Modern işletim sistemleri RAM'i yalnızca başka seçenekleri olmadığında serbest bırakır.


12
Windows7 sistemim başlangıçta 3 gb ram kullanıyorsa, uygulama açılmıyorsa, bazı şeyler yanlış olmalı
Vader

5
@JebediahKerman Neden böyle söylüyorsunuz? Bunun neden böyle olmadığını ve neden Windows'un bunu yapmak için tasarlandığını size açıklamaya çalışıyorum. Açıklamamı anlamadın mı? Ya da buna katılmıyorsanız, nerede olduğumu düşündüğünüzü açıklayabilir misiniz?
David Schwartz

11
@DavidSchwartz tamamen yanlış cevap. Bir sürücü tarafından bellek sızıntısı var
magicandre1981 12:13

9
@DavidSchwartz: Tanımladığınız davranış (yeniden kullanılabilecek RAM ayırmaları) mutlaka sayfalanabilir bellekten yapılmalıdır. Endişe verici rakam 1,3 GB disk belleği olmayan hafızadır. Bunu diğer kaynaklar için özgür bırakamazsınız, bu 1.3 GBbayt nereye gider? "Sayfasız" olmak, bayrağın "bu baytların çok önemli olduğunu, onları bile diske koyamayacağınızı, tek başıma bile atayamayacağınız" dediği anlamına gelir.
MSalters

25
Bu “cevap” neden bu kadar yüksek oy kullandı? Bu tamamen noktayı özlüyor. Kullanılan (ne ile başlayacağı açıkça belli olan) belirli kelimeler ne olursa olsun, soru değil “Why is Windows using RAM?”, soru şudur: “Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”Bu yazı en iyi şekilde bir yorum olmalıdır çünkü asıl soruyu ele almaz, hatta cevaplamaya kalkışmaz ; sadece bir öneriyle çanlar çaldı ve bu konuda kötü bir tavsiyede bulundu, çünkü OP önerildiği gibi görmezden geldiyse, bellek sızıntısı keşfedilmeyecekti.
Synetech

2

Yukarıda bahsedilmeyen bir neden Hyper-V'dir.

Mükemmel yardımcı program RamMap ile tanımlayabildim :

görüntü tanımını buraya girin

Ekran görüntüsü bundan sonra. "Sürücü Kilitli" hafızası 6GB’dan fazlaydı, bu makinede RAM’in% 80’inden fazlası. Hyper-V Yöneticisi'ne gidip "Dinamik Bellek" i devre dışı bırakmak zorunda kaldım. Tuhaf bir şekilde, yeniden etkinleştirdikten sonra bile, "Sürücü Kilitli" hafızasının düşük kaldığını - yalnızca önceki örneklerin arttırdığını ve Hyper-V'nin tahsis edilen hafızasını otomatik olarak azaltmadığını varsayabilirim:

görüntü tanımını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.