Ponieważ Google Chrome / chromium spawnuje wiele procesów, trudniej jest zobaczyć, ile całkowitej pamięci zajmują te procesy.
Czy istnieje prosty sposób na sprawdzenie, ile całkowitej pamięci zajmuje seria połączonych procesów?
Ponieważ Google Chrome / chromium spawnuje wiele procesów, trudniej jest zobaczyć, ile całkowitej pamięci zajmują te procesy.
Czy istnieje prosty sposób na sprawdzenie, ile całkowitej pamięci zajmuje seria połączonych procesów?
Odpowiedzi:
Biorąc pod uwagę, że Google zabił pamięć chrome: // memory w marcu 2016 r., Teraz używam smem :
# 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
pełną ścieżką, np. /opt/google/chrome
lub/usr/lib64/chromium-browser
-P firefox
sudo smem
tego.338.0M
. To jest za niskie. Po uruchomieniu Monitora systemu widzę, że istnieje 11 procesów chrome i każdy zajmuje od 70 MB do 400 MB pamięci RAM. Nie jestem pewien, czy Monitor systemu raportuje niepoprawnie, czy nie.
chrome
zamiast tego tylko chorm
dlatego, że jeśli używasz zarówno chromu, jak i chromu, zobaczysz sumę dla obu.
smem
z własnego wyjścia, używając czegoś takiego jak [c]hrome
np smem -tkP '[c]hrome'
. Działa to poprzez dopasowanie c
wewnętrznych nawiasów kwadratowych, a nie samych nawiasów.
Jestem pewien, że nie jest to najlepsze rozwiązanie, ale nadal działa dla mnie:
#!/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 }'
Uwaga: zmień na [/]opt/google/chrome/chrome
coś odpowiedniego dla twojego systemu, np. Jeśli korzystasz z Mac OS X (po prostu grep "chrome"
będzie działać).
awk
polecenia? To znaczy, dlaczego nie tylko ... | 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
według najwyższej odpowiedzi. Chociaż FWIW, zaimplementowałbym go jako skrypt lub funkcję, ponieważ jest zbyt skomplikowany dla aliasu.
Uruchamianie tego:
perl -e '$a="x"x1000000000;sleep(10);print"done\n"'
zajmuje 1,8 GB pamięci RAM. Więc możesz się spodziewać uruchomienia tego:
perl -e '$a="x"x1000000000;fork;fork;fork;fork;sleep(10);print"done\n"'
zajęłoby 16 razy więcej. Ale tak nie jest.
Wynika to z inteligentnego kopiowania przy zapisie przez jądro Linuksa: Ponieważ zawartość „$ a” nie zmienia się, pamięć „$ a” może być współdzielona. Ale pozostanie udostępniony tylko do momentu zmiany „$ a”. Kiedy to nastąpi, zmieniona sekcja zostanie skopiowana i zacznie zajmować pamięć RAM.
Nie wiem, czy można zmierzyć, ile pamięci jest przepełnione przy kopiowaniu przy zapisie. Ale to przynajmniej tłumaczy twoje przeludnienie.
Wystarczy szybko obliczyć sumę procesów.
Na komputerze Mac :
chrome://system/
i wybierz wszystkie zgłoszone w mem_usagepython
, CMD + V, EnterGotowe! „Łatwy” ... 🤓😅
PS - Skróty ninja i lata 80. / 90. Gracze walczący nie powinni mieć problemu z tym rozwiązaniem 🤖🕹💾
Znalazłem rozwiązanie z vimem i awk. Otwórz chrome: // system, rozwiń mem_usage, skopiuj do vima i uruchom wyrażenie regularne:
:%s/\D*\(\d*\).MB.*/\1
Pozostawia to tylko liczby przed MB. Zapisz plik i uruchom
cat file | awk '{sum += $1} END {print sum}'
Nie mogłem przekonwertować kodu regularnego vim na sed.
Istnieje USS, który jest dostępny na różnych platformach
USS (Unique Set Size) to pamięć, która jest unikalna dla procesu i która zostałaby uwolniona, gdyby proces został zakończony w tej chwili.
psutil> 4.0 biblioteka Python może uzyskać do niej dostęp
Oto użyłbym tego
sudo python3 -c "import psutil;print(sum(p.memory_full_info().uss for p in psutil.Process(pid=292).children())/1024/1024);"
gdzie pid = 292 jest PID najbardziej zewnętrznego procesu z Monitora aktywności
Wiedziałem, że chrome / chromium ma menedżera zadań, ale nie daje całkowitej wykorzystanej pamięci. Okazuje się, że link „Statystyki dla frajerów” w menedżerze zadań prowadzi do chrome: // memory-redirect /, która wyświetla całkowitą wykorzystaną pamięć. Byłoby miło mieć zewnętrzną weryfikację tych liczb, a także sposób uzyskania informacji w wierszu poleceń, aby można było z tym zrobić więcej, ale wydaje się, że jest to najlepszy dostępny sposób.