Ответ
В выводе команды 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. Это предотвращает ложные срабатывания на системах с активным дисковым вводом-выводом.