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

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

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

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

Решение

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

watch -n 5 free -m

Обратите внимание, что Linux любит использовать любую дополнительную память для кэширования блоков жесткого диска. Поэтому вы не хотите смотреть только на свободную Mem. Вы хотите посмотреть на свободный столбец строки -/+ буферы/кэш:. Это показывает, сколько памяти доступно приложениям. Поэтому я просто запустил 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 МБ свободной памяти.

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

Комментарии (7)

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

  • судо apt-получить установку при

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

Комментарии (5)

Если вы ищете хороший расстройство памяти, используемый каждым запущенным процессом, то я бы порекомендовал проверить 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

Единственная часть, которую я не'т нравится, так это то, что скрипт утверждает, требуют привилегий суперпользователя. Я еще'т получил возможность еще точно понять, почему это так.

Комментарии (7)

Используйте команду free. Например, вот результат команды 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
Комментарии (1)

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

Комментарии (1)

Вы можете сделать это с помощью кошка /proc/meminfo.

MemTotal:        4039160 kB
MemFree:          309796 kB
MemAvailable:    3001052 kB
Buffers:          345636 kB
Cached:          2341288 kB
SwapCached:            8 kB
Active:          1725160 kB
Inactive:        1551652 kB
Active(anon):     538404 kB
Inactive(anon):    70076 kB
Active(file):    1186756 kB
Inactive(file):  1481576 kB
Unevictable:          32 kB
Mlocked:              32 kB
SwapTotal:       4194300 kB
SwapFree:        4194044 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        589988 kB
Mapped:           255972 kB
Shmem:             18596 kB
Slab:             374888 kB
SReclaimable:     310496 kB
SUnreclaim:        64392 kB
KernelStack:        6976 kB
PageTables:        26452 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6213880 kB
Committed_AS:    3589736 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      147392 kB
DirectMap2M:     4046848 kB
Комментарии (2)

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

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

Комментарии (0)

Единое решение и выход:

free -m | grep "Mem:"

Вот пример ожидаемого выхода:

Mem:           3944         652         302          18        2990        2930
Комментарии (0)

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

Комментарии (0)

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

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

Графит является относительно легко установить на сервер Ubuntu и, чтобы установить его, вы можете проверить эту ссылку]1 Для легко следовать процедуре установки.

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

На графике показатели памяти, как уже отмечалось в предыдущих постах, вы можете написать свой собственный сценарий, используя системные инструменты для сбора необходимой информации память. Или, вы можете использовать заготовки плагин SNMP, который'сделаем всю работу за вас.

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

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

Плюсы СНМП:

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

Минусы СНМП:

Вы'd должны обеспечить SNMP-агент устанавливается на каждом из удаленных узлов, который вы хотите контролировать память. Однако, эта установка будет разовая сделка. Если вы're с помощью средств автоматизации, таких как Chef или Puppet или подобные инструменты в своей среде, то это вовсе'т проблема.

Конфигурация SNMP агента на удаленном узле(ы):

После SNMP-агент был установлен, просто ви в /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
Комментарии (0)