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

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

Существует ли командная строка, которая позволяет видеть потребление RAM данного приложения?

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

9
задан 20 May 2014 в 21:43

2 ответа

Здесь существует очень хорошее подробное объяснение: 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 МБ (Возьмите RES на 27 МБ и вычтите общее (SHR))

я проверил это путем проверки использования общей памяти (свободный-m, + / буферы/кэш) прежде и после издания "killall mysqld". После уничтожения всех процессов mysqld, использования памяти, отброшенного на 25 МБ согласно "свободному-m".

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

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

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

4
ответ дан 16 November 2019 в 16:25

С небольшим количеством справки от 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 можно нажать на меня для игнорирования неактивных / процессов-зомби, чтобы облегчить читать: much smaller top output

2
ответ дан 16 November 2019 в 16:25

Другие вопросы по тегам:

Похожие вопросы: