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

Да, из коробки. Тем не менее, я бы посоветовал избегать многого написания, sinse Ubuntu позволит вам создавать файлы с именами, которые Windows не может читать - имена с символами и странные символы. Вы сможете переименовать их позже из Ubuntu.

Затем NTFS не поддерживает права доступа к Linux, поэтому вы не сможете разместить на нем папку root или /home.

Драйвер NTFS еще не на 100% хорош.

236
задан 26 October 2010 в 23:20

90 ответов

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

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 МБ бесплатно.

1528 МБ Чтобы остановить этот цикл watch, вы можете просто нажать Ctrl + C.

266
ответ дан 26 May 2018 в 00:47
  • 1
    Спасибо, это информативно. Но в используемом столбце у вас сначала есть 2896, а затем 1528 для буферов, разве это не означает, что вы используете 2896 + 1528? – Jonas 26 October 2010 в 22:48
  • 2
    Mem: used - ваша общая используемая память. -/+ buffers/cache: used - ваша общая используемая память минус буферы и кеш. Я знаю, что результат выглядит забавным, но здесь нет арифметики. Вы просто ищете использовать / бесплатно в строке - / + buffers / cache. – Justin Force 26 October 2010 в 23:49
  • 3
    Опция -h намного приятнее – frmdstryr 19 October 2017 в 23:11
  • 4
    @frmdstryr Хорошая мысль! -h / - человек не существовал, когда я писал это. gitlab.com/procps-ng/procps/commit/&hellip – Justin Force 20 October 2017 в 21:51
  • 5
    Где находится опция -h? – cbradsh1 3 May 2018 в 18:23

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

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 МБ бесплатно.

1528 МБ Чтобы остановить этот цикл watch, вы можете просто нажать Ctrl + C.

280
ответ дан 25 July 2018 в 23:00

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

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 МБ бесплатно.

1528 МБ Чтобы остановить этот цикл watch, вы можете просто нажать Ctrl + C.

281
ответ дан 31 July 2018 в 10:24

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

  watch -n 5 free -m  

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

  общее количество используемых свободных буферов в кэше Mem: 3699 2896 802 0 247 1120 - / + буферы / кеш: 1528  2170 Swap: 1905 62 1843  

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

Примечание: Чтобы остановить этот часы , вы можете просто нажать Ctrl + C.

281
ответ дан 2 August 2018 в 04:22

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

  watch -n 5 free -m  

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

  общее количество используемых свободных буферов в кэше Mem: 3699 2896 802 0 247 1120 - / + буферы / кеш: 1528  2170 Swap: 1905 62 1843  

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

Примечание: Чтобы остановить этот часы , вы можете просто нажать Ctrl + C.

281
ответ дан 4 August 2018 в 20:53

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

  watch -n 5 free -m  

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

  общее количество используемых свободных буферов в кэше Mem: 3699 2896 802 0 247 1120 - / + буферы / кеш: 1528  2170 Swap: 1905 62 1843  

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

Примечание: Чтобы остановить этот часы , вы можете просто нажать Ctrl + C.

281
ответ дан 6 August 2018 в 04:27

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

  watch -n 5 free -m  

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

  общее количество используемых свободных буферов в кэше Mem: 3699 2896 802 0 247 1120 - / + буферы / кеш: 1528  2170 Swap: 1905 62 1843  

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

Примечание: Чтобы остановить этот часы , вы можете просто нажать Ctrl + C.

281
ответ дан 7 August 2018 в 22:34

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

  watch -n 5 free -m  

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

  общее количество используемых свободных буферов в кэше Mem: 3699 2896 802 0 247 1120 - / + буферы / кеш: 1528  2170 Swap: 1905 62 1843  

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

Примечание: Чтобы остановить этот часы , вы можете просто нажать Ctrl + C.

282
ответ дан 10 August 2018 в 10:41

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

  watch -n 5 free -m  

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

  общее количество используемых свободных буферов в кэше Mem: 3699 2896 802 0 247 1120 - / + буферы / кеш: 1528  2170 Swap: 1905 62 1843  

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

Примечание: Чтобы остановить этот часы , вы можете просто нажать Ctrl + C.

