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

«Какие существуют метрики использования памяти в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Linux понимание использования памяти требует анализа нескольких ключевых метрик, так как ядро активно использует кэши и буферы для повышения производительности.

Основные метрики и команды для их получения:

  1. 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.0Gi
    • available — самая важная метрика. Оценка памяти, доступной для запуска новых приложений без использования swap. Учитывает кэши (buff/cache), которые могут быть быстро освобождены.
    • buff/cache — память, используемая ядром для дисковых кэшей (Buffer) и кэша страниц (Cache). Это «хорошее» использование, ускоряющее работу системы.
  2. /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.
  3. 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
  4. Интерактивные мониторы (top, htop, glances):

    • Показывают %MEM для каждого процесса.
    • htop особенно нагляден, так как цветом выделяет разные типы использования памяти.

Почему free может показывать мало free, но много available? Linux стремится использовать свободную RAM для кэширования дисковых операций. Если приложению понадобится больше памяти, ядро быстро освободит часть кэша. Поэтому тревогу стоит бить, когда показатель available становится критически низким (менее 10% от total), а не когда мал free. Мониторинг swap-активности (si/so в vmstat 1) также критически важен — его активное использование указывает на нехватку RAM.