IT-канал, просто о сложном
https://interface31.ru
Купить рекламу:
https://telega.in/c/interface31
Post #5618
2.86K

Как правильно определить количество свободной памяти в Linux
Классика жанра – почему у меня в системе не хватает памяти, если системный монитор или панель говорят, что памяти еще достаточно.
Сегодня снова задали такой вопрос, мол если верить Proxmox, то памяти еще хватает (занято 70%), но Zabbix начал сигналить о катастрофической нехватке памяти (занято свыше 90%). Кто не прав?
Чтобы это понять выполним в консоли команду:
И изучим ее вывод, он содержит несколько столбцов:
▫️ total: Общее количество установленной физической памяти.
▫️ used: Количество памяти, которое в настоящее время используется.
▫️ free: Свободная физической памяти, доступная для немедленного использования.
▫️shared: Память, которая разделяется между процессами, например, библиотеки, которые могут быть использованы несколькими процессами одновременно.
▫️ buffers/cache: Память, которая используется в качестве буферов для операций ввода-вывода и в качестве кэша для операций
▫️ available: Количество памяти, которая доступна для использования, учитывая, что часть памяти, используемая как buffers/cache может быть освобождена при необходимости.
Если сравнить то, что показывает Proxmox, системный монитор и т.д., то он показывает именно available. Так может нечего переживать? Все норм и Zabbiх зря нагоняет панику?
А вот и нет. Во-первых, не все буферы можно сбросить, во-вторых, сброс буферов – дорогая операция, так как в последующем вместо быстрого доступа к нужным данным из памяти мы получим медленное чтение и с диска.
И система, если процесс попросит памяти больше, чем free еще десять раз подумает, а сбрасывать ли буфер?
А помогать ей в этом будет OOM Killer, который ведет строгий учет всех запущенных процессов, оценивая их по множеству критериев и присваивая «очки негодности».
И альтернативой сброса буферов может оказаться убийство «негодного» процесса. И скорее всего так оно и произойдет. Хотя со стороны кажется, что память еще есть и можно развернуться.
На нашей практике примерно в такой же ситуации регулярно выключалась неактивная виртуалка. И администратор долго не мог понять почему, пока не посмотрел на вывод free, а не дашборды Proxmox.
Поэтому не следует верить тому, что показывают графики или индикаторы, все, на что вы можете железобетонно рассчитывать – это free, а available – это то, что могут дать, а могут догнать и еще раз дать. Учитывайте это.
И Zabbix в этом случае не нагоняет жути, а по сути прав, так как учитывает описанные выше особенности.
А на закуску можем посоветовать почитать наши статьи:
🔹 Что такое пространства подкачки и как они работают
🔹 Что такое OOM Killer и как он работает
Классика жанра – почему у меня в системе не хватает памяти, если системный монитор или панель говорят, что памяти еще достаточно.
Сегодня снова задали такой вопрос, мол если верить Proxmox, то памяти еще хватает (занято 70%), но Zabbix начал сигналить о катастрофической нехватке памяти (занято свыше 90%). Кто не прав?
Чтобы это понять выполним в консоли команду:
free – h
И изучим ее вывод, он содержит несколько столбцов:
▫️ total: Общее количество установленной физической памяти.
▫️ used: Количество памяти, которое в настоящее время используется.
▫️ free: Свободная физической памяти, доступная для немедленного использования.
▫️shared: Память, которая разделяется между процессами, например, библиотеки, которые могут быть использованы несколькими процессами одновременно.
▫️ buffers/cache: Память, которая используется в качестве буферов для операций ввода-вывода и в качестве кэша для операций
▫️ available: Количество памяти, которая доступна для использования, учитывая, что часть памяти, используемая как buffers/cache может быть освобождена при необходимости.
Если сравнить то, что показывает Proxmox, системный монитор и т.д., то он показывает именно available. Так может нечего переживать? Все норм и Zabbiх зря нагоняет панику?
А вот и нет. Во-первых, не все буферы можно сбросить, во-вторых, сброс буферов – дорогая операция, так как в последующем вместо быстрого доступа к нужным данным из памяти мы получим медленное чтение и с диска.
И система, если процесс попросит памяти больше, чем free еще десять раз подумает, а сбрасывать ли буфер?
А помогать ей в этом будет OOM Killer, который ведет строгий учет всех запущенных процессов, оценивая их по множеству критериев и присваивая «очки негодности».
И альтернативой сброса буферов может оказаться убийство «негодного» процесса. И скорее всего так оно и произойдет. Хотя со стороны кажется, что память еще есть и можно развернуться.
На нашей практике примерно в такой же ситуации регулярно выключалась неактивная виртуалка. И администратор долго не мог понять почему, пока не посмотрел на вывод free, а не дашборды Proxmox.
Поэтому не следует верить тому, что показывают графики или индикаторы, все, на что вы можете железобетонно рассчитывать – это free, а available – это то, что могут дать, а могут догнать и еще раз дать. Учитывайте это.
И Zabbix в этом случае не нагоняет жути, а по сути прав, так как учитывает описанные выше особенности.
А на закуску можем посоветовать почитать наши статьи:
🔹 Что такое пространства подкачки и как они работают
🔹 Что такое OOM Killer и как он работает
- 👍 32
- ❤ 7
- 🥱 3














