
La sobre-asignación de memoria lograda con memory_overcommit nos permite ejecutar mas programas y programas mas grandes en equipos con una variedad de configuraciones de memoria física asumiendo que muchos de los programas que están corriendo pidieron mas memoria que lo que en realidad están usando.
El kernel controla la asignación y sobre-asignación de memoria, dejando que un programa reserve mas memoria de la que hay disponible, esto no significa que en realidad esta cantidad de memoria se vaya a usar.
Uno puede manipular el valor de memory_overcommit en el kernel con los valores 0, 1 o 2. Cada uno de estos valores afectan de la siguiente forma la asignación de memoria:
Cuando podemos asignar 1 a memory_overcommit?
Esta practica es muy común en situaciones donde podemos estar seguros de que no vamos usar toda la RAM que estamos asignándole a estos proceso, por ejemplo en un ambiente de virtualizacion. Tenemos un servidor real con 3GB de RAM, podemos fácilmente crear mas de 6 servidores virtuales, cada uno con 512MB de RAM... sera muy difícil que cada uno de estos servers usen los 512MB al mismo tiempo y dejen al kernel sin RAM.
Cuando asignar memory_overcommit a 2?
En ocasiones hace falta desactivar por completo la sobre-asignación de memoria, usemos el caso de postrgres que ya tiene un sistema para protegerse de esto. Cuando se queda sin memoria, simplemente aborta la transacción y el servicio sigue corriendo sin problema alguno. El usuario puede volver a intentar el query y si la falta de memoria era temporal pues es muy posible que el query pase.
Si tenemos un servidor dedicado a Postgres y no asignamos 2 a memory_overcommit el va a pensar que tiene mas memoria de la disponible y va a intentar usarla por tanto en el caso anterior Posrgres intentara procesar el query que requería mas memoria de la que el sistema disponía. Tan pronto el kernel se de cuenta de que en realidad no tenia esa cantidad de RAM, el kernel matara este proceso y el servicio sera terminado forzosamente, todos los procesos activos serán terminados y las conexiones serán cerradas.
Articulos vinculados:
Archivos swap y paralelización de espacio swap.
Cuanto le pongo de swap a mi instalación de Linux?.
Articulo fuente: Sobre-asignación de memoria
Comentarios
Enviar nuevo comentario