Что будет делать система с оставшимися 20%?
Ядро будет использовать оставшуюся физическую память для своих собственных целей (внутренние структуры, таблицы, буферы, кэши и т. Д.). Параметр overcommitment памяти обрабатывает резервирование виртуальной памяти пользовательского приложения, ядро использует не виртуальную, а физическую память.
Почему этот параметр требуется в первую очередь?
overcommit_ratio
Параметр является выбором реализации предназначена для предотвращения приложений резервировать больше виртуальную память , чем будет разумно быть доступны для них в будущем, то есть , когда они на самом деле доступ к памяти (или по крайней мере попытаться).
Установка overcommit_ratio
на 50% считается разумным значением по умолчанию разработчиками ядра Linux. Предполагается, что ядру никогда не потребуется использовать более 50% физической памяти. Ваш пробег может варьироваться, причина, по которой он настраивается.
Почему я не всегда должен устанавливать его на 100%?
Установка его на 100% (или любое «слишком высокое» значение) не может надежно отключить чрезмерную загрузку, поскольку вы не можете предполагать, что ядро будет использовать 0% (или слишком мало) ОЗУ.
Это не предотвратит сбой приложений, поскольку ядро может в любом случае выгружать всю физическую память, которая ему требуется.
Установка соотношения в 100% не зарезервирует никакого пространства для страниц с файловой поддержкой или для выделения в ядре, например кода ядра, сетевых буферов и т. Д.
Внутриядерные структуры будут размещаться независимо, вызывая чрезмерную загрузку. Они обычно ограничены индивидуально (например, есть настройка для сетевых буферов). Я не думаю, что общий лимит составляет 50%, хотя общий лимит - это то, над чем работали для размещения контейнеров.
Страницы с файловой поддержкой - это то место, откуда вы обычно запускаете код пользовательского пространства, поэтому для этого вам также нужно место.
источник