Üstte VSIZE değeri neden ps'deki VSZ (Sanal set boyutu) değerinden farklıdır?


9

VSZ in psuygulaması için tahsis edilen toplam adres alanı için olduğunu ve bazen vsize ( pslinux üzerinde man sayfasında belirtilen) olarak takma , ama VSIZE tanımı topnedir? İPhone'dan gelen bu en iyi çıktı Linux'taki en iyi çıktı:

 PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS  RPRVT  RSHRD  RSIZE  VSIZE
 1875 emma         0.0%  0:30.83   7   139    932 17868K  5328K    29M   181M

root# ps -eo pid,rss,vsz|grep 1875
 1875  29324   441324

Bunu darwin makinelerimin hiçbirinde üretemiyorum. Bana iPhone'da kurdukları kabuğun garip bir blok boyutu olduğunu düşünüyor mu?
polinom

RSIZE / rss'yi aynı şekilde hesaplıyor gibi görünüyorlar, ancak ps, üstte rapor edilenden 2,5 kat daha büyük bir vsz bildiriyor. belki topIOS'ta paylaşılan boyuttaki nesneler veya başka bir şey içermez.
Tim Kennedy

"İPhone'dan gelen bu en iyi çıktı Linux'taki en iyi çıktı" - sürpriz değil, değil mi?
poige

Yanıtlar:


5

Linux bellek sistemi, bellek optimizasyonu yardımcı programları ve bellek paylaşımının birçok rutini ile doludur, bu da belleğin nasıl paylaşıldığı ve tüketildiği, hantal bir yaklaşım fikrini oluşturur. Ps ve diğer ps ile ilgili komutların çıktıları veriden çıktılarını işler /procdosya sistemi altında . Özellikleps, RSS (yerleşik boyut belleği) ve VSIZE (Sanal bellek boyutu) her ikisi de önemlidir, ancak VSIZE belleğin doğru kullanımını göstermez ve VSIZE ve rss arasındaki fark, başlatma sırasında programa gerçekte amaçlanan ve tahsis edilen şeydir, ancak henüz referans verilmemiş olabilir. Program gibi birçok kitaplık bağlı olabilir, ancak gerçek program çalışma zamanında henüz başvurulmadığı için henüz yüklenmezler. RSS, program tarafından kullanılan toplam belleği verir, ancak bellek tüketiminin gerçek bir resmini vermeyebilir, çünkü ayrılan belleğin çoğu aynı işlemin veya diğer işlemlerin diğer örnekleriyle paylaşılabilir. Altına bakmak /proc/<processid>/mapshafızanın nasıl kullanıldığına dair kaba bir fikir verebilir, ancak sessizce bazen yanıltıcı olabilir. kullanımpmap -x <pid> komut satırından yayılmayı görmek faydalıdır.

Genellikle daha iyi araçlar freeve vmstat. freegenel olarak geçerli bellek tüketimi ayrıntılarını verir ve vmstat, ne sıklıkta güncellendiğini görmek için kullanılabilir.


Başka bir neden ya da ps neden doğru işlem belleği kullanımı olarak düşünülmemelidir düşünceli bir açıklama. Bunu virtualthreads.blogspot.com/2006/02/…
Nikhil Mulley

2
Bu cevabın posterinin söylemeye çalıştığı şey, kullanılan bellek tanımının karmaşık ve çeşitlidir. Çekirdeğin izlendiği ve raporlandığı tek bir yer yoktur. Yardımcı programlar, çekirdek tarafından bildirilen çok sayıda istatistik hakkında kendi yorumlarını yapar.
Johan
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.