Отримайте загальне використання пам'яті хрому


28

Оскільки Google хром / хром породив кілька процесів, важче зрозуміти, скільки загальної пам’яті ці процеси використовують загалом.

Чи є простий спосіб побачити, скільки загальної пам'яті використовує низка підключених процесів?


Якщо я перетворять цифри, які друкуються з KiB в GiB, то навіть для Res. Пам'ять Я отримую більше, ніж об'єм оперативної пам’яті плюс своп. Тож здається, що щось переоцінюється.
Ryan1729

Відповіді:


30

З огляду на те, що 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
  • це працює так само для багатопроцесорного Firefox (e10s) з -P firefox
  • будьте обережні, smem повідомляє про себе у виході, додаткові ~ 10-20 млн у моїй системі.
  • На відміну від вершини, йому потрібен кореневий доступ для точного моніторингу кореневих процесів - використовуйте sudo smemдля цього.
  • див. цю відповідь ТА для отримання більш детальної інформації про те, чому smem - це хороший інструмент та як читати вихід.

Я не впевнений, що це працює на мене. Коли я запускаю другу команду, я отримую повернене значення 338.0M. Це занадто низько. Коли я запускаю System Monitor, я бачу, що існує 11 хромованих процесів, і кожен займає від 70 МБ до 400 МБ оперативної пам’яті. Не впевнений, що System Monitor звітує неправильно чи ні.
шістдесят футів

Ця ж проблема для smem у дистрибутиві Kali Linux 2017.1, вихід 800Mo оперативної пам’яті, який використовується chrome з 5 екземплярами та принаймні 30 вкладками ... І системний монітор теж не погоджується з smem. Хтось знайшов рішення для цього? (Спасибі за відповідь та посилання)
matthieusb

1
Ваші коментарі заслуговують окремого питання (з повним випуском конфліктних програм). Просто опублікуйте посилання в коментарі.
eddygeek

1
Я б використав chromeзамість того, що тільки chormякщо ви працюєте з хромом і хромом, ви б бачили загальний результат для обох.
RJ

1
Ви можете виключити smemз власного результату, використовуючи щось на зразок [c]hrome, наприклад smem -tkP '[c]hrome'. Це працює, якщо відповідати cвнутрішні квадратні дужки, а не самі дужки.
wjandrea

3

Я впевнений, що це не найкраще рішення, все-таки воно працює для мене:

#!/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"буде працювати).


1
Це "працює", оскільки друкує номер. Однак це число не все так корисно, оскільки пам'ять, що розділяється між декількома процесами, рахується кілька разів.
Жил "ТАК - перестань бути злим"

Я думаю, що насправді це все ще досить добре, тому що Chrome - це найбільший завиток пам’яті на типових робочих столах, і коли ви вбиваєте хромовані процеси, ваша система швидко палає.
Шрідхар Сарнобат

Чому дві awkкоманди? Тобто, чому б не просто ... | awk '{sum += $6} END {print sum}'?
wjandrea

2
FWIW, ось коротша, ps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
чіткіша

1
@Rushi Не турбуйся. Це рішення не дає значущого числа. Використовуйте smemвідповідно до верхньої відповіді. Хоча FWIW, я би реалізував це як сценарій або функцію, оскільки це занадто складно для псевдоніма.
wjandrea

2

Запуск цього:

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". Коли це станеться, змінений розділ буде скопійовано і почне займати оперативну пам’ять.

Чи можете ви виміряти, скільки пам’яті перезаписано копіюванням, я не знаю. Але принаймні це пояснює ваше перерахунок.


0

Просто швидко обчисліть суму процесів.

На Mac :

  • перейдіть до chrome://system/і виберіть усе повідомлення про що повідомляється в mem_usage
  • вставити в SublimeText
  • SelectAll (CMD + 'A') і SelectAllLines (CMD + SHIFT + 'L')
  • CMD + праворуч (перейти до eol), Backspace, Backspace, Backspace, ALT + Left, CMD + Backspace
  • Резервна область, введіть '+', CMD + 'A', CMD + 'C'
  • відкрити Термінал , запустити python, CMD + V, Enter

Et voila! "Легко" ... 🤓😅

PS - Ярлики ніндзя та 80-ті / 90-ті гравці Бойових ігор не повинні мати проблем з цим рішенням 🤖🕹💾


0

Я знайшов рішення з vim та awk. Відкрити систему chrome: //, розгорнути mem_usage, скопіювати в vim та виконати регулярний вираз:

:%s/\D*\(\d*\).MB.*/\1

Це залишає лише числа перед МБ. Збережіть файл та виконайте

cat file | awk '{sum += $1} END {print sum}'

Я не зміг перетворити код vim regexp в sed.


0

Є 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


-1

Я знав, що хром / хром має диспетчер завдань, але він не дає загальної використовуваної пам'яті. Виявляється, посилання "Stats for nerds" в диспетчері завдань призводить до chrome: // memory-redirect /, який реєструє загальну використану пам'ять. Було б непогано провести зовнішнє підтвердження цих номерів, а також спосіб отримати інформацію в командному рядку, щоб з цим можна було зробити більше, але це, здається, є найкращим способом.


2
Ця відповідь вже не дійсна. Дивіться bugs.chromium.org/p/chromium/isissue/detail?id=588790
eddygeek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.