Chrome'un toplam bellek kullanımını alın


28

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ı?


KiB'den GiB'ye basılan sayıları dönüştürürsem, Res için bile. Bellek Makinenin RAM artı takas miktarından daha fazlasını alıyorum. Yani bir şey fazla sayılıyor gibi görünüyor.
Ryan1729

Yanıtlar:


30

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
  • daha doğru olmasını yerini chromtam yol ör tarafından /opt/google/chromeveya/usr/lib64/chromium-browser
  • bu çok işlemeli firefox (e10s) için aynı şekilde çalışır -P firefox
  • Dikkatli olun, smem sistemimde ek bir ~ 10-20M, çıktı olarak raporlar.
  • Üstünün aksine, kök işlemlerini doğru bir şekilde izlemek için kök erişimi gerekir - sudo smembunun için kullanın .
  • smem'in neden iyi bir araç olduğu ve çıktının nasıl okunacağı hakkında daha fazla bilgi için bu SO cevabına bakınız .

Bunun benim için çalıştığından emin değilim. İkinci komutu çalıştırdığımda, döndürülen bir değeri alıyorum 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.
sixtyfootersdude

Kali Linux 2017.1 dağıtımında smem için de aynı sorun, çıkış 5 örnek ve en az 30 sekme ile krom tarafından kullanılan 800Mo ram ... Ve sistem monitörü de smem ile aynı fikirde değil. Birisi bunun için bir çözüm buldu mu? (Cevap ve referanslar için teşekkürler)
matthieusb

1
Yorumlarınız ayrı bir soruyu hak ediyor (çelişkili programların tam çıktısıyla). Bağlantıya yorum yazmak yeterli.
eddygeek

1
Ben kullanırım chromesadece yerine chormsen krom ve krom hem çalıştırıyorsanız, sen 'her ikisi için toplam görerek olurdum çünkü.
RJ

1
Örneğin, bunun smemgibi 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]hromesmem -tkP '[c]hrome'c
wjandrea

3

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/chromeSisteminiz için uygun bir şey seçin, örneğin Mac OS X kullanıyorsanız ( grep "chrome"işe yarayacak).


1
Bu, bir sayı basmasıyla “çalışır”. Bununla birlikte, bu işlem o kadar da kullanışlı değildir, çünkü birkaç işlem arasında paylaşılan bellek birçok kez sayılır.
Gilles 'SO- kötülük' dur

Gerçekte hala yeterince iyi olduğunu hayal ediyorum, çünkü Chrome, tipik masaüstlerinde en büyük bellek domuzudur ve krom işlemlerini öldürdüğünüzde, sisteminiz cayır cayır yanar hale gelir.
Sridhar Sarnobat

Neden iki awkkomut? Yani, neden sadece değil ... | awk '{sum += $6} END {print sum}'?
wjandrea

2
FWIW, daha kısa, daha net bir versiyon:ps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
wjandrea

1
@Rushi Rahatsız etmeyin. Bu çözüm anlamlı bir rakam vermez. smemEn 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.
wjandrea,

2

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.


0

Sadece hızlı bir şekilde işlemlerin toplamını hesaplayın.

On Mac :

  • gidip mem_usage’dechrome://system/ bildirilen tümünü seçin
  • SublimeText içine yapıştırın
  • SelectAll (CMD + 'A') ve SelectAllLines (CMD + ÜST KRKT + 'L')
  • CMD + Sağ (eol'a git), Geri al, Geri al, Geri al, ALT + Sol, CMD + Geri al
  • Geri al, '+', CMD + 'A', CMD + 'C'
  • Açık Terminali , koşmak python, CMD + V, Enter

Ve 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 🤖🕹💾


0

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.


0

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.


-1

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.


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.