Kaynak İzleme ve Görev Yöneticisi'nin toplam RAM kullanımı neden toplam Fiziksel Bellek kullanımına bile uzaktan katkıda bulunmuyor? [çift]


30

Bunu birçok farklı Windows makinesinde, birçok farklı durumda gördüm: Görev Yöneticisi veya Kaynak İzleyicisi tarafından bildirilen RAM kullanımı, genellikle kullanımdaki gerçek miktardan önemli ölçüde daha düşük bir miktara eklenmiş görünüyor .

Örneğin, dizüstü bilgisayarımda veya masaüstümde birçok kez 7GB kullanımda gibi bir şey gördüm, ancak yine de Çalışma RAM Setinin toplamı 3GB gibi. Nerede kullanıldığını bulamıyorum!

Bugün bir sunucudaki Kaynak İzleyicisi'nde bugün dikkatimi çeken aşırı bir örnek:

Kaynak izleyicisi
Tam boy için tıklayın

Görüntüye sağ tıklayıp yeni bir sekmede açıp sayıları görüntülüyorsanız, Çalışma Kümesinin (fiziksel olmayan sanal bellek içermeyen) yaklaşık 1,7 GB'a kadar eklediğini fark edeceksiniz. "Tüm kullanıcıların işlemlerini göster" etkin olduğunda Görev Yöneticisi'nde RAM kullanımı ekleyerek benzer numaralar alıyorum.

Şimdi, görev yöneticisinin Performans sekmesinin ekran görüntüsü:

Görev Yöneticisi
Tam boy için tıklayın

Bu, 7,6 GB fiziksel belleğin kullanımda olduğunu söylüyor.

Bunu her zaman kişisel bilgisayarlarda, dizüstü bilgisayarlarda ve şimdi sunucularda görüyorum: sistem araçları tarafından rapor edilen toplam RAM kullanımı yalnızca gözlemlediğim RAM kullanımının yaklaşık 1 / 4'ünü oluşturuyor. Ne s ... k .. M şey oluyo burda???

Bütün RAM'imin nerede olduğuna dair tatmin edici bir açıklama var mı? Nişan alıyor ve neden iz bırakmıyor?

DÜZENLEME: İşte, kullanıcının istediği gibi grafik RAM kullanımının bir resmi:

RamMap Kullanımı
Tam boy için tıklayın

EDIT 2: James'in cevabına cevaben, işte sayfalanmamış işlemlerin poolmon.exeboyutuna göre sıralanmış bir fotoğrafı :

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

Bu sonuçlar beni şaşırtıyor. poolmon6GB'lık disk belleği olmayan havuzumun kullanıldığını doğru bir şekilde belirtmeme rağmen, disk belleği olmayan tüm havuz işlemlerinin boyutu 8 MB'tan küçüktür.

Bu ne anlama geliyor? Is poolmonsayfalandırılmamış havuzu kullanan süreçlerin bazı algılamak için başarısız?



Kaynak Monitörü> Bellek sekmenizin resmini gönderebilir misiniz (sadece renk ve sayılarla gösterilen alt kısım). Bu daha iyi olurdu.
15'te

2
@Ramhound: Beni bu bağlantıya yönlendirdiğiniz için teşekkür ederiz! Ne yazık ki, daha yeni talep edildiği gibi, Resource Monitor'un Fiziksel Belleği grafik haritasının bir resmini yükledim ve Fiziksel Belleğin Bekleme kısmı toplam RAM kullanımının% 2'sinden az. David Schwartz'ın cevabı, "gizli" RAM kullanımının Bekleme RAM'inden (yani, önbelleğe alınmış veriler ve kullanılmayan kod için kullanılan RAM) geldiğini ve buradaki durumun böyle olmadığını gösteriyor. Dolayısıyla, David'in cevabının neler olduğunu açıkladığını sanmıyorum.
DumpsterDoofus

RamMap programını kullanın ve onunla daha fazlasını keşfedin., Şimdiye kadar bazı sürücüler için hazırlıklar olabilir mi? ama gerçekten bekleme değil (önbellek). Bilgisayarı hızlandıracak olan ya da koçu sabitleyen özel programlar çalıştırıyor musunuz? Bilgisayarlarınıza özel olabilecek tuhaf sürücü öğeleri var mı?
Psycogeek

