Вопрос Как я могу контролировать использование памяти?


я использовал top чтобы увидеть использование памяти в данный момент. Но я хотел бы отслеживать использование памяти в течение определенного периода времени. Например, начните мониторинг, а затем выполните несколько команд и окончательно остановите мониторинг и посмотрите, сколько памяти было использовано в течение периода.

Как я могу это сделать на сервере Ubuntu?

Думаю, я мог бы начать cronjob каждые 5 секунд или около того и вызвать команду, которая регистрирует текущее использование памяти в текстовом файле. Но какую команду следует использовать для получения текущего использования памяти в формате, который легко записывается в текстовый файл?


235
2017-10-26 16:50


происхождения




ответы:


Я рекомендую комбинировать предыдущие ответы

watch -n 5 free -m

Обратите внимание, что Linux любит использовать любую дополнительную память для кеш-блоки жесткого диска, Поэтому вы не хотите смотреть на Mem, Вы хотите посмотреть на free столбец -/+ buffers/cache: ряд. Это показывает, сколько памяти доступно для приложений. Так что я просто побежал free -m и получил это:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

Я знаю, что использую 1528 МБ и имеют 2170 МБ свободно.

Заметка: Чтобы остановить это watch цикла, вы можете просто нажать Ctrl+С,


290
2017-10-26 17:40



Спасибо, это информативно. Но на используемой колонке вы сначала 2896 а потом 1528 для буферов, не означает ли это, что вы используете 2896 + 1528? - Jonas
Mem: used ваша общая используемая память. -/+ buffers/cache: used ваша общая используемая память минус буферов и кеша. Я знаю, что результат выглядит забавным, но здесь нет арифметики. Вы просто ищете использовать / бесплатно в строке - / + buffers / cache. - Justin Force
Опция -h намного приятнее - frmdstryr
@frmdstryr Хорошая мысль! -h / - человек не существовал, когда я писал это. gitlab.com/procps-ng/procps/commit/... - Justin Force
@ cbradsh1 Вы можете просто сделать free -h, например. watch -n 5 free -h для получения «удобочитаемого» результата, например. 2.1G вместо 2170 на выходе. - Justin Force


я думаю htop является лучшим решением.

  • sudo apt-get install htop

Таким образом вы заметите, какие программы используют большинство ОЗУ. и вы можете легко закончить один, если хотите. Вот скриншот!


192
2018-05-18 00:11



htop хорошо, потому что он более «графический» и, возможно, легче читать, чем free, - mjswensen
я не понимаю выход. Является RES память, используемая этим приложением в MB? То, что SHR? - faizal
@faizal: виртуальная, зарезервированная и разделяемая память. - WitchCraft
как htop показать вам «использование памяти в течение определенного периода времени»? - dangel
htop -s M_SHARE htop -s TIME - Tomachi


Если вы ищете хорошую разбивку памяти, используемую каждым запущенным процессом, я бы рекомендовал проверить ps_mem.py (найденный Вот на pixelbeat.org).

Я знаю в комментариях выше, вы упомянули о необходимости создания однострочного моментального снимка из свободно, но я полагал, что другие могут найти это полезным.

Пример вывода:

user@system:~$ sudo ps_mem.py
[sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

Единственная часть, которая мне не нравится, это тот факт, что сценарий утверждает, что требует прав root. У меня еще не было возможности увидеть, почему именно так.


38
2017-10-26 17:19



Интересно, разделяется ли память между потоками. Он разделен между процессами, не так ли? По крайней мере, в Windows ... - Thomas Weller
Таким образом, в этом случае общая память относится к страницам, которые отображаются несколькими процессами в виде разделяемых библиотек. Кроме того, в контексте многопоточных приложений все пространство памяти процесса доступно для всех потоков в этом процессе. - Jason Mock
Теперь доступно в PyPI (pip install ps_mem) а также на GitHub, - Leif Arne Storset
@ThomasWeller: Да, потоки всегда обмениваются памятью, тогда как процессы могут разделять некоторые или все из них при определенных условиях. - Leif Arne Storset
для этого я использую gnome-system-monitor - jms


Использовать свободно команда. Например, это free -m:

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+ вернет только вторую строку:

-/+ buffers/cache:        947       1064

22
2017-10-26 17:27



Спасибо, отлично выглядит. Итак, это 947 использование памяти минус память, используемая для буферов и кешей? - Jonas


смотреть команда может быть полезна. Пытаться watch -n 5 free для мониторинга использования памяти с обновлениями каждые пять секунд.


9
2018-01-19 20:09



Спасибо, это было здорово! Тем не менее, я предпочел бы использовать память в одной строке, поэтому легко войти в текстовый файл. - Jonas


Для визуального мониторинга общего использования ОЗУ, если вы используете бёбу, он сохранит использование вашей памяти в нижнем правом углу терминала и будет работать, пока вы находитесь в любом сеансе терминала.

Как видно из снимка экрана, моя виртуальная машина имеет 1h3m uptime, 0.00 load, имеет 2,8 ГГц (виртуальный) процессор и 994MB (21%) оперативной памяти, доступных в системе.

Byobu in use


4
2018-04-16 19:15





Вы можете сделать это, используя cat /proc/meminfo,

enter image description here


3
2017-09-27 13:30



добавление часов к передней части этой команды делает его замечательным! как в watch cat /proc/meminfo - Elder Geek
free команда берет свою информацию из /proc/meminfo и представляет их в компактном виде. использование free -h для чтения человеком. - LoMaPh