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


28

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

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


Если я преобразую числа, которые выводятся из 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 - хороший инструмент и как прочитать вывод.

Я не уверен, что это работает для меня. Когда я запускаю вторую команду, я получаю возвращенное значение 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-х годов У игроков файтингов не должно быть проблем с этим решением 🤖🕹💾


0

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

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

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

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

Я не смог преобразовать код регулярного выражения vim в 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 большинства внешних процессов из Activity Monitor


-1

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


2
Этот ответ больше не действителен. См. Bugs.chromium.org/p/chromium/issues/detail?id=588790
— eddygeek
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.