¿Qué hará el sistema con el 20 % restante?
El núcleo utilizará la memoria física restante para sus propios fines (estructuras internas, tablas, búferes, cachés, lo que sea). La configuración de sobrecompromiso de memoria maneja las reservas de memoria virtual de la aplicación de usuario, el kernel no usa memoria virtual sino física.
¿Por qué se requiere este parámetro en primer lugar?
El overcommit_ratio
El parámetro es una opción de implementación diseñada para evitar que las aplicaciones reserven más memoria virtual de la que razonablemente estará disponible para ellas en el futuro, es decir, cuando realmente accedan a la memoria (o al menos lo intenten).
Ajuste overcommit_ratio
al 50% ha sido considerado un valor predeterminado razonable por los desarrolladores del kernel de Linux. Asume que el kernel nunca necesitará usar más del 50% de la memoria RAM física. Su kilometraje puede variar, por lo que es ajustable.
¿Por qué no debo configurarlo siempre al 100 %?
Configurarlo al 100 % (o cualquier valor "demasiado alto") no desactiva de manera confiable el compromiso excesivo porque no puede asumir que el núcleo usará el 0 % (o muy poco) de RAM.
No evitará que las aplicaciones se bloqueen, ya que el kernel podría apropiarse de todos modos de toda la memoria física que requiere.
Establecer la proporción en 100 % no reservará ningún espacio para páginas respaldadas por archivos o asignaciones en el kernel, como código del kernel, búferes de red, etc.
Las estructuras internas del kernel se asignarán independientemente, lo que provocará un compromiso excesivo. Por lo general, están limitados individualmente (por ejemplo, hay una configuración para los búferes de red). No creo que haya un límite general del 50 %, aunque un límite general es algo en lo que se ha trabajado con el fin de alojar contenedores.
Las páginas respaldadas por archivos son desde donde generalmente ejecuta el código del espacio de usuario, por lo que también necesita espacio para eso.