Modifica el tamaño de la swap de tu Raspberry Pi

¿Qué es la Swap y por qué la necesitas?

Imagina tu ordenador como una oficina. La memoria RAM es tu escritorio: es el espacio de trabajo rápido y eficiente donde tienes todos los documentos, programas y herramientas que necesitas usar al instante. Es el lugar ideal para trabajar, pero, al igual que un escritorio real, su tamaño es limitado.

¿Qué haces cuando tu escritorio se llena y necesitas liberar espacio para un proyecto nuevo? No tiras nada a la basura. En cambio, mueves los documentos que no estás usando activamente a un archivador o a una estantería cercana.

En el mundo de los ordenadores, ese archivador es el espacio de intercambio (o swap). Es una porción de tu disco duro que actúa como un «extra» de memoria, permitiendo que tu sistema mueva los datos menos utilizados de la RAM a un almacenamiento más lento. Esto libera el espacio rápido de la RAM para las aplicaciones que sí lo necesitan, evitando que el sistema se ralentice o se congele.

Diferencia: Partición Swap vs. Swapfile

Ahora que sabes qué es el swap, es crucial entender que hay dos formas principales de implementarlo. Aunque ambas cumplen la misma función, tienen diferencias clave que pueden afectar cómo gestionas tu sistema.

📁 Partición Swap

Una partición swap es un área dedicada y separada en tu disco duro. Al instalar tu sistema operativo, se crea un espacio de almacenamiento que solo se puede usar para el swap. Es como si construyeras un archivador permanente en tu oficina desde el primer día.

  • Ventajas: Suele ser un poco más rápida que una swapfile y es la opción recomendada para sistemas que usan discos duros tradicionales (HDD).
  • Desventajas: Es inflexible. Su tamaño es fijo y, si necesitas cambiarlo, tendrás que redimensionar las particiones de tu disco, lo cual puede ser un proceso complejo.

📂 Swapfile

Una swapfile (archivo de intercambio) es simplemente un archivo dentro de tu sistema de archivos existente (suele estar dentro del directorio /var/ o /home/) Es como si decidieras usar una carpeta en tu escritorio para guardar esos documentos que no estás usando. La gran ventaja es su flexibilidad.

  • Ventajas: Es mucho más fácil de crear, redimensionar y eliminar sin tener que alterar las particiones de tu disco.
  • Desventajas: Puede ser ligeramente más lenta que una partición dedicada y puede generar algo de fragmentación del disco con el tiempo (aunque esto es menos un problema en los sistemas de archivos modernos).

¿Cuál deberías usar?

La elección depende de tus necesidades:

  • Si usas un SSD moderno: La swap file es la opción más popular y recomendada. Su flexibilidad supera con creces la pequeña diferencia de velocidad, que en un SSD es casi imperceptible.
  • Si usas un HDD o tienes requisitos de alto rendimiento: Una partición swap podría ofrecerte una ligera ventaja en velocidad.

En la mayoría de los casos de uso personal y de escritorio, la swapfile es la solución más práctica y sencilla de gestionar.

Mi Raspberry PI 5 lleva instalado MX Linux 23.6_rpi_respin, el cual, no utiliza una partición swap, en lugar de dicha partición, usa un archivo de intercambio (swapfile).
La mayoría de las distribuciones modernas de Linux lo configuran automáticamente durante la instalación.

¿Qué tipo de swap usa mi sistema?.

Puedes ver el tipo de swap que usa tu sistema con el comando sudo swapon ---show

$ sudo swapon --show
     NAME  TYPE  SIZE  USED  PRIO
/var/swap  file  200M   0B   -2

El comando sudo swapon --show muestra que tengo un espacio de intercambio swapfile activo en el sistema. Si no mostrase nada, significaría que el sistema no está usando una swap

Aquí está el significado de cada columna:

  • NAME: La ruta al archivo de intercambio. En mi caso, tengo /var/swap
  • TYPE: El tipo de swap, en este caso es file (archivo).
  • SIZE: El tamaño del espacio de intercambio. Tengo un archivo de 200 MB.
  • USED: La cantidad de espacio de intercambio que se está utilizando actualmente. En mi caso, 0B (cero bytes), lo que significa que el sistema no está usando el swap en este momento.
  • PRIO: La prioridad de cada espacio de intercambio. Un sistema Linux puede tener mas de un espacio intercambio. El sistema usará primero el que tenga una prioridad más alta (el número más alto).