284
ответ дан 13 August 2018 в 17:14
  • 1
    Спасибо, это информативно. Но на используемом столбце вы сначала имеете 2896 , а затем 1528 для буферов, не означает ли это, что вы используете 2896 + 1528 ? – Jonas 26 October 2010 в 22:48
  • 2
    Mem: используется - ваша общая используемая память. - / + buffers / cache: используется - ваша общая используемая память минус буферы и кеш. Я знаю, что результат выглядит забавным, но здесь нет арифметики. Вы просто ищете использовать / бесплатно в строке - / + buffers / cache. – Justin Force 26 October 2010 в 23:49
  • 3
    Опция -h намного приятнее – frmdstryr 19 October 2017 в 23:11
  • 4
    @frmdstryr Хорошая мысль! -h / - человек не существовал, когда я писал это. [D0] gitlab.com/procps-ng/procps/commit/&hellip – Justin Force 20 October 2017 в 21:51
  • 5
    @ cbradsh1 Вы можете просто сделать бесплатно -h , например. watch -n 5 free -h , чтобы получить «читаемый человеком». выход, например. 2.1G вместо 2170 на выходе. – Justin Force 17 May 2018 в 01:11

Я думаю, что htop - лучшее решение.

sudo apt-get install htop

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

188
ответ дан 26 May 2018 в 00:47
  • 1
    htop является приятным, потому что он более «графический». и, возможно, легче читать, чем free. – mjswensen 27 November 2013 в 04:32
  • 2
    я не понимаю выход. Является ли RES память, используемая этим приложением в МБ? Что это SHR? – faizal 19 August 2014 в 18:51
  • 3
    @faizal: виртуальный, зарезервированный и amp; Общая память. – WitchCraft 19 September 2015 в 10:47
  • 4
    как htop показывает вам «использование памяти в течение определенного периода времени»? – dangel 7 August 2016 в 03:57

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

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

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

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
ответ дан 26 May 2018 в 00:47
  • 1
    Интересно, разделяется ли память между потоками. Он разделен между процессами, не так ли? По крайней мере, в Windows ... – Thomas Weller 27 December 2014 в 16:51
  • 2
    Таким образом, в этом случае общая память относится к страницам, которые отображаются несколькими процессами в виде разделяемых библиотек. Кроме того, в контексте многопоточных приложений все пространство памяти процесса доступно для всех потоков в этом процессе. – Jason Mock 2 October 2015 в 02:37
  • 3
    Теперь доступно в PyPI (pip install ps_mem) и на GitHub . – Leif Arne Storset 9 January 2017 в 18:39
  • 4
    @ThomasWeller: Да, потоки всегда обмениваются памятью, тогда как процессы могут разделять некоторые или все из них при определенных условиях. – Leif Arne Storset 9 January 2017 в 18:44
  • 5
    для этого я использую gnome-system-monitor – jms 26 December 2017 в 11:39

Используйте свободную команду. Например, это результат работы 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
21
ответ дан 26 May 2018 в 00:47
  • 1
    Спасибо, отлично выглядит. Итак, это 947 - использование памяти минус память, используемая для буферов и кешей? – Jonas 26 October 2010 в 22:54

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

9
ответ дан 26 May 2018 в 00:47
  • 1
    Спасибо, это было здорово! Тем не менее, я предпочел бы использовать память в одной строке, поэтому легко войти в текстовый файл. – Jonas 26 October 2010 в 22:44

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

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

4
ответ дан 26 May 2018 в 00:47

Однолинейное решение и выход:

free -m | grep "Mem:"

Ниже приведен пример ожидаемого вывода:

3
ответ дан 26 May 2018 в 00:47
  • 1
    Это также позволит вам увидеть использование памяти на данный момент ... – mook765 27 September 2016 в 17:38

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

2
ответ дан 26 May 2018 в 00:47
  • 1
    добавление часов к передней части этой команды делает его замечательным! как в watch cat /proc/meminfo – Elder Geek 9 November 2016 в 07:58
  • 2
    Команда free берет информацию из /proc/meminfo и представляет их компактным образом. Используйте free -h для чтения с человека. – LoMaPh 17 February 2018 в 12:51

Я бы использовал Cacti. Это покажет ваше использование памяти и т. Д. В течение определенного периода времени, и вы сможете проверить использование с помощью своего веб-браузера.

1
ответ дан 26 May 2018 в 00:47

Мониторинг использования памяти

Я больше согласен с одним из предыдущих сообщений, в котором упоминается как Cacti как отличный способ контролировать использование памяти. Однако, поскольку кажется, что кактусы больше не популярны в мейнстриме, есть альтернативное графическое приложение Graphite.

Графит относительно прост в установке на сервере ubuntu и для его установки вы можете проверить эту ссылку для простых процедур установки.

