Raspberry Pi: Swap y Swappiness

Evita que tu Raspberry Pi se bloquee por problemas de memoria

Roberto Lodeiro

Si utilizamos nuestra Raspberry Pi como servidor, resulta de vital importancia optimizar la configuración de la misma.

Veamos a modificar la forma en que el sistema haga uso de la memoria virtual o Swap mediante la propiedad Swappiness, y a incrementar el tamaño de la misma en Raspberry Pi.

Por supuesto, la propiedad Swappiness es útil modificarla también en Debian, Ubuntu, Fedora u otras distribuciones Linux en nuestro equipo de escritorio, ya que con ello reduciremos el uso de Swap.


Swappiness

El valor de Swappiness es una propiedad del Kernel de Linux donde configuramos la proporción de uso entre memoria Ram y Swap de nuestro sistema. Se puede configurar de 0 a 100, teniendo en cuenta que en 0 Swap quedará totalmente desactivado.

En la mayor parte de distribuciones Linux, el valor por defecto es de 60. Esto indica que cuando el uso de la memoria Ram llegue al 40 por ciento o más, se empezará a usar Swap.

En mi caso he establecido el valor de Swappiness a 10, con lo cual solo se utilizará Swap cuando el uso de la memoria Ram llegue al 90 por ciento o más. Esto dependerá de factores como tipo de disco o la cantidad de memoria disponible.

  • Para comprobar el valor actual de Swappines:
cat /proc/sys/vm/swappiness
  • Para modificarlo, editamos la configuración:
sudo nano /etc/sysctl.conf

Buscamos vm.swappiness, si no existe lo agregamos al final del fichero, quedando así:

vm.swappiness=10
  • Tras reiniciar el sistema, comprobamos que el cambio se ha aplicado:
cat /proc/sys/vm/swappiness

Por lo general para servidores se suele recomendar 10. Para equipos de escritorio con 4gb de memoria Ram o más también es recomendable reducir el valor por defecto, ya que en caso contrario haremos demasiado uso de la memoria virtual, la cual es más lenta que la memoria Ram.

Dependiendo del uso de tu Raspberry Pi o equipo personal y tu hardware, modifica este valor para conseguir una mayor estabilidad del sistema.

Swap

Se trata de una parte de nuestro disco duro, que el sistema utilizará como espacio de intercambio o memoria virtual.

Al menos en una Raspberry Pi 3 / 3B+ el tamaño por defecto en Raspberry Pi OS es de 100MiB y en lugar de una partición, como pasa en muchas distribuciones Linux, se utiliza un fichero.

  • Para ver la memoria actual y el uso de la misma, ejecutamos:
$ free -h

Se mostrará algo como lo siguiente:

total used free shared buff/cache available
Mem: 975Mi 457Mi 317Mi 14Mi 200Mi 447Mi
Swap: 100Mi 90Mi 10Mi

Como vemos en el ejemplo anterior, se está usando el 90% del espacio destinado a Swap, quedando solo el 10% libre. Para evitar tener problemas en el sistema si Ram y Swap se llenan, vamos a incrementar el tamaño de la última.

  • Editamos el fichero de configuración:
$ sudo nano /etc/dphys-swapfile

Buscamos CONF_SWAPSIZE y lo modificamos. Yo lo estableceré a 1024MiB quedando así:

CONF_SWAPSIZE=1024
  • Reiniciamos el servicio:
$ sudo service dphys-swapfile restart

Si volvemos a ejecutar el comando $ free -h veremos que los cambios se han aplicado, mostrando algo así:

total used free shared buff/cache available
Mem: 975Mi 660Mi 46Mi 53Mi 268Mi 205Mi
Swap: 1.0Gi 3.0Mi 1.0Gi

En mi caso el disco del sistema de la Raspberry Pi es un HD conectado por USB , con lo que dejo el archivo de Swap en la ubicación por defecto. Si quieres cambiarla puedes hacerlo descomentando y modificando el parámetro CONF_SWAPFILE.


Espero que sea útil, ¡gracias por leerme!