Что означает поле ‘available’ в информации о памяти в Linux?

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

Ответ

В выводе команды free (начиная с ядра ~3.14) поле available — это оценка объема памяти, который доступен для запуска новых приложений без необходимости активного использования swap.

Ключевое отличие от free:

  • free — показывает память, которая прямо сейчас ничем не занята. Эта цифра часто мала, так как Linux активно использует свободную память для дискового кэша (page cache).
  • available — это free + часть кэшированной и буферизованной памяти, которую можно немедленно освободить для нужд приложений. Это наиболее точный показатель "свободной для использования" памяти.

Пример и анализ:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi        7.2Gi       1.1Gi       1.2Gi       6.9Gi       6.5Gi
Swap:         2.0Gi       0.0Ki       2.0Gi

Здесь:

  • free = 1.1 GiB — реально пустая память.
  • available = 6.5 GiB — память, которую можно выделить новому процессу. Разница (6.5Gi - 1.1Gi ≈ 5.4Gi) — это как раз та часть кэша (buff/cache), которую ядро может "отдать" при необходимости.

Для DevOps-практики: Мониторинг available критически важен для настройки алертинга. Оповещение о нехватке памяти должно срабатывать при низком значении available (например, < 10% от total), а не при низком free. Это предотвращает ложные срабатывания на системах с активным дисковым вводом-выводом.