Lista la nueva versión de earlyoom 1.4, una utilidad para evitar bloqueos por falta 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.

Artículo relacionado:
Earlyoom el subproceso que se incluirá en Fedora 32 para evitar los bloqueos por falta de memoria

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


5 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Infogon dijo

    Un detalle del titulo: «fata de memoria»

    1.    David Naranjo dijo

      Gracias por la observación. Saludos! 🙂

  2.   LinuxmanR4 dijo

    Creo que hay un detalle con la instalación en Manjaro (derivada de Arch). No encontré el paquete en los repositorios normales.

    Así que la instalación debería de ser mediante yaourt.

    yaourt earlyoom

    ¡Saludos!

    1.    David Naranjo dijo

      En Arch, esta dentro del repositorio community el cual tiene que estar habilitado en pacman.conf. De igual forma como mencionas tambien está en AUR.

      Gracias por la observación 😀

  3.   Fran Pavón dijo

    Hola, quiero que este servicio se inicie en MXLinux cada vez que enciendo el ordenador sin tener que poner el comando en terminal, ¿cómo puedo hacerlo?