Protege tu sistema Linux cuando la memoria se agota

earlyoom: Protege tu sistema Linux cuando la memoria se agota

Si alguna vez has visto cómo tu sistema Linux se vuelve completamente “irresponsable”, el ratón deja de moverse y no te queda otra que pulsar el botón de reinicio… este artículo es para ti. Vamos a hablar de earlyoom, una pequeña herramienta que puede salvarte de esos momentos de desesperación.

earlyoom significa Early Out Of Memory Killer, o en español, “matador de procesos por falta de memoria anticipado”. Es un pequeño programa que se ejecuta en segundo plano y vigila constantemente cuánta memoria libre le queda a tu sistema.

Su misión es simple: cuando la memoria empieza a agotarse, actuar antes de que el sistema colapse.

El kernel de Linux incluye su propio mecanismo para gestionar situaciones de falta de memoria, llamado OOM Killer (Out Of Memory Killer). Este se encarga de matar procesos cuando el sistema se queda sin RAM.

El problema es que el OOM Killer del kernel actúa demasiado tarde. Para cuando decide intervenir, el sistema ya lleva segundos (o minutos) completamente bloqueado: las aplicaciones no responden, el escritorio se congela y lo único que puedes hacer es esperar o reiniciar a la fuerza.

earlyoom soluciona esto actuando de forma preventiva. No espera a que todo se hunda: vigila la memoria disponible continuamente y, cuando baja de un límite que tú defines, toma medidas antes de que el sistema llegue al colapso. Trabaja en segundo plano como un servicio del sistema (un daemon). Cada pocos segundos revisa cuánta memoria RAM y cuánto espacio de swap quedan libres.

¿Qué es la swap? Es un espacio en el disco duro que el sistema usa como “memoria de emergencia” cuando la RAM se llena. Es mucho más lenta que la RAM, pero permite que el sistema siga funcionando un poco más antes de colapsar.

Cuando la memoria disponible cae por debajo de un umbral (por defecto el 10% de la RAM y el 10% de la swap), earlyoom busca el proceso que más memoria está consumiendo y que menos “importancia” tiene para el sistema, y lo cierra forzosamente.

Para decidir qué proceso cerrar, utiliza una puntuación interna que el propio kernel de Linux asigna a cada proceso, llamada OOM score. Cuanto más alta es la puntuación, más candidato es ese proceso para ser eliminado. En la práctica, esto significa que earlyoom tenderá a cerrar el navegador con 40 pestañas abiertas antes que el proceso que gestiona tu sesión de escritorio.

El resultado es que, en lugar de un sistema bloqueado durante minutos, simplemente ves que una aplicación se cierra de golpe, y el resto del sistema sigue funcionando con normalidad.

Instalación

Los paquetes de instalación se encuentran en los repositorios de las distribuciones más populares.

Ubuntu y Debian

sudo apt update
sudo apt install earlyoom

Arch Linux y Manjaro

sudo pacman -S earlyoom

Fedora

sudo dnf install earlyoom

openSUSE

sudo zypper install earlyoom

Desde el código fuente (cualquier distribución)

Si tu distribución no tiene earlyoom en sus repositorios oficiales, puedes compilarlo tú mismo. Necesitarás tener instalado git y gcc:

git clone https://github.com/rfjakob/earlyoom.git
cd earlyoom
make
sudo make install

Una vez instalado, lo más cómodo es configurarlo para que se inicie automáticamente con el sistema:

# Activarlo e iniciarlo ahora mismo
sudo systemctl enable --now earlyoom

# Comprobar que está funcionando
sudo systemctl status earlyoom

Si el servicio está activo, verás algo como active (running) en la salida del último comando. A partir de ese momento, earlyoom estará vigilando tu memoria en todo momento.

La configuración de earlyoom se hace, dependiendo de la distribución, editando un archivo de configuración o modificando los parámetros con los que se lanza el servicio.

En Ubuntu y Debian: el archivo de configuración

El archivo de configuración está en /etc/default/earlyoom. Puedes editarlo con:

sudo nano /etc/default/earlyoom

Dentro encontrarás una línea similar a esta:

