Оскільки Google хром / хром породив кілька процесів, важче зрозуміти, скільки загальної пам’яті ці процеси використовують загалом.
Чи є простий спосіб побачити, скільки загальної пам'яті використовує низка підключених процесів?
Оскільки Google хром / хром породив кілька процесів, важче зрозуміти, скільки загальної пам’яті ці процеси використовують загалом.
Чи є простий спосіб побачити, скільки загальної пам'яті використовує низка підключених процесів?
Відповіді:
З огляду на те, що google убив chrome: // пам'ять у березні 2016 року, я зараз використовую 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
на повний шлях, наприклад, /opt/google/chrome
або/usr/lib64/chromium-browser
-P firefox
sudo smem
для цього.338.0M
. Це занадто низько. Коли я запускаю System Monitor, я бачу, що існує 11 хромованих процесів, і кожен займає від 70 МБ до 400 МБ оперативної пам’яті. Не впевнений, що System Monitor звітує неправильно чи ні.
chrome
замість того, що тільки chorm
якщо ви працюєте з хромом і хромом, ви б бачили загальний результат для обох.
smem
з власного результату, використовуючи щось на зразок [c]hrome
, наприклад smem -tkP '[c]hrome'
. Це працює, якщо відповідати c
внутрішні квадратні дужки, а не самі дужки.
Я впевнений, що це не найкраще рішення, все-таки воно працює для мене:
#!/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 }'
Примітка: змініть [/]opt/google/chrome/chrome
щось на відповідне для вашої системи, наприклад, якщо ви працюєте на Mac OS X (просто grep "chrome"
буде працювати).
awk
команди? Тобто, чому б не просто ... | 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
відповідно до верхньої відповіді. Хоча FWIW, я би реалізував це як сценарій або функцію, оскільки це занадто складно для псевдоніма.
Запуск цього:
perl -e '$a="x"x1000000000;sleep(10);print"done\n"'
займає 1,8 ГБ оперативної пам’яті. Тож ви очікуєте запуску цього:
perl -e '$a="x"x1000000000;fork;fork;fork;fork;sleep(10);print"done\n"'
зайняв би в 16 разів більше. Але це не так.
Це пов’язано з розумним копіюванням при написанні ядра Linux: оскільки вміст '$ a' не змінюється, то пам'ять '$ a' може бути спільною. Але він залишатиметься спільним лише до зміни "$ a". Коли це станеться, змінений розділ буде скопійовано і почне займати оперативну пам’ять.
Чи можете ви виміряти, скільки пам’яті перезаписано копіюванням, я не знаю. Але принаймні це пояснює ваше перерахунок.
Просто швидко обчисліть суму процесів.
На Mac :
chrome://system/
і виберіть усе повідомлення про що повідомляється в mem_usagepython
, CMD + V, EnterEt voila! "Легко" ... 🤓😅
PS - Ярлики ніндзя та 80-ті / 90-ті гравці Бойових ігор не повинні мати проблем з цим рішенням 🤖🕹💾
Я знайшов рішення з vim та awk. Відкрити систему chrome: //, розгорнути mem_usage, скопіювати в vim та виконати регулярний вираз:
:%s/\D*\(\d*\).MB.*/\1
Це залишає лише числа перед МБ. Збережіть файл та виконайте
cat file | awk '{sum += $1} END {print sum}'
Я не зміг перетворити код vim regexp в sed.
Є USS, який доступний крос-платформ
USS (унікальний набір розмірів) - це пам'ять, яка є унікальною для процесу, і яка була б звільнена, якби процес було припинено прямо зараз.
psutil> 4.0 Бібліотека Python може отримати доступ до нього
Ось я б цим скористався
sudo python3 -c "import psutil;print(sum(p.memory_full_info().uss for p in psutil.Process(pid=292).children())/1024/1024);"
де pid = 292 - PID найбільш зовнішнього процесу від Monitor Monitor
Я знав, що хром / хром має диспетчер завдань, але він не дає загальної використовуваної пам'яті. Виявляється, посилання "Stats for nerds" в диспетчері завдань призводить до chrome: // memory-redirect /, який реєструє загальну використану пам'ять. Було б непогано провести зовнішнє підтвердження цих номерів, а також спосіб отримати інформацію в командному рядку, щоб з цим можна було зробити більше, але це, здається, є найкращим способом.