Desde Linux David Naranjo  

Lista la nueva version de earlyoom 1.4, una utilidad para evitar bloqueos por fata de memoria

earlyoom

A principios de año hablamos aquí en el blog sobre la utilidad Earlyoom, la cual después de realizar una discusión los desarrolladores de Fedora, se llegó a la aceptación por utilizar esta utilidad en Fedora 32 como un proceso de fondo, con lo cual pretenden mejorar la respuesta del sistema ante la falta de memoria y con ello evitar bloqueos.

Ahora varias semanas después y después de ocho meses de desarrollo, se dio a conocer el lanzamiento de la nueva versión de Earlyoom 1.4.

Para quienes desconocen del proyecto, deben saber que este es un subproceso de fondo que verifica periódicamente la cantidad de memoria disponible (MemAvailable, SwapFree) e intenta responder a una condición de falta de memoria en una etapa temprana. El código del proyecto está escrito en C y distribuido bajo la licencia MIT.

Si la cantidad de memoria disponible es menor que el valor especificado, earlyoom terminará por la fuerza (mediante el envío de SIGTERM o SIGKILL) el proceso del proceso que consume la mayor cantidad de memoria (que tiene el valor más alto /proc/*/oom_score), sin que el estado del sistema borre los búferes del sistema e interfiera con el trabajo intercambio (el controlador OOM (sin memoria) en el núcleo se activa cuando el estado de poca memoria ya ha alcanzado valores críticos y, por lo general, en este momento el sistema ya no responde a las acciones del usuario).

Earlyoom admite el envío de notificaciones de procesos forzados al escritorio (mediante el envío de notificaciones), y también proporciona la capacidad de definir reglas en las que se pueden usar expresiones regulares para especificar los nombres de procesos cuya finalización se prefiere (la opción “–prefer”) o se detiene que debe evitarse (opción –avoid).

¿Qué hay de nuevo en Earlyoom 1.4?

En esta nueva versión se destacan algunos cambios, de los cuales se menciona que trabajo en  la limpieza del código y que además debido a la carga demorada de los atributos del proceso, la lógica de selección de procesos para completar se acelera en un 50%.

Además de que también se implementó el restablecimiento de privilegios de root en el archivo de la unidad “systemd earlyoom.service”. Con este cambio se rompe la posibilidad de recibir notificaciones de GUI.

Para habilitar nuevamente las notificaciones GUI, se propone devolver los derechos de root descomentando la línea “DynamicUser =true“.

Aunque al deshabilitar root también hace que sea imposible obtener información sobre el consumo de memoria al montar /proc en modo hidepid= 1 u hidepid=2.

De los demás cambios que se destacan:

  • El UID del proceso terminado se refleja en el registro, además del PID y el nombre del proceso.
  • Se agregó resaltado del registro de depuración en gris claro.
  • Si es posible, se utilizó la declaración de variables locales a los bloques.
  • Se agregó la configuración PATH_LEN para reemplazar el valor del tamaño del búfer incrustado en el código.
  • Posibilidad de iniciar cppcheck si está disponible.
  • Se agregó la prueba de rendimiento “make bench”.
  • Conjunto de pruebas extendido (make test).

Finalmente si quieres conocer más al respecto sobre este lanzamiento, puedes consultar los detalles en el siguiente enlace. 

¿Cómo instalar earlyoom en Linux?

Para quienes estén interesados en poder probar esta utilidad, pueden hacerlo siguiendo las instrucciones que compartimos a continuación.

Earlyoom se encuentra dentro de los repositorios de algunas de las distribuciones de Linux populares, por lo que, en el caso de Debian, Ubuntu y cualquier derivado de estos, la instalación la pueden realizar con el siguiente comando:

sudo apt install earlyoom

Hecho esto ahora se debe habilitar el servicio con el comando:

sudo systemctl enable earlyoom

Y se inicia con:

sudo systemctl start earlyoom

Para el caso de Fedora y RHEL 8 con EPEL, se puede instalar con el siguiente comando:

sudo dnf install earlyoom

Y el servicio se activa con:

sudo systemctl enable --now earlyoom

Finalmente, para el caso de Arch Linux o cualquier otra derivada de este, la instalación se hace con el siguiente comando:

sudo pacman -S earlyoom

Y se activa el servicio con:

sudo systemctl enable --now earlyoom

Para el resto de las distribuciones de Linux, pueden realizar la instalación compilado el código de la utilidad.

Para obtener el código lo podemos hacer con el siguiente comando:

git clone https://github.com/rfjakob/earlyoom.git

cd earlyoom

Procedemos a realizar la compilación con:

make

E instalamos (si tienes Systemd):

sudo make install

O para quienes no tienen Systemd:

sudo make install-initscript

Y para utilizar el servicio lo haces con:

./earlyoom

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.