Является ли кэшированная память свободной?

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

Ответ

Нет, кэшированная память (buffers/cache) не считается свободной в классическом понимании. Она занята ядром Linux для ускорения операций ввода-вывода, например, для кэширования часто читаемых файлов или отложенной записи (write-back).

Ключевые моменты:

  • Назначение: Ускорение доступа к диску. Если данные уже в кэше, не нужно обращаться к медленному диску.
  • Поведение при нехватке памяти: Ядро может быстро освободить эту память, если приложению потребуется больше RAM. Поэтому в утилите free есть колонка available — это оценка памяти, которую можно использовать для новых процессов без свопинга, включая часть кэша.
  • Анализ: Смотреть нужно не на free, а на available.

Пример вывода free -h:

               total        used        free      shared  buff/cache   available
Mem:            15Gi        10Gi       500Mi       1.0Gi        4.5Gi        3.8Gi
Swap:          2.0Gi       0.0Ki       2.0Gi

Здесь buff/cache = 4.5 GiB, free = 500 MiB, но available = 3.8 GiB. Для системы доступно около 3.8 GiB, так как часть кэша может быть освобождена.