2
"Daha önce cevaplandı" bağlantısı bu durumu kapsamaz.
Jamie Hanrahan

Yanıtlar:


30

Üzgünüm, bunun saygısız bir cevap gibi geldiğini biliyorum ... ama başlığınızdaki sorunun cevabı "olması gerektiği için değil."

Veya daha kibarca söylemek gerekirse: Süreçlerin özel çalışma kümelerinde olmayan RAM kullanımı çok fazla. Bazıları süreçlerin paylaşılan çalışma kümelerindedir - ancak paylaşım nedeniyle orada gerçek kullanım hakkında güvenilir bir görüş elde edemezsiniz; işlemlerin numaralarını eklemek size çok büyük bir sonuç verecektir.

RAM içermeyen diğer sayfalar, disk belleği olmayan havuz, disk belleği havuzunun yerleşik bölümü ve diğer çekirdek alanı kullanımlarının yerleşik bölümleri, Görev Yöneticisi'nin "işlemlerinde" görüntülenmez.

Özel sorununuzla ilgili olarak:

Görev yöneticisi ekranında "çekirdek belleği" bölümüne bakın. 6 GB'lık "disk belleği olmayan bellek" (bu disk belleği olmayan havuz). Bu, ikinci grafiğinizdeki "Kullanımda" bölümünün bir parçası. Disk belleği olmayan havuz herhangi bir işlem için ücretlendirilmez; bu nedenle işlem yöneticisine işlem başına sayıların eklenmesi, kullanılan toplamın yakına yaklaşmaz. Bazı sürücüler büyük olasılıkla kullanıyor. Bu tamamen aşırı miktarda. 1 GB altında olmalıdır. disk belleği olmayan havuz kullanımının aşırı kısmından ne tür bir sürücü sorumlu ise tartışmasız bir sorun yaşanıyor.

RAMmap bunu onaylayabilir ("Sayıları Kullan" sekmesinde, "Disk belleği olmayan Havuz" toplamına bakın), ancak hangi sürücünün neden olduğunu bulmanıza yardımcı olamaz.

