03 Sep
03Sep

La SWAP o espacio de intercambio es un espacio en nuestro disco duro que se usa para almacenar los datos e imágenes de procesos que no pueden ser almacenados en nuestra memoria RAM por falta de capacidad. Por lo tanto la SWAP es una forma para liberar carga de nuestra memoria RAM.

En otras palabras la SWAP es el equivalente de lo que se conoce como archivo de paginación en Windows. La gran mayoría de usuarios de Windows probablemente no conocen la existencia de los archivos de paginación o SWAP. Los usuarios de GNU/Linux si conocen su existencia porqué en el momento de la instalación se tiene que realizar una partición de SWAP en nuestro disco duro mientras que en Windows esto no es necesario. El mismo Windows te genera de forma poco transparente un archivo de paginación que se incrementa o disminuye de tamaño en función de la carga que estemos dando a nuestro equipo.

Nota: En el caso que en GNU/Linux nos olvidemos de crear una partición de intercambio cuando estamos instalando nuestro sistema operativo no implica tener que volver a instalar el sistema. Siempre podemos modificar nuestra tabla de particiones de nuevo y crear la partición SWAP.

¿Por qué GNU/Linux necesita utilizar la SWAP?

GNU/Linux necesita la memoria SWAP porqué es un forma de ampliar la memoria RAM de nuestro sistema operativo en el caso que esté llena.

A medida que vamos ejecutando aplicaciones en nuestro sistema operativo estas se cargan en la memoria RAM. A medida que vayamos cargando aplicaciones nuestra memoria RAM se va llenando y puede llegar al punto que este prácticamente llena. En el momento que la memoria RAM se llene completamente e intentemos ejecutar otras aplicaciones nuestro sistema operativo simplemente se saturará, se volverá inestable o nos generará algún tipo de error ya que no tiene recursos para iniciar más aplicaciones de forma simultanea.

Es en esta situación es donde actúa la SWAP. A partir de un cierto nivel de carga en la RAM, que nosotros podemos controlar mediante el parámetro swappines, el Kernel de nuestro GNU/Linux buscará las imágenes de procesos que menos usamos y tengamos cargados en nuestra memoria RAM y los moverá a nuestro disco duro en la zona que denominamos como área de intercambio o SWAP. De está forma estamos liberando memoria RAM para poder cargar más procesos.

Además GNU/Linux necesita un mínimo de memoria SWAP para trabajar de forma eficiente cuando nos quedamos sin memoria.

¿Es necesario minimizar el uso de la SWAP en nuestros computadores?

En computadores con prestaciones normales, o incluso de prestaciones reducidas, seguro que notarán que en el momento que se activa la memoria SWAP todo empieza a ir más lento. ¿Por qué en el momento de activarse la SWAP el computador se ralentiza?

Simplemente porqué las librerías y procesos necesarios para poder ejecutar algunas de las aplicaciones se hallan en una parte del disco duro denominado SWAP en vez de a la memoria RAM. Cómo todos saben la velocidad de ejecución de la información almacenada en la memoria RAM es infinitamente superior a la que tenemos en nuestro disco duro. Por lo tanto es normal que todo vaya mucho más lento.

Otro motivo de la lentitud que experimentamos es la posible aparición de hiperpaginación que causará que haya una serie de librerías que estén intercambiándose continuamente de la memoria RAM a la SWAP y de la SWAP a la RAM causando lentitud y sobrecarga en el sistema. Los motivos de la hiperpaginación pueden ser que nuestro computador tenga muy poca RAM o que los algoritmos de intercambio de procesos de un sitio a otro estén mal implementados.

En la gran mayoría de casos lo ideal es evitar o retardar el uso de la SWAP en nuestro sistema operativo y usar la memoria RAM siempre que sea posible. De está forma el funcionamiento de nuestro ordenador será mucho más rápido y fluido. Además los usuarios que dispongan de un disco duro SSD puede que no deseen que se escriba información en su disco duro ya que la vida de un disco duro SSD viene determinado por un número límite de escrituras.

Quien decide el momento en que se empiezan a trasvasar imágenes de procesos de la RAM a la SWAP es el Kernel. Como GNU/Linux es un sistema operativo abierto podemos hacer que el Kernel de GNU/Linux espere hasta cuando la memoria RAM este casi llena para que empezar el trasvase. Tan solo tenemos que modificar el valor de swappiness de nuestro sistema operativo para indicarle al kernel de GNU/Linux que de más prioridad al uso de RAM que al uso de SWAP.