После того, как графит был установлен, теперь , вы можете отправлять ему метрики памяти, в зависимости от того, какой вы хотите; каждые 5 секунд, каждую минуту, каждый час ... и т. д.

Чтобы отобразить показатели памяти, как уже было предложено в предыдущих сообщениях, вы можете написать собственный скрипт с помощью системных инструментов для сбора необходимой информации о памяти. Или вы можете использовать prewritten snmp-плагин, который сделает всю работу за вас.

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

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

Использование памяти мониторинга

У меня установлен snmp на всех удаленных узлах, которые я контролирую. Это позволяет мне контролировать все мои системы с одного центрального сервера (ов) без необходимости копировать или размещать плагин на удаленных узлах.

один центральный сервер (ы)

Вам нужно будет убедиться, что агент snmp установлен на каждом из удаленных узлов, которые вы хотите контролировать , Однако эта установка будет одноразовой сделкой. Если вы используете инструменты автоматизации, такие как шеф-повар или марионетные или подобные инструменты в вашей среде, то это совсем не проблема.

snmp agent

После того, как агент snmp был установлен, просто vi файл /etc/snmpd/snmpd.conf и добавьте в него следующую строку:

rocommunity  (specify-a-community-string-aka-password-here)

Затем перезапустите агент snmpd, используя: [!d21 ]

/etc/init.d/snmpd restart

Затем на вашем центральном сервере, из которого вы хотите контролировать все остальные серверы, вы можете запустить следующую команду:

$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ].  System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].

real    0m0.23s
user    0m0.03s
sys     0m0.02s
0
ответ дан 26 May 2018 в 00:47

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

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

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

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
ответ дан 25 July 2018 в 23:00
  • 1
    Интересно, разделяется ли память между потоками. Он разделен между процессами, не так ли? По крайней мере, в Windows ... – Thomas Weller 27 December 2014 в 16:51
  • 2
    Таким образом, в этом случае общая память относится к страницам, которые отображаются несколькими процессами в виде разделяемых библиотек. Кроме того, в контексте многопоточных приложений все пространство памяти процесса доступно для всех потоков в этом процессе. – Jason Mock 2 October 2015 в 02:37
  • 3
    Теперь доступно в PyPI (pip install ps_mem) и на GitHub . – Leif Arne Storset 9 January 2017 в 18:39
  • 4
    @ThomasWeller: Да, потоки всегда обмениваются памятью, тогда как процессы могут разделять некоторые или все из них при определенных условиях. – Leif Arne Storset 9 January 2017 в 18:44
  • 5
    для этого я использую gnome-system-monitor – jms 26 December 2017 в 11:39

Я думаю, что htop - лучшее решение.

sudo apt-get install htop

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

191
ответ дан 25 July 2018 в 23:00
  • 1
    htop является приятным, потому что он более «графический». и, возможно, легче читать, чем free. – mjswensen 27 November 2013 в 04:32
  • 2
    я не понимаю выход. Является ли RES память, используемая этим приложением в МБ? Что это SHR? – faizal 19 August 2014 в 18:51
  • 3
    @faizal: виртуальный, зарезервированный и amp; Общая память. – WitchCraft 19 September 2015 в 10:47
  • 4
    как htop показывает вам «использование памяти в течение определенного периода времени»? – dangel 7 August 2016 в 03:57

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

3
ответ дан 25 July 2018 в 23:00
  • 1
    добавление часов к передней части этой команды делает его замечательным! как в watch cat /proc/meminfo – Elder Geek 9 November 2016 в 07:58
  • 2
    Команда free берет информацию из /proc/meminfo и представляет их компактным образом. Используйте free -h для чтения с человека. – LoMaPh 17 February 2018 в 12:51

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

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

4
ответ дан 25 July 2018 в 23:00

Используйте свободную команду. Например, это результат работы 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
21
ответ дан 25 July 2018 в 23:00
  • 1
    Спасибо, отлично выглядит. Итак, это 947 - использование памяти минус память, используемая для буферов и кешей? – Jonas 26 October 2010 в 22:54

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

9
ответ дан 25 July 2018 в 23:00
  • 1
    Спасибо, это было здорово! Тем не менее, я предпочел бы использовать память в одной строке, поэтому легко войти в текстовый файл. – Jonas 26 October 2010 в 22:44

Я бы использовал Cacti. Это покажет ваше использование памяти и т. Д. В течение определенного периода времени, и вы сможете проверить использование с помощью своего веб-браузера.

