He estado investigando el exceso de memoria en Linux usando /proc/sys/vm/overcommit_memory
, y he leído algunos artículos que no dicen lo mismo.
Este documento , bajo el encabezado "Ir en la dirección equivocada", continúa diciendo, "valores 1: hacer un exceso de compromiso y 0 (predeterminado): no", pero luego en las siguientes líneas, menciona, entre otros cosas, que esto no es realmente cierto y que 0 significa "adivinar cuánto es sobrecompromiso razonable". Eso significa que el exceso de memoria no se deshabilita con el valor 0, ¿verdad?
También dice que 1 indica "nunca rechazar ningún malloc ()", con 2 que significa "sea preciso sobre el exceso de compromiso: nunca confirme un espacio de dirección virtual mayor que el espacio de intercambio más una fracción de exceso de proporción de la memoria física".
La revista Red Hat , por otro lado, dice: "si el valor es 0, entonces el núcleo verifica para determinar si hay suficiente memoria libre para otorgar una solicitud de memoria a una llamada malloc desde una aplicación. Si hay suficiente memoria, entonces se concede la solicitud. De lo contrario, se deniega y se devuelve un código de error a la aplicación ". Esto suena exactamente como deshabilitar el exceso de compromiso.
"Si el valor se establece en 1, el kernel otorga asignaciones por encima de la cantidad de RAM física e intercambia en el sistema según lo definido por el valor overcommit_ratio ... Si la configuración en este archivo es 2, el kernel permite todas las asignaciones de memoria , independientemente del estado actual de asignación de memoria ". En términos de valores 1 y 2, eso es lo contrario de lo que dijo el documento anterior, ¿verdad?
¿Alguien sabe qué es realmente correcto y si es posible 'deshabilitar' el exceso de compromiso?
Respuestas:
La revista Red Hat tuvo 1 y 2 invertidos. Tenga cuidado con los errores que pueden evitar la desactivación de la sobrecompromiso para que funcione de esa manera: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/345601
fuente