Limpieza de la caché de memoria en GNU/Linux (Bash)

En este artículo mostramos cómo liberar la caché de páginas, dentries e inodos del kernel de Linux mediante un sencillo script en Bash. Este procedimiento resulta útil para realizar pruebas de rendimiento, benchmarking o tareas concretas de administración del sistema.

Importante: Linux gestiona automáticamente la memoria de forma eficiente. La liberación manual de la caché no mejora el rendimiento de manera permanente y no debe utilizarse como una tarea habitual de mantenimiento.

🐧 Código del script para GNU/Linux (Bash)

#!/bin/bash

if [ "$EUID" -ne 0 ]; then
    echo "Debe ejecutar este script como root."
    exit 1
fi

echo "Estado de la memoria antes de liberar la caché:"
free -h

# Sincroniza los datos pendientes de escritura con el disco
sync

# Libera la caché de páginas, dentries e inodos
echo 3 > /proc/sys/vm/drop_caches

echo
echo "Estado de la memoria después de liberar la caché:"
free -h

Explicación del funcionamiento

El script realiza las siguientes acciones:

  1. Comprueba que se está ejecutando con privilegios de root.
  2. Muestra el estado actual de la memoria mediante free -h.
  3. Ejecuta sync para forzar la escritura en disco de los datos pendientes que permanecen en los buffers del sistema.
  4. Escribe el valor 3 en /proc/sys/vm/drop_caches, indicando al kernel que libere:

    • la caché de páginas (Page Cache),
    • las estructuras dentries,
    • la caché de inodos.

  5. Muestra nuevamente el estado de la memoria para observar el resultado.

¿Qué hace drop_caches?

El archivo /proc/sys/vm/drop_caches permite solicitar al kernel la liberación de determinadas estructuras de memoria caché.

Los valores más utilizados son:

Valor Acción
1 Libera únicamente la caché de páginas.
2 Libera las dentries y los inodos.
3 Libera la caché de páginas, las dentries y los inodos.

La memoria liberada volverá a utilizarse automáticamente cuando el sistema la necesite.

Consideraciones de seguridad

  • El script debe ejecutarse con privilegios de root.
  • No elimina datos de usuario ni archivos del sistema.
  • Puede producir una disminución temporal del rendimiento, ya que el kernel tendrá que volver a cargar en memoria la información que previamente se encontraba almacenada en la caché.
  • Su uso está recomendado para tareas de administración, pruebas de rendimiento o benchmarking, pero no como una medida habitual para mejorar el rendimiento del sistema.

Conclusión

Linux administra la memoria de forma automática y eficiente. La liberación manual de la caché es una herramienta útil en situaciones específicas, pero no sustituye a la gestión normal del kernel ni proporciona una mejora permanente del rendimiento.