Google chrome / chromium birden fazla işlemi başlattığından beri, bu işlemlerin toplamda ne kadar toplam bellek kullandığını görmek zordur.
Bir dizi bağlı işlemin ne kadar toplam hafıza kullandığını görmenin kolay bir yolu var mı?
Google chrome / chromium birden fazla işlemi başlattığından beri, bu işlemlerin toplamda ne kadar toplam bellek kullandığını görmek zordur.
Bir dizi bağlı işlemin ne kadar toplam hafıza kullandığını görmenin kolay bir yolu var mı?
Yanıtlar:
Google'ın Mart 2016’da chrome: // hafızasını öldürdüğü göz önüne alındığında, şu anda smem kullanıyorum :
# detailed output, in kB apparently
smem -t -P chrom
# just the total PSS, with automatic unit:
smem -t -k -c pss -P chrom | tail -n 1
chrom
tam yol ör tarafından /opt/google/chrome
veya/usr/lib64/chromium-browser
-P firefox
sudo smem
bunun için kullanın .338.0M
. Bu çok düşük. Sistem Monitörü'nü çalıştırdığımda, 11 krom işlemi olduğunu ve her birinin 70 MB ile 400 MB RAM aldığını görebiliyorum. Sistem Monitörü'nün yanlış raporlayıp raporlamadığından emin değil.
chrome
sadece yerine chorm
sen krom ve krom hem çalıştırıyorsanız, sen 'her ikisi için toplam görerek olurdum çünkü.
smem
gibi bir şey kullanarak kendi çıktısının dışında bırakabilirsiniz . Bu , köşeli parantezlerin içindeki köşeli parantezlerin eşleştirilmesiyle çalışır [c]hrome
smem -tkP '[c]hrome'
c
Bunun en iyi çözüm olmadığından eminim, hala benim için çalışıyor:
#!/bin/sh
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $5}' | awk '{sum += $1 } END { print sum }'
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $6}' | awk '{sum += $1 } END { print sum }'
Not: [/]opt/google/chrome/chrome
Sisteminiz için uygun bir şey seçin, örneğin Mac OS X kullanıyorsanız ( grep "chrome"
işe yarayacak).
awk
komut? Yani, neden sadece değil ... | awk '{sum += $6} END {print sum}'
?
ps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
smem
En iyi cevaba göre kullanın . Her ne kadar FWIW olsa da, bir takma ad için çok karmaşık olduğundan onu bir komut dosyası veya işlev olarak uygularım.
Bunu çalıştırıyorum:
perl -e '$a="x"x1000000000;sleep(10);print"done\n"'
1.8GB RAM alır. Yani bunu çalıştırmayı beklersiniz:
perl -e '$a="x"x1000000000;fork;fork;fork;fork;sleep(10);print"done\n"'
16 katı kadar alırdı. Ama öyle değil.
Bu, Linux çekirdeğinin zekice yazılan kopyalarından kaynaklanmaktadır: '$ a' içeriği değişmediğinden, '$ a' hafızası paylaşılabilir. Ancak, yalnızca '$ a' değiştirilene kadar paylaşılan kalır Bu olduğunda, değiştirilen bölüm kopyalanacak ve RAM almaya başlayacaktır.
Yazma üzerine ne kadar hafızanın fazla bağlı olduğunu ölçüp ölçemeyeceğinizi bilmiyorum. Ama en azından bu aşırı saymayı açıklıyor.
Sadece hızlı bir şekilde işlemlerin toplamını hesaplayın.
On Mac :
chrome://system/
bildirilen tümünü seçinpython
, CMD + V, EnterVe işte! "Kolay" ... 🤓😅
PS - Kısayol ninjaları ve 80'ler / 90'lar Dövüş oyunu oyuncuları bu çözümle ilgili bir sorun yaşamamalılar 🤖🕹💾
Vim ve awk ile bir çözüm buldum. Chrome: // system'i açın, mem_usage'i genişletin, vim'e kopyalayın ve regexp'i çalıştırın:
:%s/\D*\(\d*\).MB.*/\1
Bu yalnızca MB'den önceki sayıları bırakır. Dosyayı kaydedin ve yürütün
cat file | awk '{sum += $1} END {print sum}'
VIM regexp kodunu sed için dönemedi.
Orada USS mevcut çapraz platformlar olduğunu
USS (Unique Set Size), bir işlem için benzersiz olan ve işlem şu anda sonlandırıldığında serbest bırakılacak olan hafızadır.
psutil> 4.0 Python kütüphanesi buna erişebilir
İşte kullanacağım
sudo python3 -c "import psutil;print(sum(p.memory_full_info().uss for p in psutil.Process(pid=292).children())/1024/1024);"
pid = 292, Aktivite İzleyiciden gelen çoğu dış işlemin PID'sidir.
Krom / kromun bir görev yöneticisi olduğunu biliyordum, ancak kullanılan toplam belleği vermiyor. Görev yöneticisindeki "İnekler İstatistikleri" bağlantısının chrome: // memory-redirect / kullanılan toplam belleği listeleyen olduğu ortaya çıktı. Bu numaraların dış onayının yapılması ve komut satırında bilgi edinmenin bir yolu olması onunla daha fazlasını yapmak için iyi olurdu, ancak bu mevcut en iyi yol gibi görünüyor.