Intereting Posts

Сколько ОЗУ это приложение использует?

Если я запускаю top -c или htop я получаю процессы с их потреблением памяти, но это не то, что я хочу видеть.

Есть ли командная строка, позволяющая видеть потребление ОЗУ данного приложения?

Например, я хочу видеть потребление ОЗУ веб-сервера Apache (не путем проверки всех процессов, в которых он выполняется)

Здесь очень хорошее подробное объяснение: https://blogs.kde.org/2005/09/15/measuring-memory-usage

Но в сущности: вам нужно действительно разобраться и понять, как настроено приложение.

Так, например, глядя на mysql:

  PID PPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6004 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:40.33 mysqld 16115 16085 composit 20 0 37900 27m 2908 S 0 0.2 0:00.37 mysqld 16116 16115 composit 20 0 37900 27m 2908 S 0 0.2 2:07.34 mysqld 16117 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld 16118 16116 composit 20 0 37900 27m 2908 S 0 0.2 3:19.79 mysqld 16119 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.01 mysqld 16120 16116 composit 20 0 37900 27m 2908 S 0 0.2 5:31.09 mysqld 16121 16116 composit 20 0 37900 27m 2908 S 0 0.2 14:19.53 mysqld 16122 16116 composit 20 0 37900 27m 2908 S 0 0.2 36:13.67 mysqld 16123 16116 composit 20 0 37900 27m 2908 S 0 0.2 30:30.64 mysqld 16124 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.15 mysqld 16493 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld 

Общая используемая память составляет около 25 МБ (возьмите 27 МБ ВИЭ и вычтите общий (SHR))

Я подтвердил это, проверив общее использование памяти (free -m, + / buffers / cache) до и после выдачи «killall mysqld». После уничтожения всех процессов mysqld использование памяти сократилось на 25 МБ в соответствии с «free -m».

Если вы видите, что каждый процесс имеет одинаковые столбцы VIRT, RES и SHR, они скорее всего являются потоками одного и того же процесса. (Старые библиотеки Linux обрабатывали потоки путем нереста нескольких реальных процессов, которые по существу занимали одну и ту же память)

Если они разные, вы можете оценить их, выполнив СУММ (RES-SHR). Но это работает только в том случае, если процессы фактически являются отдельными процессами, а не только потоками одного и того же процесса. Также помогает поиск PPID (идентификатор родительского процесса). Если все они имеют один и тот же родитель, они, вероятно, просто потоки (хотя и не обязательно).

К сожалению, нет реального хорошего легкого способа ответить на это в Linux. Единственный простой способ – проверить «бесплатно» непосредственно перед завершением процесса и сразу же проверить его. посмотрите на строку «- / + buffers / cache:» и посмотрите, сколько памяти уменьшилось, и это скажет вам, сколько она использует.

С небольшой помощью от man ps и этого великого ответа …

 ps -up $(pidof PROCESS_NAME) 

Например:

 [wilf@comp ~]$ ps -up $(pidof firefox) USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND wilf 1619 8.9 5.6 1464216 342396 ? Sl 17:56 1:36 /usr/lib64/firefox/firefox [wilf@comp ~]$ 

Другие способы:

 cat /proc/$(pidof firefox)/status | grep VmSize 

Это можно запустить без -x и tail -1 :

 pmap -x $(pidof firefox) | tail -1 

только показывает процент:

 top -p $(pidof firefox) 

Кроме того, используя top вы можете нажать i, чтобы игнорировать процессы простоя / зомби, чтобы упростить чтение: much smaller top output