El valor de swappiness puede comprender un valor entre 0 y 100. Si el valor es 0 se evitará el intercambio de información entre la RAM y la SWAP, mientras que si elegimos un valor 100 el intercambio se estará realizando constantemente. La mayoría de distribuciones GNU/Linux vienen preconfiguradas con un valor de swappiness de 60. Este valor es probablemente correcto para el uso de servidores y superordenadores pero es claramente excesivo para usuarios domésticos como nosotros.

Por lo tanto en nuestro caso podemos recudir muy drásticamente el valor de la swappiness por defecto hasta valores de 10 o 5. Para ello lo primero que tenemos que hacer es abrir una terminal y teclear el siguiente comando:

$ cat /proc/sys/vm/swappiness

La salida será el valor actual de swappiness que tenemos asignado. Si no ha tocado nunca este parámetro es probable que el valor que salga en pantalla sea 60, que es el valor por defecto que usan la mayoría de distribuciones GNU/Linux. Si es este tu caso y tienes un valor de 60 podemos reducir drásticamente el uso de SWAP.

Si queremos reducir el valor de swappiness de 60 a 10 tan solo tenemos que abrir una terminal y escribir el siguiente comando:

$ sudo sysctl -w vm.swappiness=10

En estos momentos ya tenemos fijado el valor de swappiness en 10 y nuestro sistema operativo tenderá a usar mucho menos SWAP que cuando teníamos fijado el valor en 60.

En otra máquina probé colocar 5 en SolydK y anda muy bien, el procedimiento es el mismo pero en lugar de 10 colocamos 5:

$ sudo sysctl -w vm.swappiness=5

Una vez tenemos el nuevo valor, lo más aconsejable es usar el computador durante un periodo de tiempo razonable para asegurar que el rendimiento que obtenemos con el nuevo parámetro es aceptable y también para comprobar que el sistema sea estable.

Una vez que estamos seguro que nuestro sistema rinde mejor y no genera inestabibilidad en el sistema lo que haremos es hacer este cambio permanente. Así evitaremos que cada vez que arranquemos el computador tengamos que cambiar el valor de swappiness de 60 a 10.

Para hacerlo persistente el valor de swappiness 10 abrimos una terminal y tecleamos:

$ sudo featherpad /etc/sysctl.conf

NOTA: featherpad lo pueden sustituir por el editor que tengan; gedit, mousepad, etc.

Justo al final del fichero introducimos el siguiente comando:

vm.swappiness=10

o si quieren que sea y lo colocan así:

vm.swappiness=5

Guardamos el fichero y la próxima vez que arranquemos nuestro ordenador ya tendremos ajustado el valor de swappiness a 10. Si queremos realizar la comprobación tan solo tenemos que abrir una terminal y teclear el siguiente comando:

$ cat /proc/sys/vm/swappiness

Y ahora, cómo liberar la memoria SWAP una vez está en uso

Una vez se activa nuestra memoria SWAP nuestro sistema se acostumbra a saturar y ralentizar. Una solución para solucionar este problema es reiniciar el equipo pero existen soluciones para liberar la memoria SWAP y no tener que apagar el computador. Para evitar apagar el equipo podemos proceder de la siguiente forma:

Lo que realizaremos es traspasar el contenido que tenemos almacenado en nuestra memoria SWAP hacia la memoria RAM. Por lo tanto lo primero que realizaremos es asegurarnos que la memoria RAM tiene capacidad libre para poder albergar el contenido que está guardado en la SWAP. Para hacer esto abrimos una terminal y tecleamos el comando:

$ free

El comando free nos dará la salida que pueden observar en la siguiente captura de imagen:

Optimizar el uso de la memoria SWAP resultados

Como podemos ver en la captura en nuestra memoria SWAP tenemos almacenado 641704 Kb. Nuestra memoria RAM tiene 184120 Kb libres. Por lo tanto podemos traspasar el contenido de la memoria SWAP a la RAM sin tener ningún tipo de problema.

Para realizar el traspaso abrimos la terminal y escribimos el siguiente comando para transferir el contenido de un lado a otro:

$ sudo swapoff -a ; sudo swapon -a

Ahora volveremos a teclear el comando:

$ free

Y efectivamente en la siguiente captura de pantalla podemos confirmar que la operación ha tenido éxito, ya que la memoria SWAP ahora está completamente libre:

Más información aquí.

Comentarios
* No se publicará la dirección de correo electrónico en el sitio web.
ESTE SITIO FUE CONSTRUIDO USANDO