Swap, hibernación y zRAM: cómo gestionar mejor la RAM
La memoria es uno de los recursos más críticos de cualquier sistema. En Linux tenemos varias herramientas para evitar que el equipo se quede sin RAM: la swap (partición o archivo), la hibernación y la zRAM/zswap para comprimir páginas en memoria. En esta guía te explico qué es cada cosa, cuándo conviene usarlas y cómo configurarlas paso a paso.
¿Qué es la swap?
La swap es espacio en disco que el kernel usa como “válvula de escape” cuando la RAM se agota o cuando decide mover a disco páginas poco usadas para liberar memoria. Puede ser una partición dedicada o un archivo dentro de tu sistema de archivos.
- Partición swap: tradicional, muy estable. Requiere redimensionar discos si querés cambiar el tamaño.
- Archivo swap: flexible, se crea y ajusta con comandos, ideal en SSDs y equipos ya instalados.
Comprueba si tenés swap activa:
$ swapon --show<br>$ free -h
¿Cuánta swap necesito?
- Sin hibernación: equipos con 8–16 GB de RAM suelen ir bien con 1–4 GB de swap (o incluso menos si usás zRAM/zswap).
- Con hibernación: la swap debe ser ≈ igual a tu RAM (o mayor) para poder volcar la memoria. Algunas distros recomiendan RAM × 1.1–1.5.
- Servidores/VMs: depende de la carga; prioriza zRAM/zswap y monitoreo.
Crear un archivo swap (recomendado por flexibilidad)
# Crear el archivo (ejemplo: 4 GB):
sudo fallocate -l 4G /swapfile
# Si fallocate no está disponible:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
# Seguridad y formato:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
# Activar:
sudo swapon /swapfile
# Hacerlo permanente en /etc/fstab:
/swapfile none swap defaults 0 0
Verificá prioridades y uso:
swapon --show --output=NAME,TYPE,SIZE,USED,PRIO<br>
Ajustar el comportamiento:
El parámetro swappiness
(0–100) define cuán agresivo es el kernel usando swap. Valores bajos = se evita swap; altos = se usa antes.
# ver valor actual
cat /proc/sys/vm/swappiness
# establecer temporalmente (ej. 10)
sudo sysctl vm.swappiness=10
# permanente en /etc/sysctl.d/99-sysctl.conf
vm.swappiness=10
Hibernación: suspender al disco
La hibernación guarda el contenido de la RAM en la swap y apaga el equipo. Al encender, restaura el estado anterior.
- Requiere swap ≥ RAM (o suficiente para el uso real en el momento de hibernar, pero sé conservador).
- Necesita indicar al kernel dónde reanudar (parámetro
resume=
) y, en varias distros, configurar el initramfs.
Pasos genéricos
# Obtén UUID del dispositivo/archivo de swap:
sudo blkid (para partición) o $ findmnt -no UUID -T /swapfile
# Edita el gestor de arranque para añadir el parámetro del kernel, por ejemplo en GRUB:
GRUB_CMDLINE_LINUX="... resume=UUID=<tu-uuid>"
# Luego:
sudo update-grub (o el comando equivalente en tu distro).
# Algunas distros requieren configurar
RESUME=UUID=... en /etc/initramfs-tools/conf.d/resume #o equivalente
# Regenerar initramfs:
sudo update-initramfs -u
Nota: La hibernación puede estar deshabilitada por defecto en ciertas distros o hardware. Verifica la documentación de tu distribución.
zRAM vs zswap: comprimir para ganar RAM efectiva
Ambas técnicas comprimen páginas en memoria para reducir presión de RAM. Diferencias clave:
- zRAM: crea un dispositivo de bloque en RAM que actúa como swap comprimida en memoria. Ideal para equipos con poca RAM o muchas pestañas.
- zswap: caché comprimida en RAM delante de tu swap real. Antes de ir a disco, intenta quedarse comprimido en RAM. Reduce escrituras a disco (bueno para SSD).
Activar zRAM (método genérico)
En muchas distros modernas podés usar zram-generator
o servicios preconfigurados. Método manual básico:
sudo modprobe zram
# crea un zram0 del tamaño que quieras (ej. 4G)
echo 4G | sudo tee /sys/block/zram0/disksize
# inicializa y activa como swap con alta prioridad
sudo mkswap /dev/zram0
sudo swapon -p 100 /dev/zram0
# verificar
swapon --show
cat /sys/block/zram0/mem_used_total
Persistencia: en sistemas con systemd, preferí zram-generator
(archivo en /etc/systemd/zram-generator.conf
) y habilitar servicio. Las distros suelen tener paquetes y guías propias.
Activar zswap
zswap se habilita con parámetros del kernel:
# en GRUB, agrega (ejemplo):
GRUB_CMDLINE_LINUX="... zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20"
# luego:
sudo update-grub
# reinicia y valida:
cat /sys/module/zswap/parameters/enabled
cat /sys/kernel/debug/zswap/stat <-- puede requerir permisos o debugfs
¿Qué conviene usar?
- Escritorio general (8–16 GB RAM, SSD): archivo swap de 2–4 GB,
swappiness=10–30
, zswap habilitado. Hibernación opcional. - Equipos con poca RAM (≤8 GB): swap + zRAM (prioridad alta). Notarás mayor fluidez bajo carga.
- Laptops que hibernan: swap ≈ RAM, configura
resume=
y prueba hibernación. Considera zswap para proteger el SSD. - Servidores y contenedores: prioriza observabilidad (monitoring), zswap/zRAM según carga y evita swap excesiva que esconda problemas.
Consejos y buenas prácticas
- En SSD modernos, la swap no “mata” la unidad, pero zswap puede reducir escrituras y mejorar latencia.
- No sobredimensiones la swap: si está constantemente al 100%, necesitás más RAM o revisar procesos.
- Probá distintos valores de
swappiness
(10, 25, 60) y medí con tu carga real. - Para cambiar tamaño del archivo swap: desactiva (
swapoff
), ajusta y vuelve aswapon
.
Resumen
Swap evita OOM y ayuda al kernel a respirar; la hibernación necesita swap suficiente y configuración de resume
; zRAM y zswap comprimen para ganar memoria efectiva y reducir I/O. Con una combinación prudente y unos pocos ajustes, tu Linux se vuelve más fluido y resistente bajo carga.