В чем разница между free и available памятью в Linux?

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

Ответ

В выводе команды free или top:

  • free — это физическая память, которая в данный момент абсолютно свободна и не содержит никаких данных. Это «холодная» память.
  • available — это оценка памяти, доступной для запуска новых приложений без подкачки (swapping). Она включает:
    • Весь free.
    • Часть кэша страниц (page cache) и буферов, которые могут быть немедленно освобождены, так как содержат данные, уже находящиеся на диске.

Почему available важнее free? Linux агрессивно использует свободную память для кэширования дисковых операций (Page Cache). Это ускоряет работу. Когда приложению нужна память, ядро быстро освобождает часть этого кэша. Поэтому available — более реалистичный показатель свободной памяти.

Пример:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           16Gi        5.2Gi       1.1Gi       512Mi       9.7Gi        10Gi
Swap:         2.0Gi       0.0Ki       2.0Gi

Здесь free всего 1.1 GiB, но available — 10 GiB. Это значит, что можно запустить приложения, использующие до ~10 GiB, прежде чем система начнёт использовать своп.