¿Cuánta memoria swap necesita tu servidor Linux? (guía 2026)
La regla de “swap = 2x RAM” tiene 30 años y sigue circulando. En 2026, con workloads modernos y opciones como zram, esa regla está obsoleta. Esta guía te dice cuánta swap asignar según tu caso real, cómo configurar swappiness, y cuándo zram gana al disco.
TL;DR — Lo que vas a tener al final
- Tiempo de setup: 30 minutos a 2 horas dependiendo de la complejidad del entorno.
- Requisitos: Acceso root, Linux moderno, conexión a internet para descargar dependencias.
- Resultado: Servicio funcional y estable, documentado paso a paso.
- Troubleshooting: Logs estándar en /var/log/, comandos de verificación al final de cada sección.
¿Qué es swap y para qué sirve?
Swap es espacio en disco que el kernel usa como extensión de la RAM. Cuando tu sistema se queda sin memoria física, mueve las páginas menos usadas a swap (esto se llama paging out) y las recupera cuando las necesita (paging in). El kernel Linux puede usar un archivo o una partición dedicada para esto.
Tres razones por las que swap sigue siendo relevante en 2026:
- OOM prevention: cuando un proceso pide más memoria de la que el sistema tiene, sin swap el OOM killer mata procesos. Con swap, el sistema degrada performance pero sigue respondiendo.
- Hibernación: para hibernar, el kernel necesita guardar todo el contenido de RAM en disco. Sin swap suficiente, hibernar es imposible.
- Memory pressure relief: permite mover páginas poco usadas a disco y dejar RAM libre para caché de disco, que tiene impacto directo en I/O.
Lo que swap no es: un sustituto de RAM. Si tu sistema usa swap intensivamente todo el tiempo, está mal dimensionado. Swap es red de seguridad, no primera línea.
La regla vieja y por qué falla
La guía tradicional decía:
- RAM ≤ 2 GB → swap = 2x RAM
- RAM 2-8 GB → swap = igual a RAM
- RAM > 8 GB → swap = al menos 4 GB
Esta regla viene de cuando los servidores tenían 256 MB-2 GB de RAM. Hoy en día un servidor de 64 GB con esa regla tendría 128 GB de swap. Absurdo.
La lógica moderna, basada en las recomendaciones de Red Hat y las páginas man del kernel Linux actuales, es:
| RAM del sistema | Swap recomendado (sin hibernación) | Swap con hibernación |
|---|---|---|
| 1-2 GB | 2x RAM | 3x RAM |
| 2-8 GB | igual a RAM | 2x RAM |
| 8-64 GB | al menos 4 GB | RAM + 4 GB |
| > 64 GB | al menos 4 GB | práctica desaconsejada |
Para servidores en producción, hibernar no aplica (¿quién hiberna un servidor?). La columna del medio es tu referencia.
Swappiness: el knob que casi nadie toca
/proc/sys/vm/swappiness controla qué tan agresivo es el kernel moviendo páginas a swap. El rango válido en mainline es 0-100 (default 60). Algunas distros (SUSE/openSUSE históricamente) llevan un parche que extiende el rango a 0-200, pero el kernel upstream de kernel.org sigue siendo 0-100.
- 0: el kernel evita swap a menos que sea estrictamente necesario.
- 60: default. Balance.
- 100: agresivo, swap antes de lo necesario.
- 200: muy agresivo, útil solo para casos específicos (memoria muy poca).
Para servidores Linux modernos, los valores recomendados son:
- Bases de datos (PostgreSQL, MySQL, MongoDB):
swappiness=1oswappiness=10. Las DB engines manejan su propia memoria y swap las confunde. - Servidores web (Nginx, Apache):
swappiness=10-30. Algo de swap ayuda a liberar RAM para caché de archivos. - Servidores de aplicaciones genéricos:
swappiness=10-60según el caso. - Desktops:
swappiness=60(default está bien). - Kubernetes/containers:
swappiness=0si usasmemory.swapaccounto nodos con swap limitado.
Ver tu valor actual:
cat lee el archivo virtual /proc/sys/vm/swappiness que el kernel expone para que procesos en userspace puedan consultarlo. Es la forma más rápida de ver qué valor está usando el kernel AHORA MISMO.
cat /proc/sys/vm/swappiness
Si lo cambiás en caliente con sysctl -w, el kernel lo lee otra vez y ajusta su comportamiento inmediato. No requiere reinicio. Para hacerlo permanente, editá /etc/sysctl.d/ como se explica abajo.
Cambiarlo en caliente:
Cambiarlo en caliente: sysctl -w escribe directamente al /proc/sys/... sin pasar por config files. El cambio aplica inmediato pero se pierde en el próximo reboot. Útil para probar antes de hacer persistente.
sudo sysctl vm.swappiness=10
Para hacerlo permanente: los archivos en /etc/sysctl.d/ son los que systemd-sysctl.service lee al boot. El prefijo numérico (99-) define prioridad de carga: a mayor número, mayor prioridad sobre archivos con prefijos más bajos.
Hacerlo permanente:
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swap.conf
sudo sysctl -p /etc/sysctl.d/99-swap.conf
ZRAM: cuando swap en RAM gana
zram crea un dispositivo de bloque en RAM que actúa como swap, pero con compresión. En lugar de escribir a disco, comprime las páginas en RAM (típicamente 2-3x ratio con lz4 o zstd). El resultado: latencia mucho menor que disco y mejor uso de RAM que sin swap.
Cuándo zram es mejor que swap en disco:
- Servidores con RAM abundante (16+ GB) pero picos de uso.
- Laptops y workstations donde swap a disco destruye la vida del SSD.
- Contenedores que necesitan swap rápido.
- Sistemas embebidos con almacenamiento lento.
Configurar zram en Ubuntu 22.04+ o Debian 12+:
El paquete systemd-zram-generator crea una unit de systemd ([email protected]) que genera el dispositivo zram al boot según el archivo de config. Sin el paquete, puedes escribir el archivo pero nadie lo lee.
sudo apt install systemd-zram-generator
echo '[zram0]
zram-size = ram * 2
compression-algorithm = zstd
priority = 100
' | sudo tee /etc/systemd/zram-generator.conf
sudo systemctl daemon-reload
sudo systemctl start systemd-zram-generator@zram0
swapon --show
Tras instalar el paquete y configurar, verifica que el servicio esté activo con systemctl status systemd-zram-generator@zram0. Si está inactive (dead), revisa logs con journalctl -u systemd-zram-generator@zram0. Causas comunes: archivo de config con sintaxis incorrecta o dispositivo ya en uso.
El archivo de config se llama zram-generator.conf o zram0.conf según la distro. El tamaño típico es 50-100% de la RAM. Verifica con zramctl.
En Fedora y RHEL, zram viene integrado en systemd desde hace tiempo. Solo configurar el valor de priority en la sección [zram0].
Cuánta swap asignar en 2026: casos reales
Servidor web pequeño (1-4 GB RAM, VPS básico)
- 2 GB de swap (archivo o partición).
swappiness=10.- Considerar zram en lugar de disco si tienes SDD pequeño.
- Monitorear con
vmstat 1osar -rpara ver si swap se usa.
Servidor de aplicaciones medio (8-16 GB RAM)
- 4 GB de swap en disco o zram de 8 GB.
swappiness=10.- zram es ideal acá, ya que la RAM extra rinde mejor comprimida que en disco.
Servidor con bases de datos (32+ GB RAM)
- 4-8 GB de swap mínimo.
swappiness=1-10para PostgreSQL/MySQL.- Cuidado con swap: una DB con memoria swap-paged tiene latencia errática. Mejor sobre-dimensionar RAM que depender de swap.
Workstation desktop
- 2-4 GB de swap en disco o zram equivalente.
swappiness=60(default, OK).- Si usas SSD moderno, swap en disco no es problema.
Kubernetes / Docker host
- Cuidado: kubelet por defecto NO usa swap. Para habilitarlo necesitas:
- Kubernetes 1.22+:
--feature-gates=NodeSwap=Enableden kubelet. - Configurar
memorySwapen el runtime. - Si usas Docker standalone: el contenedor puede tener su propio swap limitado.
- Mejor práctica: deshabilitar swap en nodos k8s, sobre-dimensionar RAM.
Cómo verificar si tu swap está bien dimensionado
Tres herramientas clave:
Estas son las herramientas clave para diagnosticar uso de swap. free -h es el snapshot instantáneo de RAM y swap. Las otras tres son para time-series — útiles cuando el swap se usa en momentos puntuales (ej. batch jobs de madrugada).
# Estado actual
free -h
swapon --show
# Actividad en tiempo real (1 segundo de intervalo)
vmstat 1
# columnas si/so: swap in/out (pages/sec)
# Si si/so > 0 constante, swap está activo
# Histórico (paquete sysstat)
sar -r 1 10
# columnas kbcommit / commit%: cuánta memoria está prometida vs límite
# >100% significa que el sistema está overcommited
La salida de vmstat 1 5 actualiza cada segundo por 5 muestras; las columnas que importan son si (swap in) y so (swap out) en KB/s. Si están en 0 todo el tiempo, swap no se está usando. Si suben sostenido, mira top -o %MEM para identificar al culpable. sar -r requiere instalar sysstat (apt install sysstat o dnf install sysstat); sin esto, el comando no existe.
Señales de que necesitas más RAM o menos swappiness:
si/so(swap in/out) consistentemente > 0 → sistema haciendo swap activo, performance degradada.- OOM killer activado (
dmesg | grep -i "out of memory"). - Latencia errática en I/O sin causa clara.
Señales de que swap es excesivo (desperdicio de disco):
- Swap asignada pero
swapon --showreporta 0% uso siempre. - Disco desperdiciado, especialmente en sistemas con SDD pequeños.
Cambiar el tamaño de swap en caliente
Si tu swap actual está mal dimensionado y no puedes reiniciar, puedes cambiarla:
# Deshabilitar swap actual
sudo swapoff /swapfile
# Crear swap más grande (ejemplo: 8 GB)
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Verificar
free -h
swapon --show
En /etc/fstab actualiza la línea de swap para que sobreviva al reboot:
/swapfile none swap sw 0 0
Errores comunes
- Confundir swap con memoria virtual total.
free -hmuestratotal = used + free + shared + buff/cache. La swap es una partición más, no se suma a la RAM. - Poner swap en un RAID lento. El swap es I/O bound, y si está en discos lentos, todo el sistema se arrastra. SSD dedicado o zram.
- Confiar en
swappiness=0como “nunca swap”. Sigue usando swap en emergencias; solo lo retrasa. - Olvidar el fstab. Swap configurada manualmente pero sin entrada en fstab = se pierde al reiniciar.
- Hibernar sin suficiente swap. Si quieres que tu laptop hiberne, swap ≥ RAM. Si solo quieres safety net para OOM, swap pequeña basta.
FAQ
¿Linux usa swap incluso con RAM libre? Por defecto sí, swappiness=60 hace que el kernel mueva páginas a swap si llevan tiempo inactivas, incluso si hay RAM libre. Esto libera RAM para caché de disco. No es bug, es feature.
¿SSD se rompe con swap intensivo? Los SSD modernos tienen TBW (terabytes escritos) de 300-1200+. Swap intensivo puede escribir 5-20 GB/día. Con 300 TBW te dura 40+ años. No te preocupes, salvo que uses SSD de hace 10 años.
¿Y en un servidor en la nube (AWS, Hetzner, DO)? Las instancias cloud suelen tener almacenamiento local SSD o de red. Swap en almacenamiento de red (EBS, volumes remotos) es muy lento. zram o disco local son mejores opciones.
¿Tiene sentido tener swap con zram Y disco a la vez? Sí. Configura zram con prioridad alta (se usa primero) y disco con prioridad baja como fallback. systemd-zram-generator lo hace automáticamente si pones ambas.
¿Cómo afecta swap al rendimiento de mi DB? PostgreSQL, MySQL y MongoDB mantienen sus buffers en RAM. Si el kernel mueve esos buffers a swap, la latencia de las queries salta de microsegundos a milisegundos. swappiness=1 o deshabilitar swap en nodos de DB.
¿Cuándo NO usar swap? Nodos Kubernetes (a menos que sepas lo que hacés), sistemas donde la latencia predecible es crítica, contenedores con límites de memoria estrictos. En general: si tienes RAM de sobra y la app está bien dimensionada, swap es pura red de seguridad.
Preguntas frecuentes
¿Por qué ¿Cuánta memoria swap necesita tu servidor Linux? (guía 2026) es relevante para sysadmins Linux?
Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.
¿Qué necesito para empezar con ¿Cuánta memoria swap necesita tu?
Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.
¿Cuáles son los errores más comunes con ¿Cuánta memoria swap necesita tu?
Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.
¿Cuándo usar ¿Cuánta memoria swap necesita tu y cuándo una alternativa?
Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.
¿Cómo migro desde una configuración previa a ¿Cuánta memoria swap necesita tu?
Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.
Lee también
- Guía Fedora 44: Novedades, Instalación y Upgrade para Sysadmins Linux
- Configura VLANs en Linux con nmcli: Guía paso a paso para sysadmins
- Protege tu SSH: Guía esencial para configurar Fail2ban en Linux
- Guía Definitiva: Configura Kubernetes con kubeadm en Ubuntu para Sysadmins Linux
- Configura Prometheus y Grafana: Guía DevOps para SysAdmins Linux

Pingback: Cómo crear un servidor de Minecraft en Linux: guía completa 2026 - Soy Linux