İşte onu nasıl bulacağınız: "poolmon" adlı Microsoft aracının bir kopyasını alın. Windows Sürücü Seti ile birlikte dağıtılan bir karakter modu aracıdır. Windows 7 için WDK ücretsiz indirilir . Her şeyi indirmelisiniz (bir ISO'dur) ve ondan kurmalısınız, ancak istediğiniz tüm araç varsa, sadece araçları kurmayı seçebilirsiniz.

WDK dizinlerinde poolmon'u bulun - doğru olanı, 32 veya 64 bit seçtiğinizden emin olun ve bir yönetici komut isteminden çalıştırın. Bunun gibi bir ekran alacaksınız:

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

Şimdi "p" tuşuna basın (hayır, şaka yapmıyorum. Burada menü yok!) "Tip" sütununda sadece "Nonp" gösterilinceye kadar. Ardından, ekranı Bayt sütununa göre (azalan şekilde burada yapılmıştır) azalan sıralamada sıralamak için "b" ye (gerekirse iki kez) basın.

Sonra en üstteki satır için "Etiket" sütununa bakın. Burada gösterilen (açıkça yapay) durumda "Sızıntı" dır. (Bu sistem kasıtlı olarak bu soruna neden olmak için tıkanmış bir sürücüyü çalıştırıyor - disk belleği olmayan havuzun "sızdırıyor" olması.)

btw, vurgulu çizgiler, bu arkaik ekrana yapılan önceki güncellemeden bu yana değişen satırlardır.

Şimdi c: \ Windows \ System32 \ Drivers dizininde o dizeyi içeren bir .sys dosyası arayın. Bu durumda şöyle bir "Sızıntı" arıyor olabilirsiniz:

c:\windows\system32> findstr /s Leak *.sys

Ardından web'de bu dizeye ve / veya bu sürücü adına referanslar arayın.

Buraya geri dönmek ve .sys dosyasındaki tam adı, üretici adını vb. Bildirmek de yararlı olabilir.

(Bahse girerim, bulduğunuz etiket ECMC, sürücü intmsd.sys'dir ve ExpressCache veya IntelliMemory adlı bir ürünle ilişkilidir. Bu ürünü "kaldırırdım". Sorunu gidermek için bir güncelleme var, ancak hatta Sabit sürümde, bu ürünün geliştirdiği bir sistemin performansını hiç görmedim, aslında Windows'taki işlevselliği çoğaltır.)

Bu şekilde bulamazsanız, bir sonraki adım "Windows Performance Toolkit" kullanmaktır. Bu forumu bu dizide, bir cevap için magicandre1981 tarafından verilen cevaplarla arayın. Xperf'ten bahseden cevapları yoksay - bu, aracın daha eski bir sürümüdür.

GÜNCELLEME: Yorumlar başına OP yukarıda belirtilenleri yaptı ve poolmon'un disk belleği olmayan havuzun toplam boyutunun gerçekten çok büyük olduğunu bildirmesine rağmen, tahsis edilen parçaların hepsinin görünüşte küçücük olduğunu tespit etti. Benim düşünceme göre (yorumlarda da) bunun benim "şişirilmiş" havuz dediğim şeyden kaynaklanıyor olmasından kaynaklanıyor: Havuz tahsis edildi, sonra serbest bırakıldı, ancak bir sebepten dolayı havuza tahsis edilen RAM miktarı "serbest bırakmayı" yansıtacak şekilde küçülmedi . Magicandre tarafından bu cevapta açıklanan prosedürün ardından suçlu tespit edebilir.


Diğerlerinden daha fazla araştırmaya katıldığınız için teşekkür ederiz! Zamanım poolmonvarsa bugün kullanarak bir sızıntı için etrafa bakacağım ve cevabınızı daha iyi anladığımdan emin olmak için okumaya çalışacağım. Muhtemelen bir bellek sızıntısı olduğunu mu söylüyorsunuz? Öyleyse, bu tamamen mantıklı, çünkü bazı korkunç bellek sızıntıları olduğu bilinen bir yazılım üzerinde çalışıyoruz.
DumpsterDoofus

@DumpsterDoofus: Evet. Bir çekirdek modu sürücüsünde muhtemelen bellek sızıntısı var. Bu, bir uygulamadaki bellek sızıntısından farklıdır.
Jamie Hanrahan

Bu yüzden nihayet poolmon.exesöz konusu sunucuda çalışarak dolaştım ve ekran görüntüsünü eklemek için sorumu düzenledim. poolmon6 GB disk belleği olmayan havuza sahip olduğumu belirtiyor (Görev Yöneticisi ekranımdan belirttiğim gibi), ancak yalnızca "Nonp" işlemlerine baktığımda ve boyuta göre sıraladığımda, hepsi küçük (en büyüğü 8 MB). poolmonDisk belleği olmayan havuz kullanımının büyük bölümünü neden algılamadığına dair bir fikriniz var mı?
DumpsterDoofus

2
Ah ... buradaki problem "kullanım" kelimesiyle. Yani 6 GB disk belleği olmayan havuzunuz var, ancak şu anda yalnızca bir kısmının kullanımda olduğu görülüyor. Maalesef bildiğim hiçbir şey (TM, poolmon değil, RAMmap değil) havuzun ne kadarının kullanıldığını gösterir. Tahminime göre bir keresinde ağır bir havuz kullanıcısı vardı, bu yüzden havuz onu barındıracak şekilde genişletildi ve sonra ağır kullanıcı uzaklaştı. Havuzun yönetilmesi nedeniyle, tahsisat büyük bitişik parçalar olmadıkça, RAM'in kendisine tahsis edildikten sonra serbest bırakılması kolay değildir. Yeni bir sistem başlangıcından sonra bunu izlemenizi öneririm.
Jamie Hanrahan

Server 2003 Destek Araçları'nda bulunan poolmon.exe'nin bir sürümü var ( serverfault.com/questions/84479/… ) - biraz eski, ancak yalnızca 5.2 MB boyutunda bir indirme ve hala (en az) Sunucu 2016'da çalışıyor.
mwfearnley
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.