¿Necesitas más memoria? Activa el intercambio, o Swap, en Linux

¿Necesitas más memoria? Activa el intercambio, o Swap, en Linux

Rubén Velasco

Para funcionar correctamente, un sistema informático necesita tener memoria RAM. Y cuantos más gigas, mejor. Esta memoria se utiliza para cargar todos los programas y recursos necesarios para que el PC funcione correctamente. De entrada, los sistemas operativos modernos (Windows 10, Ubuntu, macOS) necesitan en torno a 2 GB mínimos para funcionar bien. Y cuantos más programas usemos, más memoria necesitamos. Sin embargo, ¿qué ocurre si nos quedamos sin memoria mientras usamos Linux? Entonces se recurre a una técnica conocida como «Swap».

Se conoce como «Swap» dentro de los sistemas Linux como a un determinado espacio del disco duro que, en caso de necesidad, se utiliza como memoria RAM. De esta forma, si nuestro ordenador se está quedando sin memoria RAM libre, se mueven datos de la misma al disco duro, se libera su espacio y, en caso de necesitarlos de nuevo más adelante, se accede a ellos desde dicho disco duro.

En Windows, el Swap es lo que conocemos como «pagefile» o memoria virtual. Mientras que en Windows siempre ha sido un fichero (pagefile.sys), en Linux, hasta hace relativamente poco tiempo, teníamos que tener una partición dedicada (formateada y montada como swap) de la capacidad que nosotros quisiésemos para usarla para este fin. las distribuciones más modernas ya utilizan un fichero similar al de Windows para esta labor.

Linux Swap

Ventajas e inconvenientes del Swap

Como todo, esta característica tiene sus propias ventajas e inconvenientes. Entre las principales ventajas podemos destacar que se trata de una solución «rápida y económica» a los problemas de memoria RAM. Sobre todo cuando son problemas esporádicos. Además, el intercambio es necesario para poder usar algunas funciones de Linux, como, por ejemplo, hibernar el ordenador. Además, en este caso, necesitaremos tener una Swap de algunos gigas más del total de RAM que tengamos en el PC.

Tener 8 GB de Swap no es, ni de lejos, lo mismo que tener 8 GB de memoria RAM. El Swap es mucho más lento que la memoria RAM, y enviar y recuperar información del disco duro lleva un tiempo, por lo que notaremos una importante pérdida de rendimiento. Si recurrimos a esto alguna vez no hay problema, pero si tenemos poca RAM es mejor ampliarla físicamente que depender del Swap. Además, si tienes un SSD, a la larga hacer uso de este intercambio puede dañarlo por la gran cantidad de ciclos de escritura que lleva.

Además, la Swap es para Linux menos importante que la RAM. Esto significa que siempre va a estar en segundo plano, y es muy probable que en alguna ocasión algún programa, e incluso el sistema operativo completo, falle.

¿Debo usar Swap?

La respuesta a esta pregunta es complicada. Depende del hardware que tenga nuestro ordenador, y de para qué lo utilizamos. Por ejemplo, si tenemos 4 GB de memoria RAM, sí deberíamos tener algunos gigas de intercambio preparados para que, en caso de necesitarlos, estén disponibles. Lo mismo ocurre si somos de los que solemos hibernar el ordenador a menudo.

Si usamos aplicaciones que consumen cantidades ingentes de memoria, como Blender, un editor 4K de vídeo o editamos fotos muy grandes en GIMP, entonces también es recomendable tener este espacio disponible, aunque puede que no lleguemos a necesitarlo.

Sin embargo, si tenemos un ordenador con una RAM moderada (16 GB, por ejemplo), y ni usamos la hibernación ni usamos los programas anteriores, entonces el Swap no será necesario, ya que nuestro Linux nunca usará toda esta memoria.

Swappiness: elegir cuándo queremos que Linux use el Swap

Por defecto, Ubuntu (y muchas distros Linux) tienen configurado un swappiness por defecto de 60. Esto significa que el Swap no se usa hasta que se use el 60% de la memoria RAM. A partir de ese umbral es cuando se empieza a usar la memoria de intercambio.

Este valor podemos modificarlo editando el siguiente fichero con un editor con permisos de root:

cat /proc/sys/vm/swappiness

Podemos cambiar el umbral deseado modificando el valor por defecto por el que queramos. Por ejemplo, podemos ponerle un valor de «90», si queremos que solo se empiece a usar esto cuando tengamos el 90% de la RAM usada. Incluso más. Así aprovecharemos mejor la memoria física del ordenador, lo cual, a su vez, se traduce en un mejor rendimiento.

Si no queremos modificar este valor, también podemos cambiar el swap temporalmente con la siguiente instrucción, aunque debemos tener en cuenta que, después de reiniciar, volverá al valor de swappiness por defecto.

sudo sysctl vm.swappiness=10

El valor óptimo que debemos configurar depende de cada uno. Si tenemos RAM suficiente, cuanto más alto, mejor. Pero si queremos ir precavidos para evitar quedarnos sin memoria, el valor por defecto no está mal.

Cómo activar la Swap en Linux

Hay dos formas diferentes de activar el uso de Swap, dependiendo del tipo que usemos (partición o archivo). Podemos comprobar si nuestro Linux tiene Swap, y de qué tipo, ejecutando el siguiente comando en un terminal:

sudo swapon --show

Con él vamos a poder ver el nombre, o punto de montaje, el tipo y el tamaño.

En el caso de que usemos la típica forma de la partición, entonces lo único que debemos hacer al instalar Ubuntu es crear una partición, del tamaño que queramos (se recomienda 1.5 veces la RAM) formateada como Linux-SWAP. Además, también debemos asignarla el punto de montaje Swap para que el sistema operativo prepare dicha partición para usarla como intercambio.

Ubuntu partición Swap

Si hacemos esto durante la instalación del sistema operativo no tendremos que hacer nada más. De lo contrario, si lo queremos añadir más adelante, debemos especificar dicho punto de montaje en el fstab de nuestra distribución para que arranque automáticamente al encender.

En caso de querer habilitar el uso de Swap mediante un fichero, lo que debemos hacer es ejecutar los siguientes comandos:

Crear el fichero de intercambio (eligiendo el tamaño cambiando 1G por el valor que queramos darle):

sudo fallocate -l 1G /swapfile

A continuación, le damos permisos para que solo root pueda escribir en dicho fichero con:

sudo chmod 600 /swapfile

Damos al archivo una estructura para poder funcionar como archivo de intercambio con:

sudo mkswap /swapfile

Y, por último, lo activamos con:

sudo swapon /swapfile

Para que este archivo cargue al inicio de la distro por defecto debemos añadir su instrucción en el fstab. Esta instrucción debe ser como un punto de montaje más, con lo siguiente:

/swapfile swap swap defaults 0 0

Ya está listo. Reiniciamos Linux y podremos ver cómo la nueva partición de Swap está en funcionamiento. Si queremos, podemos volver a usar el comando «sudo swapon –show» para comprobar que, efectivamente, estamos usando un intercambio de archivo en lugar de una partición.