Добавить в корзинуПозвонить
Найти в Дзене

Free или Available memory в Linux

В очередной раз сталкиваюсь с тем, что администраторы не понимают разницу между этими двумя показателями оперативной памяти в Linux. Например, команда free -m может дать нам такой вывод: total used free shared buff/cache available Mem: 60169 27996 9001 8472 23171 22576 На первый взгляд может показаться, что все хорошо, ведь доступно еще практически треть памяти. Но на самом деле не очень. Потому как свободно всего 9 ГБ. Почему так? Для этого нужно углубиться в принципы организации памяти в Linux. Кроме занятой процессами памяти – used в системе присутствует еще буферы и кеш - buff/cache, которые содержат разделяемые библиотеки, буферы ввода-вывода и т.д. и т.п., что позволяет системе меньше обращаться к диску. Можем ли мы сбросить буферы и очистить кеш? Да, можем, но когда после этого приложению потребуется какие-то данные или вызов библиотеки – то все это снова будет подгружено с жесткого диска и вполне может оказаться, что сделали мы только хуже, так как производительност

Free или Available memory в Linux

В очередной раз сталкиваюсь с тем, что администраторы не понимают разницу между этими двумя показателями оперативной памяти в Linux.

Например, команда free -m может дать нам такой вывод:

total used free shared buff/cache available

Mem: 60169 27996 9001 8472 23171 22576

На первый взгляд может показаться, что все хорошо, ведь доступно еще практически треть памяти. Но на самом деле не очень. Потому как свободно всего 9 ГБ.

Почему так? Для этого нужно углубиться в принципы организации памяти в Linux. Кроме занятой процессами памяти – used в системе присутствует еще буферы и кеш - buff/cache, которые содержат разделяемые библиотеки, буферы ввода-вывода и т.д. и т.п., что позволяет системе меньше обращаться к диску.

Можем ли мы сбросить буферы и очистить кеш? Да, можем, но когда после этого приложению потребуется какие-то данные или вызов библиотеки – то все это снова будет подгружено с жесткого диска и вполне может оказаться, что сделали мы только хуже, так как производительность системы на некоторое время упрется в производительность дисков, пока снова не будет заполнен кеш.

Поэтому в данной ситуации рассчитывать на 22,5 ГБ доступной памяти будет крайне неосмотрительно. В лучшем случае система может посчитать, что ей выгоднее сбросить страницы приложений в своп, вместо очистки кеша.

А в худшем в вовсе может решить, что сохранить кеш важнее, нежели сохранить процесс и застрелит его при помощи OOM Killer.

Кстати, системы мониторинга, тот же Zabbix будут смотреть именно на свободную память и выдавать вам алерты при ее исчерпании, хотя доступной памяти может быть еще много.

Также рекомендуем прочесть следующие статьи:

🔹 Linux - начинающим. Что такое пространства подкачки и как они работают

🔹 Linux - начинающим. Что такое OOM Killer и как он работает