¿Cómo determina Linux qué proceso finalizar?
sobes.tech AI
Respuesta de la IA
Linux utiliza el algoritmo OOM (Out-Of-Memory) Killer para determinar qué procesos deben finalizarse cuando el sistema no tiene suficiente memoria RAM. Este algoritmo analiza varias métricas para seleccionar procesos con el menor impacto negativo en el sistema al ser terminados.
Factores principales que considera el OOM Killer:
oom_score: Indicador numérico que refleja el probable impacto de finalizar un proceso en el sistema. Cuanto mayor sea la puntuación, más probable es que el proceso sea seleccionado para terminarse. Esta puntuación se calcula en función del consumo de memoria del proceso, la prioridad del proceso (valor nice) y otros factores.- Cantidad de memoria utilizada: Los procesos que consumen una gran cantidad de memoria generalmente tienen un
oom_scoremás alto. - Prioridad del proceso: Los procesos con menor prioridad (valor nice más alto) tienen más probabilidades de ser terminados.
- Tiempo de vida del proceso: Los procesos más "jóvenes" pueden tener un
oom_scoremás alto. - Proceso padre: El OOM Killer intenta no terminar procesos críticos del sistema o procesos de los que dependen otros procesos importantes.
El usuario puede influir en el comportamiento del OOM Killer modificando el valor de oom_score_adj para procesos específicos. Este desplazamiento se suma al oom_score base, permitiendo hacer que un proceso sea menos o más probable de ser finalizado.
# Ver el oom_score actual para el proceso con PID 1234
cat /proc/1234/oom_score
# Ver el oom_score_adj actual para el proceso con PID 1234
cat /proc/1234/oom_score_adj
# Establecer el valor mínimo de oom_score_adj (-1000) para el proceso con PID 1234
# Esto prácticamente garantiza que el proceso no será finalizado por el OOM Killer
echo -1000 > /proc/1234/oom_score_adj
De esta manera, Linux determina qué proceso finalizar en condiciones de escasez de memoria, basándose en un algoritmo complejo que pondera diversos factores para minimizar las consecuencias negativas en la estabilidad del sistema.