Ответ
В Linux понимание использования памяти требует анализа нескольких ключевых метрик, так как ядро активно использует кэши и буферы для повышения производительности.
Основные метрики и команды для их получения:
-
free -h(основная команда для быстрой оценки):$ free -h total used free shared buff/cache available Mem: 7.8Gi 1.8Gi 2.1Gi 250Mi 3.9Gi 5.5Gi Swap: 2.0Gi 0.0Gi 2.0Giavailable— самая важная метрика. Оценка памяти, доступной для запуска новых приложений без использования swap. Учитывает кэши (buff/cache), которые могут быть быстро освобождены.buff/cache— память, используемая ядром для дисковых кэшей (Buffer) и кэша страниц (Cache). Это «хорошее» использование, ускоряющее работу системы.
-
/proc/meminfo(детальный источник всех данных):$ grep -E "^(MemTotal|MemFree|Buffers|Cached|Shmem|SReclaimable|SUnreclaim|SwapTotal|SwapFree)" /proc/meminfo MemTotal: 8175848 kB MemFree: 2150400 kB Buffers: 244120 kB Cached: 3896500 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB- Позволяет точно рассчитать реально используемую память:
Used = MemTotal - MemFree - Buffers - Cached.
- Позволяет точно рассчитать реально используемую память:
-
vmstat -s(сводная статистика в удобном формате):$ vmstat -s 8175848 K total memory 2150400 K used memory 3896500 K active memory 2441200 K inactive memory 4025448 K free memory 244120 K buffer memory 3896500 K swap cache -
Интерактивные мониторы (
top,htop,glances):- Показывают
%MEMдля каждого процесса. htopособенно нагляден, так как цветом выделяет разные типы использования памяти.
- Показывают
Почему free может показывать мало free, но много available? Linux стремится использовать свободную RAM для кэширования дисковых операций. Если приложению понадобится больше памяти, ядро быстро освободит часть кэша. Поэтому тревогу стоит бить, когда показатель available становится критически низким (менее 10% от total), а не когда мал free. Мониторинг swap-активности (si/so в vmstat 1) также критически важен — его активное использование указывает на нехватку RAM.