EARLYOOM_ARGS="-m 10 -s 10"

Aquí puedes ajustar los parámetros que quieras. Después de modificarlo, reinicia el servicio para que los cambios surtan efecto:

sudo systemctl restart earlyoom

En Arch y otras distribuciones: archivo de servicio

En distribuciones que no tienen ese archivo de configuración, puedes editar el servicio directamente:

sudo systemctl edit earlyoom

Y añadir los parámetros en la sección correspondiente.

Estos son los ajustes que más te interesará conocer como usuario principiante-medio:

-m — Umbral de RAM

Define a qué porcentaje de RAM libre earlyoom empieza a actuar.

-m 5

Con este valor, earlyoom intervendrá cuando quede menos del 5% de RAM libre. El valor por defecto es 10%.

-s — Umbral de swap

Lo mismo pero para la memoria swap.

-s 5

-r — Intervalo de comprobación

Cada cuántos segundos earlyoom revisa la memoria. Por defecto es 1 segundo.

-r 2

--prefer — Priorizar ciertos procesos

Le dice a earlyoom que, si tiene que elegir, prefiera matar un proceso concreto. Acepta expresiones regulares.

--prefer '^firefox'

Esto haría que Firefox, por ejempolo, sea el primero en la lista de candidatos a ser cerrado.

--avoid — Proteger ciertos procesos

Lo contrario: le dice a earlyoom que intente no matar un proceso determinado.

--avoid '^bash'

Así protegerías las terminales de bash de ser cerradas.

-n — Notificaciones de escritorio

Si usas un escritorio gráfico, puedes pedirle a earlyoom que te muestre una notificación cuando tenga que matar un proceso:

-n

Ejemplo de configuración completa

Esta sería una configuración razonable para un usuario de escritorio con 8 GB de RAM:

EARLYOOM_ARGS="-m 5 -s 10 -n --avoid '^(sshd|bash|zsh)'"

Con esto, earlyoom actuará cuando quede menos del 5% de RAM (unos 400 MB) o menos del 10% de swap, mostrará notificaciones y evitará cerrar terminales o conexiones SSH.

Pros y contras

✅ Ventajas

  • Evita los cuelgues totales. Su principal baza: en lugar de un sistema bloqueado durante minutos, simplemente se cierra una aplicación y todo sigue funcionando.

  • Muy ligero. Consume una cantidad de CPU y memoria prácticamente insignificante. No notarás que está ahí.

  • Fácil de instalar y activar. Con dos comandos ya está funcionando. No requiere configuración obligatoria para empezar.

  • Configurable. Puedes ajustar los umbrales, proteger procesos importantes y decidir qué aplicaciones sacrificar primero.

  • Ideal para equipos con poca RAM. Si tienes 4 GB o menos, earlyoom puede marcar una diferencia enorme en la estabilidad del sistema.

  • Notificaciones. Puedes saber cuándo ha actuado y qué proceso ha cerrado, lo que te ayuda a identificar qué está comiendo tu memoria.

❌ Desventajas

  • Puede cerrar trabajo sin guardar. Si earlyoom decide matar tu editor de texto o tu suite ofimática, perderás los cambios que no hayas guardado. No hay forma de evitarlo.

  • No soluciona el problema de raíz. Si una aplicación consume toda la memoria, earlyoom la cerrará, pero el problema real es esa aplicación. earlyoom es un parche, no una solución definitiva.

  • Puede cerrar el proceso equivocado. Aunque usa el OOM score del kernel para elegir, a veces puede cerrar una aplicación que no esperabas. Es poco frecuente, pero ocurre.

  • No siempre disponible en repositorios. Algunas distribuciones menos populares no tienen earlyoom en sus repositorios oficiales y hay que compilarlo manualmente.

  • Requiere afinar la configuración. Los valores por defecto son conservadores. En sistemas con poca RAM puede que necesites ajustar los umbrales para que actúe antes.

Si tienes un equipo con poca memoria, usas aplicaciones que consumen mucha RAM (navegadores con muchas pestañas, máquinas virtuales, editores de video) o simplemente quieres un sistema más estable y resistente, earlyoom merece un hueco en tu instalación de Linux.