Esta respuesta explica las acciones tomadas por el núcleo cuando se encuentra una situación OOM en función del valor de sysctl vm.overcommit_memory
.
Cuando overcommit_memory
se establece en 0 o 1, overcommit
está habilitado y los programas pueden asignar más memoria de la que realmente está disponible.
¿Qué sucede cuando nos quedamos sin memoria en esta situación? ¿Cómo decide el asesino OOM qué proceso matar primero?
linux
memory
out-of-memory
Ramesh
fuente
fuente
Respuestas:
Si la memoria se agota exhaustivamente por los procesos, en la medida en que posiblemente pueda amenazar la estabilidad del sistema, entonces el OOM asesino entra en escena.
NOTA: Es tarea del Asesino de OOM continuar eliminando procesos hasta que se libere suficiente memoria para el buen funcionamiento del resto del proceso que Kernel está intentando ejecutar.
El OOM Killer tiene que seleccionar los mejores procesos para matar. Lo mejor aquí se refiere a ese proceso que liberará la memoria máxima al matar y también es el menos importante para el sistema.
El objetivo principal es matar el menor número de procesos que minimiza el daño hecho y al mismo tiempo maximiza la cantidad de memoria liberada.
Para facilitar esto, el núcleo mantiene un
oom_score
para cada uno de los procesos. Puede veroom_score
cada uno de los procesos en el/proc
sistema de archivos en elpid
directorio.Cuanto mayor sea el valor de
oom_score
cualquier proceso, mayor es su probabilidad de ser asesinado por el OOM Killer en una situación sin memoria.¿Cómo se
OOM_Score
calcula el?Referencias
http://www.queryhome.com/15491/whats-happening-kernel-starting-killer-choose-which-process https://serverfault.com/a/571326
fuente