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

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

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

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

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

watch -n 5 free -m

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

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

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

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

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

  • sudo apt-get install htop

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

Если вы ищете хорошую разбивку памяти, используемой каждым запущенным процессом, то я мог бы порекомендовать проверить 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       cron120.0 KiB +  50.0 KiB = 170.0 KiB       master204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd384.0 KiB + 171.0 KiB = 555.0 KiB       sudo476.0 KiB +  83.0 KiB = 559.0 KiB       monit568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam552.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-server888.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       mysqld147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)---------------------------------                        208.1 MiB================================= Private  +   Shared  =  RAM used       Program

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

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

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

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

-/+ buffers/cache:        947       1064

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

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

MemTotal:        4039160 kBMemFree:          309796 kBMemAvailable:    3001052 kBBuffers:          345636 kBCached:          2341288 kBSwapCached:            8 kBActive:          1725160 kBInactive:        1551652 kBActive(anon):     538404 kBInactive(anon):    70076 kBActive(file):    1186756 kBInactive(file):  1481576 kBUnevictable:          32 kBMlocked:              32 kBSwapTotal:       4194300 kBSwapFree:        4194044 kBDirty:                 0 kBWriteback:             0 kBAnonPages:        589988 kBMapped:           255972 kBShmem:             18596 kBSlab:             374888 kBSReclaimable:     310496 kBSUnreclaim:        64392 kBKernelStack:        6976 kBPageTables:        26452 kBNFS_Unstable:          0 kBBounce:                0 kBWritebackTmp:          0 kBCommitLimit:     6213880 kBCommitted_AS:    3589736 kBVmallocTotal:   34359738367 kBVmallocUsed:           0 kBVmallocChunk:          0 kBHardwareCorrupted:     0 kBAnonHugePages:         0 kBShmemHugePages:        0 kBShmemPmdMapped:        0 kBCmaTotal:              0 kBCmaFree:               0 kBHugePages_Total:       0HugePages_Free:        0HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kBDirectMap4k:      147392 kBDirectMap2M:     4046848 kB

Я только что нашел это решение, и оно работает очень хорошо, создавая графический интерфейс через CLI:

# fixed linkgit clone https://github.com/aristocratos/bashtopcd bashtopbash bashtop

Screenshot

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

Как вы можете видеть на скриншоте, моя виртуальная машина имеет время безотказной работы 1ч3м, нагрузку 0,00, имеет 2,8 ГГц (виртуальный) процессор и 994 МБ (21%) оперативной памяти, доступной в системе.

Byobu in use

Однострочное решение и выход:

free -m | grep "Mem:"

Вот пример ожидаемого результата:

Mem:           3944         652         302          18        2990        2930

Я бы использовал Кактусы. Это покажет график использования вашей памяти и т.д. За определенный период времени, и вы сможете проверить использование с помощью своего веб-браузера.