Cual es el tamaño ideal para el Swap File

Ahora mismo, están a la venta las versiones de RASPBERRY PI 5 con, 16GB, 8GB, 4GB, 2GB – de memoria RAM

Si tienes una Raspberry Pi 4 o 5 con menos de 8 GB de Ram, es muy probable que en algún momento empiece a consumir espacio Swap. A partir de 8 GB o más RAM, es posible que ni siquiera necesites una swap.

Tras la instalación Mx Linux, se configuró automáticamente una swap file en 200 MB, supongo que serán suficientes ya que a veces he visto unos pocos megas ocupando ese espacio.

El tamaño del swap file depende de la cantidad de memoria RAM que tengas y de si planeas usar la hibernación:

  • Si usas hibernación: El tamaño del swap file debe ser igual o ligeramente mayor que la cantidad de RAM de tu sistema. Por ejemplo, si tienes 16 GB de RAM, crea un swap file de 16 GB o 17 GB.
  • Si no usas hibernación: Una guía común es hacer el swap file del mismo tamaño que la RAM si tienes hasta 4 GB, o la mitad de la RAM si tienes más de 4 GB. Por ejemplo, si tienes 8 GB de RAM, un swap file de 4 GB es suficiente.
  • Para sistemas con mucha RAM (más de 16 GB): Si no usas hibernación, la necesidad de swap es menor. Un tamaño de 2 GB a 4 GB es a menudo suficiente para evitar problemas si la memoria se llena inesperadamente.

El servicio dphys-swapfile

dphys-swapfile es un servicio diseñado para sistemas con recursos limitados, como la Raspberry Pi, donde la gestión automática del espacio de swap es útil.
Es usado en sistemas operativos basados en Debian, como Raspberry Pi OS, MX-Linux_rpi_respin, etc y se utiliza para gestionar el archivo de intercambio (swap file).
Su propósito es crear, redimensionar y eliminar el archivo de intercambio, lo que permite al sistema usar espacio en el disco como si fuera RAM adicional cuando la memoria física está llena. Esto es crucial para la estabilidad del sistema, especialmente en dispositivos con RAM limitada.

El archivo de configuración principal de este servicio se encuentra en /etc/dphys-swapfile. Aquí puedes ajustar el tamaño del archivo de intercambio, lo cual es útil para optimizar el rendimiento de tu sistema.

El servicio dphys-swapfile, especialmente en Raspberry Pi OS, viene con una configuración predeterminada que limita el tamaño máximo del archivo de intercambio a 2048 MB (2 GB).

Nota. el servicio dphys-swapfile viene con una limitación por defecto de 2 GB.

¿Cómo aumentar el swapfile?

Para establecer un tamaño de intercambio mayor, solo necesitas modificar la variable CONF_SWAPSIZE, en el archivo /etc/dphys-swapfile.

Abre el archivo de configuración:

sudo nano /etc/dphys-swapfile

Busca la línea CONF_MAXSWAP=200 y cambia el valor a la cantidad que desees, por ejemplo, para 1 GB=1024

raspberry@pi5:~
$ sudo nano /etc/dphys-swapfile

# /etc/dphys-swapfile - user settings for dphys-swapfile package
# author Neil Franklin, last modification 2010.05.05
# copyright ETH Zuerich Physics Departement
#   use under either modified/non-advertising BSD or GPL license

# this file is sourced with . so full normal sh syntax applies

# the default settings are added as commented out CONF_*=* lines


# where we want the swapfile to be, this is the default
#CONF_SWAPFILE=/var/swap

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=1024

# set size to computed value, this times RAM size, dynamically adapts,
#   guarantees that there is enough swap without wasting disk space on excess
#CONF_SWAPFACTOR=2

# restrict size (computed and absolute!) to maximally this limit
#   can be set to empty for no limit, but beware of filled partitions!
#   this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it
#   but is also sensible on 64bit to prevent filling /var or even / partition
# CONF_MAXSWAP=2048

