Содержание статьи

В Linux мониторинг памяти позволяет определить, какие процессы потребляют ресурсы и как распределяется оперативная память между системой и приложениями. Встроенные консольные инструменты дают точные данные о текущем состоянии памяти без установки стороннего ПО.
Команда free отображает общий объем памяти, используемой и свободной, включая буферы и кэш. Это позволяет быстро оценить, сколько памяти реально доступно для приложений в данный момент.
Утилита top предоставляет интерактивный просмотр процессов с указанием их потребления памяти в процентах и килобайтах. Можно отсортировать процессы по памяти, чтобы выявить наиболее «тяжелые» приложения.
Команды vmstat и smem дают более детальную информацию о распределении памяти и использовании swap. Эти инструменты полезны для анализа нагрузки на систему и оптимизации процессов.
Файл /proc/meminfo содержит подробные показатели о кэше, буферах, свободной и занятой памяти. Чтение этого файла через консоль позволяет получить точные данные для диагностики проблем с производительностью.
Проверка общего объема памяти командой free

Команда free отображает текущий объем оперативной памяти, доступной и используемой системой. Она показывает разделение на физическую память, swap и буферы/кэш, что позволяет оценить реальную нагрузку на память.
Простейший вызов команды:
free -h
| Тип памяти | Всего | Используется | Свободно | Буферы/Кэш |
|---|---|---|---|---|
| Mem | 8G | 5.2G | 2.8G | 1.3G |
| Swap | 2G | 0.5G | 1.5G | — |
Колонка Mem показывает физическую память, Swap – использование виртуальной памяти. Столбец Буферы/Кэш учитывает временно используемую память для ускорения операций. Для оценки доступной памяти под приложения ориентируйтесь на сумму Свободно и Буферы/Кэш.
Чтобы обновлять данные в реальном времени, используйте:
watch -n 2 free -h
Отслеживание использования памяти с помощью top

Команда top показывает динамическую таблицу процессов с указанием их потребления ресурсов, включая память. Она обновляется в реальном времени, позволяя отслеживать пиковую нагрузку и выявлять процессы с высокой памятью.
Запуск команды:
top
Mem: общий объем, использованная и свободная память, буферы и кэш.
Swap: размер и использование swap.
Список процессов содержит столбцы:
PID – идентификатор процесса, USER – владелец процесса, RES – реальное использование оперативной памяти, %MEM – процент от общей памяти.
Для сортировки по памяти нажмите Shift + M. На первом месте окажется процесс с наибольшим потреблением. Это позволяет быстро определить «тяжелые» приложения и при необходимости завершить их.
Для мониторинга конкретного процесса используйте фильтр top -p , что полезно при анализе нагрузки отдельных служб или приложений.
Использование команды vmstat для мониторинга памяти

Простейший вызов:
vmstat 2 5
выведет статистику каждые 2 секунды, 5 раз. Колонки free и buff/cache отражают доступную память, si и so показывают объем чтения и записи на swap в килобайтах.
Для оценки нагрузки важно следить за столбцами:
r – количество процессов в очереди на выполнение, free – свободная память, si/so – активность swap. Высокие значения si и so указывают на недостаток RAM и необходимость оптимизации процессов или увеличения памяти.
Использование опции vmstat -s позволяет получить суммарные показатели с начала загрузки системы: общий объем памяти, использованную, свободную, swap и буферы. Эти данные помогают выявить хроническое переполнение памяти и определить ресурсоемкие процессы.
Просмотр распределения памяти по процессам через ps

Команда ps позволяет получить список процессов с подробным указанием потребления памяти каждым процессом. Она особенно полезна для выявления приложений, которые занимают наибольшую часть RAM.
Пример команды для сортировки по использованию памяти:
ps aux --sort=-%mem | head -n 10
Для мониторинга конкретного процесса применяют фильтр по имени:

