Desactivar OOM-Killer (out of memory killer) en Linux

El presente instructivo tiene como finalidad de desactivar la función del Kernel oom-killer.

El kernel de Linux asigna memoria a la demanda de las aplicaciones que se ejecutan en el sistema. Debido a que muchas aplicaciones asignan su memoria por adelantado y ha menudo no utilizan la memoria asignada, el kernel fue diseñado con la capacidad de “over-commit” de memoria, esto con la finalidad de hacer más eficiente el uso de la memoria. Este modelo de over-commit permite al núcleo asignar más memoria de la que realmente tiene físicamente disponible. Si un proceso utiliza realmente la memoria que fue asignada, el núcleo a continuación, proporciona estos recursos a la aplicación. Cuando varias aplicaciones comienzan a utilizar la memoria que le fueron asignadas, el modelo de over-commit puede ser problemático y el núcleo debe comenzar a “matar procesos” para mantenerse operativo. El mecanismo que el núcleo utiliza para recuperar la memoria en el sistema se conoce como “out-of-memory killer” o OOM-Killer.

Diagnóstico:

1. Verificar si el proceso oom-killer ha sido ejecutado en el sistema:

root@server:/# grep -i kill /var/log/messages*

2. Verificar uso de le memoria comando free

root@server:/# free -m

nota: Consultar interpretación comando free
3. verificar uso de la memoria comando vmstat

root@server:/# vmstat 3 50


Configuración:

El OOM-Killer puede desactivarse completamente, pero recomienda para entornos de producción, aunque existen proyectos oficiales tales como odoo(https://www.odoo-consultants.com/2016/01/23/improve-your-odoo-postgresql-performance/) o postgreSQL 9.5(https://www.postgresql.org/docs/9.5/static/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT) que si lo recomiendan.

El desactivar OOM_Killer puede causar que al momento de presentarse en el sistema una condición de falta de memoria, podría haber un comportamiento inesperado dependiendo de los recursos del sistema disponibles y la configuración. Este comportamiento inesperado podría ser cualquier cosa, desde un Kernel Panic hasta un bloqueo dependiendo de los recursos disponibles para el kernel en el momento de la condición OOM.

1. Para desactivar el OMM-Killer se debe, editar el archvio sysctl.conf

root@server:/# nano /etc/sysctl.conf

Agregar el siguiente cambio:
vm.overcommit_memory = 2

2. Aplicar los cambios:

root@server:/# systcl -p /etc/sysctl.conf

Nota:
La opción “vm.overcommit_memory = 2”, establece que el commit total de espacio de direcciones para el sistema no se le permite exceder de la cantidad de (memoria de intercambio swap + una cantidad configurable (por defecto es 50%) de RAM física). Dependiendo de la cantidad que utilice, en la mayoría de los casos un proceso no se eliminará mientras accede a las páginas, pero recibirá errores en la asignación de memoria según corresponda.
La política overcommit se establece mediante sysctl `vm.overcommit_memory ‘. La cantidad del exceso de compromiso se puede establecer mediante `vm.overcommit_ratio ‘(porcentaje) o` vm.overcommit_kbytes’ (valor absoluto).

Enlaces:
The Linux kernel supports the following overcommit handling modes
Cómo Configurar en Linux OOM_Killer
How to disable the oom killer in linux?

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s