Guarda y cierra el archivo: presiona Ctrl + O para guardar y Ctrl + X para salir.

Reinicia el servicio para aplicar los cambios:

sudo systemctl restart dphys-swapfile

Comprueba tus cambios.

Ahora vemos que nuestro swapfile ha cambiado de tamaño.

$ sudo swapon --show
NAME TYPE SIZE USED PRIO
/var/swap file 1GB 0B -2

Resumiendo.

En el caso expuesto en esta articulo, con una Raspberry PI de 8GB no es necesario modificar el tamaño del swapfile, ya que en ningún momento hace uso de la swap, como vas a ver en el siguiente ejemplo.

raspberry@pi5:~
$ uptime
11:54:58 up 1 day, 8:44, 1 user, load average: 0,07, 0,06, 0,03

El comando uptime muestra el tiempo que el sistema ha estado en funcionamiento, 1 día y 8 horas y 44 minutos.

Si comprobamos la memoria disponible tras la información del comando uptime, verás que no hay uso en la memoria de intercambio (Inter). dando 0 como usado y 4,0Gi como libre.

$ free -h
      total   usado   libre  compartido   búf/caché   disponible
Mem:  7,9Gi   1,4Gi   3,1Gi        90Mi       3,8Gi        6,5Gi
Inter: 1,0Gi     0B   1,0Gi
¿qué haría yo?

Como mi sistema con 8 GB de RAM no hace uso de la memoria de intercambio, como mucho le daría a esta entre 512 MB y 1024 MB a la variable CONF_SWAPSIZE=1024.
Si en un futuro mi sistema empieza a hacer uso del swapfile, rápidamente podemos modficar su valor.

Nota: Ten en cuenta que el tamaño que usas de swapfile, lo restas de espacio en disco.

¿Cómo exceder del límite?

Para establecer un tamaño de intercambio mayor a 2 GB, no solo necesitas modificar la variable CONF_SWAPSIZE, sino también la variable CONF_MAXSWAP en el archivo /etc/dphys-swapfile.

Abre el archivo de configuración:

raspberry@pi5:~
$ sudo nano /etc/dphys-swapfile

# /etc/dphys-swapfile - user settings for dphys-swapfile package
# author Neil Franklin, last modification 2010.05.05
# copyright ETH Zuerich Physics Departement
#   use under either modified/non-advertising BSD or GPL license

# this file is sourced with . so full normal sh syntax applies

# the default settings are added as commented out CONF_*=* lines


# where we want the swapfile to be, this is the default
#CONF_SWAPFILE=/var/swap

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=1024

# set size to computed value, this times RAM size, dynamically adapts,
#   guarantees that there is enough swap without wasting disk space on excess
#CONF_SWAPFACTOR=2

# restrict size (computed and absolute!) to maximally this limit
#   can be set to empty for no limit, but beware of filled partitions!
#   this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it
#   but is also sensible on 64bit to prevent filling /var or even / partition
CONF_MAXSWAP=2048

Busca la línea CONF_MAXSWAP=2048 y cambia el valor a la cantidad que desees, por ejemplo, para 4 GB=4096

CONF_MAXSWAP=4096

Esta línea puede estar comentada (precedida por un #), si es así, borra el carácter #

Asegúrate de que la variable CONF_SWAPSIZE también esté configurada con el tamaño deseado, si aún no lo has hecho:

CONF_SWAPSIZE=4096

Guarda y cierra el archivo: presiona Ctrl + O para guardar y Ctrl + X para salir.

Reinicia el servicio para aplicar los cambios:

sudo systemctl restart dphys-swapfile

Comandos comunes del servicio.

  • Parar el servicio: sudo systemctl stop dphys-swapfile
  • Iniciar el servicio: sudo systemctl start dphys-swapfile
  • Reiniciar el servicio: sudo systemctl restart dphys-swapfile
  • Ver el estado: sudo systemctl status dphys-swapfile
  • Deshabilitar el servicio (para que no se inicie automáticamente al arrancar): sudo systemctl disable dphys-swapfile

Deja un comentario

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

Scroll al inicio