ps -C <имя_процесса> -o pid,%mem,rss,cmd
Команда отображает PID, процент использования памяти, реальный объем памяти и команду запуска. Это позволяет отслеживать изменения потребления ресурсов выбранного процесса.
Регулярная проверка с помощью ps помогает выявлять утечки памяти и процессы с постепенно увеличивающимся потреблением RAM, что важно для поддержания стабильной работы системы.
Анализ потребления памяти с помощью smem

Утилита smem предоставляет детализированную информацию о распределении памяти между процессами, включая общую, резидентную и пропорциональную память. Она полезна для точного анализа загрузки RAM и выявления скрытых «тяжелых» процессов.
Основные команды и их применение:
smem -r– сортировка по памяти, помогает быстро определить процессы с максимальной нагрузкой.
Пример практического применения:
- Выявление процессов с высоким PSS для точной оценки нагрузки на память.
- Анализ распределения памяти между пользователями или группами процессов.
- Сравнение использования RAM до и после запуска ресурсоемких приложений для диагностики утечек памяти.
Использование smem позволяет получать более точные данные, чем ps или top, так как учитывает совместное использование библиотек и кэш, что важно при оптимизации серверов и рабочих систем.
Проверка кэша и буферов командой cat /proc/meminfo

Файл /proc/meminfo содержит детальную информацию о состоянии памяти в системе, включая кэш, буферы, свободную и занятую RAM. Чтение этого файла позволяет оценить реальную доступность памяти и работу системы с кэшированием.
Простейшая команда для просмотра:
cat /proc/meminfo
Основные поля для анализа:
- MemTotal – общий объем физической памяти.
- MemFree – фактически свободная память.
- Cached – память, занятая кэшированием файлов.
- SwapTotal и SwapFree – общий и свободный объем swap.
Практические рекомендации:
- Для оценки доступной памяти суммируйте MemFree + Buffers + Cached.
- Регулярно проверяйте рост SwapUsed, чтобы выявить недостаток RAM.
- Используйте фильтр для ключевых полей:
grep -E 'MemTotal|MemFree|Buffers|Cached|SwapTotal|SwapFree' /proc/meminfo, чтобы быстро получить необходимые показатели. - Сравнивайте значения до и после запуска приложений для диагностики утечек памяти и оценки влияния кэша на производительность.
Вопрос-ответ:
Как узнать, сколько памяти реально доступно для приложений в Linux?
Для оценки доступной памяти используйте команду free -h. Обратите внимание на сумму полей free и buffers/cache в строке Mem. Эти значения показывают, сколько памяти может быть использовано приложениями без увеличения swap. Также можно анализировать /proc/meminfo, суммируя MemFree, Buffers и Cached.
Почему процесс занимает много памяти по top, но фактически система не испытывает дефицита RAM?
Команда top показывает резидентную память процесса (RSS), но часть памяти может быть занята кэшем и буферами, которые система может освободить при необходимости. Поэтому высокий RSS не всегда означает проблему с доступной RAM. Для точной оценки используйте smem, который учитывает пропорциональное распределение памяти и совместное использование библиотек.
Как отследить процессы, вызывающие активное использование swap?
Команда vmstat 2 позволяет наблюдать показатели si и so, которые показывают чтение и запись в swap. Чтобы найти конкретные процессы, задействующие swap, используйте smem -rs swap, сортируя процессы по использованию swap. Это помогает выявить приложения, которые вызывают избыточное обращение к виртуальной памяти.
Можно ли получать обновляемую информацию о памяти в реальном времени через консоль?
Да, для этого применяют команды с периодическим обновлением. Например, watch -n 2 free -h обновляет таблицу использования памяти каждые 2 секунды. top выводит интерактивный список процессов с указанием потребления RAM. Эти инструменты позволяют отслеживать изменения при запуске приложений или при росте нагрузки на систему.
Как проверить, сколько памяти занимает конкретный процесс?
Используйте команду ps -C <имя_процесса> -o pid,%mem,rss,cmd. Колонка RSS показывает реальное использование оперативной памяти, а %MEM — процент от общей RAM. Для более точного анализа с учетом совместного использования библиотек применяют smem -C <имя_процесса>, который выводит USS, PSS и RSS, позволяя понять, сколько памяти реально удерживает процесс.
