Если я работаю top -c
или htop
Я получаю процессы с их потреблением памяти, но это не то, что я хочу видеть.
Существует ли командная строка, которая позволяет видеть потребление RAM данного приложения?
Например, я хочу видеть потребление RAM веб-сервера 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 МБ (Возьмите RES на 27 МБ и вычтите общее (SHR))
я проверил это путем проверки использования общей памяти (свободный-m, + / буферы/кэш) прежде и после издания "killall mysqld". После уничтожения всех процессов mysqld, использования памяти, отброшенного на 25 МБ согласно "свободному-m".
, Если Вы видите, что каждый процесс имеет идентичный VIRT, RES и столбцы SHR, они вероятны просто потоки того же процесса. (Более старые библиотеки Linux обработали поточную обработку путем порождения нескольких реальных процессов, которые по существу заняли ту же память)
, Если они отличаются, Вы могли бы быть в состоянии оценить его путем выполнения СУММЫ (RES - SHR). Но это только работает, если процессы являются на самом деле отдельными процессами и не только потоками того же процесса. Рассмотрение PPID (идентификатор Родительского процесса) также помогает. Если у них всех есть тот же родитель, они - вероятно, просто потоки (Хотя не обязательно).
, К сожалению, нет никакого очень хорошего простого способа ответить на это в Linux. Единственный простой способ состоит в том, чтобы проверить "свободный" сразу прежде, чем завершить процесс и проверить его снова сразу после. посмотрите на "-/+ буферы/кэш": строка и видит, сколько уменьшенного использования памяти и это скажет Вам, сколько это использовало.
С небольшим количеством справки от 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
можно нажать на меня для игнорирования неактивных / процессов-зомби, чтобы облегчить читать: