Я привык top
видеть использование памяти на данный момент. Но я хотел бы контролировать использование памяти в течение определенного периода времени. Например, запустите мониторинг, затем выполните несколько команд и, наконец, остановите мониторинг и посмотрите, сколько памяти было использовано за период.
Как я могу сделать это на Ubuntu Server?
Я думаю, я мог бы запускать cronjob каждые 5 секунд или около того, и вызывать команду, которая записывает текущее использование памяти в текстовый файл. Но какую команду я должен использовать, чтобы получить текущее использование памяти в формате, который легко записать в текстовый файл?
2896
а затем1528
для буферов, разве это не означает, что вы используете2896 + 1528
?Mem: used
ваша общая используемая память-/+ buffers/cache: used
ваша общая используемая память минус буферы и кеш. Я знаю, что результат выглядит забавно, но здесь не требуется арифметика. Вы просто ищете используется / бесплатно в строке - / + buffers / cache.free -h
, например,watch -n 5 free -h
чтобы получить «читаемый человеком» вывод, например,2.1G
вместо2170
вывода.Я думаю, что
htop
это лучшее решение.sudo apt-get install htop
Таким образом, вы заметите, какие программы используют больше оперативной памяти. и вы можете легко прекратить один, если хотите. Вот скриншот!
источник
htop
это хорошо, потому что это более "графическое" и, возможно, легче читать, чемfree
.RES
Используется ли память этим приложением в МБ? Тогда что естьSHR
?htop
показывает «использование памяти за период времени»?Если вы ищете красивую разбивку памяти, используемой каждым запущенным процессом, я мог бы рекомендовать проверить ps_mem.py (находится здесь на pixelbeat.org).
Я знаю, что в комментариях выше вы упомянули, что хотите получить бесплатный снимок из одной строки , но я подумал, что другие могут найти это полезным.
Пример вывода:
Единственная часть, которая мне не нравится, это то, что скрипт требует наличия привилегий root. У меня еще не было возможности точно понять, почему это так.
источник
pip install ps_mem
) и на GitHub .Используйте бесплатную команду. Например, это вывод
free -m
:free -m | grep /+
вернет только вторую строку:источник
947
использование памяти минус память, используемая для буферов и кешей?Команда watch может быть полезна. Попробуйте
watch -n 5 free
отслеживать использование памяти с обновлениями каждые пять секунд.источник
Вы можете сделать это с помощью
cat /proc/meminfo
.источник
watch cat /proc/meminfo
free
берет свою информацию/proc/meminfo
и представляет их в компактном виде. Используйтеfree -h
для удобочитаемого вывода.Для визуального мониторинга общего использования оперативной памяти, если вы используете Byobu , он будет хранить ваше использование памяти в правом нижнем углу терминала и будет работать, пока вы находитесь в любом терминальном сеансе.
Как вы можете видеть на скриншоте, моя виртуальная машина имеет время бесперебойной работы 1 час 3 м, нагрузку 0,00, 2,8 ГГц (виртуальный) процессор и 994 МБ (21%) оперативной памяти, доступной в системе.
источник
Однолинейное решение и вывод:
Вот пример ожидаемого результата:
источник
Я бы использовал Кактусы . Это будет отображать график использования памяти и т. Д. За определенный период времени, и вы сможете проверить использование с помощью веб-браузера.
источник
Мониторинг использования памяти
Я больше согласен с одним из предыдущих постов, в которых упоминалась Cacti как отличный способ контролировать использование памяти. Однако, поскольку кажется, что кактусы больше не популярны в мейнстриме, есть альтернативное графическое приложение под названием Graphite.
Graphite относительно прост в установке на сервер Ubuntu, и для его установки вы можете воспользоваться этой ссылкой для простых процедур установки.
После того, как графит был установлен, теперь вы можете отправлять ему метрики памяти с любым интервалом, который пожелаете; каждые 5 секунд, каждую минуту, каждый час ... и т. д.
Чтобы построить график метрик памяти, как уже предлагалось в предыдущих статьях, вы можете написать свой собственный скрипт, используя системные инструменты для сбора необходимой информации о памяти. Или вы можете использовать заранее написанный плагин snmp, который сделает всю работу за вас.
Если вы хотите написать свой собственный скрипт памяти, будет разумно убедиться, что вы учитываете буферизованную и кэшированную память при расчете используемой памяти, в противном случае вы в конечном итоге соберете ложные данные.
Если вы хотите вместо этого использовать плагин snmp, который уже выполняет все необходимые вычисления, вот ссылка на тот, который работает довольно хорошо: checkMemoryviaSNMP .
Плюсы SNMP:
У меня установлен snmp на всех удаленных узлах, которые я наблюдаю. Это позволяет мне контролировать все мои системы с одного центрального сервера (ов) , без необходимости копировать или устанавливать плагин на удаленных узлах.
Минусы SNMP:
Вы должны убедиться, что агент snmp установлен на каждом из удаленных узлов, на которых вы хотите отслеживать память. Тем не менее, эта установка будет разовой. Если в вашей среде вы используете инструменты автоматизации, такие как «повар», «марионетка» или аналогичные, тогда это не проблема.
Конфигурация агента SNMP на удаленном узле (ах):
После того, как агент snmp был установлен, просто загрузите файл /etc/snmpd/snmpd.conf и добавьте в него следующую строку:
Затем перезапустите агент snmpd:
Затем на вашем центральном сервере, с которого вы вместо этого будете контролировать все остальные ваши серверы, вы можете запустить следующую команду:
источник