¿Qué hará el sistema con el 20% restante?
El kernel utilizará la memoria física restante para sus propios fines (estructuras internas, tablas, buffers, cachés, lo que sea). La configuración de sobrecompromiso de memoria maneja las reservas de memoria virtual de la aplicación del usuario, el núcleo no usa memoria virtual sino física.
¿Por qué se requiere este parámetro en primer lugar?
El overcommit_ratio
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 ellos en el futuro, es decir, cuando realmente accedan a la memoria (o al menos lo intenten).
La configuración overcommit_ratio
al 50% ha sido considerada un valor predeterminado razonable por los desarrolladores del kernel de Linux. Asume que el núcleo nunca necesitará usar más del 50% de la RAM física. Su kilometraje puede variar, la razón por la cual es sintonizable.
¿Por qué no siempre debería configurarlo al 100%?
Establecerlo al 100% (o cualquier valor "demasiado alto") no deshabilita de manera confiable el exceso de compromiso porque no puede suponer que el kernel usará 0% (o demasiado poco) de RAM.
No evitará que las aplicaciones se bloqueen, ya que el núcleo podría adelantarse a toda la memoria física que requiere.
Establecer la proporción al 100% no reservará espacio para páginas respaldadas por archivos o asignaciones en el núcleo, como código del núcleo, búferes de red, etc.
Las estructuras en el núcleo se asignarán independientemente, lo que provocará un exceso de compromiso. Generalmente están limitados individualmente (por ejemplo, hay una configuración para los buffers 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 propósito de alojar contenedores.
Las páginas respaldadas por archivos son donde normalmente ejecuta el código de espacio de usuario, por lo que también necesita espacio para eso.
fuente