1
ответ дан 25 July 2018 в 23:00

Мониторинг использования памяти

Я больше согласен с одним из предыдущих сообщений, в котором упоминается как Cacti как отличный способ контролировать использование памяти. Однако, поскольку кажется, что кактусы больше не популярны в мейнстриме, есть альтернативное графическое приложение Graphite.

Графит относительно прост в установке на сервере ubuntu и для его установки вы можете проверить эту ссылку для простых процедур установки.

После того, как графит был установлен, теперь , вы можете отправлять ему метрики памяти, в зависимости от того, какой вы хотите; каждые 5 секунд, каждую минуту, каждый час ... и т. д.

Чтобы отобразить показатели памяти, как уже было предложено в предыдущих сообщениях, вы можете написать собственный скрипт с помощью системных инструментов для сбора необходимой информации о памяти. Или вы можете использовать prewritten snmp-плагин, который сделает всю работу за вас.

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

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

Использование памяти мониторинга

У меня установлен snmp на всех удаленных узлах, которые я контролирую. Это позволяет мне контролировать все мои системы с одного центрального сервера (ов) без необходимости копировать или размещать плагин на удаленных узлах.

один центральный сервер (ы)

Вам нужно будет убедиться, что агент snmp установлен на каждом из удаленных узлов, которые вы хотите контролировать , Однако эта установка будет одноразовой сделкой. Если вы используете инструменты автоматизации, такие как шеф-повар или марионетные или подобные инструменты в вашей среде, то это совсем не проблема.

snmp agent

После того, как агент snmp был установлен, просто vi файл /etc/snmpd/snmpd.conf и добавьте в него следующую строку:

rocommunity (specify-a-community-string-aka-password-here)

Затем перезапустите агент snmpd, используя:

/etc/init.d/snmpd restart

Затем на вашем центральном сервере, из которого вы хотите контролировать все остальные серверы, вы можете запустить следующую команду:

$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ]. System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ]. real 0m0.23s user 0m0.03s sys 0m0.02s
1
ответ дан 25 July 2018 в 23:00

Однолинейное решение и выход:

free -m | grep "Mem:"

Ниже приведен пример ожидаемого вывода:

3
ответ дан 25 July 2018 в 23:00
  • 1
    Это также позволит вам увидеть использование памяти на данный момент ... – mook765 27 September 2016 в 17:38

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

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

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

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
ответ дан 31 July 2018 в 10:24
  • 1
    Интересно, разделяется ли память между потоками. Он разделен между процессами, не так ли? По крайней мере, в Windows ... – Thomas Weller 27 December 2014 в 16:51
  • 2
    Таким образом, в этом случае общая память относится к страницам, которые отображаются несколькими процессами в виде разделяемых библиотек. Кроме того, в контексте многопоточных приложений все пространство памяти процесса доступно для всех потоков в этом процессе. – Jason Mock 2 October 2015 в 02:37
  • 3
    Теперь доступно в PyPI (pip install ps_mem) и на GitHub . – Leif Arne Storset 9 January 2017 в 18:39
  • 4
    @ThomasWeller: Да, потоки всегда обмениваются памятью, тогда как процессы могут разделять некоторые или все из них при определенных условиях. – Leif Arne Storset 9 January 2017 в 18:44
  • 5
    для этого я использую gnome-system-monitor – jms 26 December 2017 в 11:39

Я думаю, что htop - лучшее решение.

sudo apt-get install htop

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

191
ответ дан 31 July 2018 в 10:24
  • 1
    htop является приятным, потому что он более «графический». и, возможно, легче читать, чем free. – mjswensen 27 November 2013 в 04:32
  • 2
    я не понимаю выход. Является ли RES память, используемая этим приложением в МБ? Что это SHR? – faizal 19 August 2014 в 18:51
  • 3
    @faizal: виртуальный, зарезервированный и amp; Общая память. – WitchCraft 19 September 2015 в 10:47
  • 4
    как htop показывает вам «использование памяти в течение определенного периода времени»? – dangel 7 August 2016 в 03:57

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

3
ответ дан 31 July 2018 в 10:24
  • 1
    добавление часов к передней части этой команды делает его замечательным! как в watch cat /proc/meminfo – Elder Geek 9 November 2016 в 07:58
  • 2
    Команда free берет информацию из /proc/meminfo и представляет их компактным образом. Используйте free -h для чтения с человека. – LoMaPh 17 February 2018 в 12:51

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

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