Получить общее использование памяти Chrome

28

Поскольку Google Chrome / Chromium порождает несколько процессов, сложнее понять, сколько общей памяти используют эти процессы.

Есть ли простой способ узнать, сколько общей памяти использует ряд связанных процессов?

Ryan1729
источник
Если я преобразую числа, которые выводятся из KiB в GiB, то даже для Res. Память я получаю больше, чем объем оперативной памяти плюс обмен. Похоже, что-то переоценивается.
Ryan1729

Ответы:

30

Учитывая, что Google убил chrome: // memory в марте 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
  • будьте осторожны, смем сообщает о себе в выводе, дополнительные ~ 10-20M в моей системе.
  • в отличие от top, для точного мониторинга корневых процессов необходим доступ с правами root - используйте sudo smemдля этого.
  • см. этот SO-ответ для более подробной информации о том, почему smem - хороший инструмент и как прочитать вывод.
eddygeek
источник
Я не уверен, что это работает для меня. Когда я запускаю вторую команду, я получаю возвращенное значение 338.0M. Это слишком низко. Когда я запускаю System Monitor, я вижу, что есть 11 процессов Chrome, каждый из которых занимает от 70 до 400 МБ оперативной памяти. Не уверен, что системный монитор сообщает неправильно или нет.
sixtyfootersdude
Та же проблема для smem в дистрибутиве Kali Linux 2017.1, выходная мощность составляет 800 МБ оперативной памяти, используемой Chrome с 5 экземплярами и по крайней мере 30 вкладками ... И системный монитор также не согласен с smem. Кто-нибудь нашел решение этой проблемы? (Спасибо за ответ и ссылки)
matthieusb
1
Ваши комментарии заслуживают отдельного вопроса (с полным выводом конфликтующих программ). Просто опубликуйте ссылку в комментарии.
eddygeek
1
Я бы использовал chromeвместо просто chormпотому, что если вы используете и хром, и хром, вы увидите общее для обоих.
RJ
1
Вы можете исключить smemиз его собственного вывода, используя что-то вроде [c]hrome, например smem -tkP '[c]hrome'. Это работает путем сопоставления cвнутри квадратных скобок, а не самих скобок.
января
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 - самая большая проблема с памятью на типичных настольных компьютерах, и когда вы убиваете процессы 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 + Right (перейти к eol), Backspace, Backspace, Backspace, ALT + Left, CMD + Backspace
  • Backspace, тип «+», CMD + «A», CMD + «C»
  • открыть терминал , запустить python, CMD + V, Enter

И вуаля! "Легко" ... 🤓😅

PS - Сочетание ниндзя и 80-х / 90-х годов У игроков файтингов не должно быть проблем с этим решением 🤖🕹💾

Kamafeather
источник
0

Я нашел решение с помощью vim и awk. Откройте chrome: // system, разверните mem_usage, скопируйте в vim и выполните регулярное выражение:

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

Это оставляет только цифры до MB. Сохраните файл и выполните

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

Я не смог преобразовать код регулярного выражения vim в sed.

swedman
источник
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 большинства внешних процессов из Activity Monitor

gadelat
источник
-1

Я знал, что в chrome / chromium есть диспетчер задач, но он не дает общего объема используемой памяти. Оказывается, что ссылка «Статистика для ботаников» в диспетчере задач приводит к chrome: // memory-redirect /, который отображает общий объем используемой памяти. Было бы неплохо иметь внешнюю проверку этих чисел, а также способ получить информацию в командной строке, чтобы можно было сделать больше с ней, но, похоже, это лучший доступный способ.

Ryan1729
источник
2
Этот ответ больше не действителен. См. Bugs.chromium.org/p/chromium/issues/detail?id=588790
eddygeek