Что произойдет, если объем свободной памяти (vm.min_free_kbytes) окажется слишком малым?

Что произойдет, если объем свободной памяти (vm.min_free_kbytes) окажется слишком малым?

Я наткнулся на следующий параметр в настройках ядра (в sysctl):

vm.min_free_kbytes

Это объем свободной памяти (ОЗУ), которая всегда свободна, несмотря ни на что. В моем случае у меня всего 1 ГиБ ОЗУ, и этот параметр был установлен примерно на 64 МБ. Я подумал, что это довольно много, поэтому я снизил его до 8 МБ. Я не знаю, смогу ли я снизить его еще больше, или снижение его до 8 МБ может вызвать какие-либо проблемы, поэтому вопрос в том, что произойдет, если объем свободной памяти будет слишком низким? Могу ли я безопасно снизить значение до 1 МБ?

решение1

Должно быть безопасно, но не могу гарантировать. Из документации ядра:

min_free_kbytes:

This is used to force the Linux VM to keep a minimum number
of kilobytes free.  The VM uses this number to compute a
watermark[WMARK_MIN] value for each lowmem zone in the system.
Each lowmem zone gets a number of reserved free pages based
proportionally on its size.

Some minimal amount of memory is needed to satisfy PF_MEMALLOC
allocations; if you set this to lower than 1024KB, your system will
become subtly broken, and prone to deadlock under high loads.

Setting this too high will OOM your machine instantly.

По сути, если вы установите его на низкое значение, у вас возникнут проблемы с распределением памяти.

Связанный контент