Swappiness: cómo ajustar el uso de la memoria virtual

 

memoria virtual swappiness

Aquí en Ubunlog nos dedicamos -o intentamos hacerlo- a todos los usuarios, y eso incluye configuraciones muy diferentes de hardware. Y de alguna manera nos gusta pensar que con los tutoriales que aquí mostramos contribuimos de algún modo a mejorar la experiencia general de uso en esta distro que tanto nos gusta (en cualquiera de sus sabores), por ello muchas veces publicamos guías para obtener el mejor rendimiento posible, sobre todo en equipos más modestos.

Ahora, sin ir más lejos, vamos a mostrar cómo ajustar el uso de la memoria virtual en Ubuntu, de modo tal de evitar que al final se termine convirtiendo en un lastre y haciendo que el rendimiento sea peor de lo que sería sin ella. Y es que aunque la idea de utilizar un archivo o partición de intercambio no es mala en si misma sino todo lo contrario, si no está bien implementada puede generar un excesivo uso del disco duro, mucho más lento que la memoria RAM.

Por ello, el uso de la partición swap debe limitarse a situaciones en las cuales no queda otra alternativa más que utilizarla, momentos en los cuales servirá de apoyo a la memoria principal (que es la RAM). Si en lugar de ello la utilizamos en todo momento, incluso a veces antes que la memoria RAM, nuestro rendimiento se verá penalizado. Veamos entonces cómo ajustar el uso de la memoria virtual en Linux mediante el comando Swappiness.

En nuestro sistema operativo la creación de la memoria virtual se suele realizar durante el proceso de instalación, momento en el cual definimos la partición raíz (/), la de almacenamiento (/home) y la de intercambio o swap, que suele quedar implementada en la partición /dev/sda5. El parámetro del kernel que gestiona el uso de la memoria virtual es el anteriormente mencionado swappiness, y básicamente podemos decir que se encarga de definir que tan seguido accedemos a la partición de intercambio y que tanto contenido copiamos en ella, mediante un argumento que varía entre 0 y 100.

El valor por defecto en una instalación de Linux es de 60, pero como es fácil suponer no todas las configuraciones de hardware son iguales y por ello tampoco tiene sentido mantener ese nivel sin importar cual es la nuestra. Dicho valor es almacenado en el archivo /proc/sys/vm/swappiness, y podemos comprobarlo mediante:

cat /proc/sys/vm/swappiness

Casi seguro estará en 60, y si ese es el caso puede que debamos modificarlo, sobre todo si tenemos más de 4 GB de memoria RAM ya que en ese caso lo habitual será que necesitemos poco y nada de la memoria virtual. Pero antes de explicar como modificar eso veamos un poco cual es la lógica detrás de todo este asunto de la memoria virtual y la swappiness; y es que cuando se lo deja por defecto en 60 lo que se le dice al kernel es que vaya y utilice la memoria virtual cuando nuestra memoria RAM tenga el 40 por ciento o menos de su capacidad libre. Por ende, si establecemos swappiness igual a 100 la memoria virtual se utilizará todo el tiempo, y si la dejamos en un valor muy bajo se utilizará únicamente cuando nuestra memoria RAM esté a punto de agotarse. El mínimo posible es de 1, ya que dejando el valor igual a 0 desactivamos la memoria virtua por completo.

Entonces,lo que tenemos que hacer es ingresar el siguiente comando desde la terminal (Ctrl + Alt + T):

sudo sysctl vm.swappiness=10

Ahora el valor de swappiness quedará en 10, y entonces la memoria virtual apenas se utilizará. Una vez cambiado este valor no es necesario reiniciar el equipo sino que surte efecto de inmediato, y de hecho si reiniciamos el valor volverá a estar ubicado en 60 como antes, porque lo que vamos a necesitar es dejar este cambio establecido en forma permanente. Para ello, una vez que hemos utilizado nuestro ordenador y comprobado que todo marcha bien con el nuevo valor de swappiness, ejecutamos:

sudo nano /etc/sysctl.conf

tras lo cual buscamos el texto vm.swappiness= y agregamos el valor deseado luego del símbolo “=”. Guardamos el archivo y ahora si, el cambio será permanente.


Categorías

Ubuntu

Willy Klew

Ingeniero en Informática, soy un fanático de Linux, Android, la programación, redes y todo lo que tenga que ver con las nuevas tecnologías. Ex... Ver perfil ›

3 comentarios

  1.   cesflo dijo

    Excelente explicación!!! Muy buen artículo!! En mi caso cuando realizo este cambio al reiniciar la notebook vuelve al valor original de 60, es como que el archivo se guarda pero al reiniciar se “formatea”. Ya intente de todo sin éxito, tenes idea que puede estar pasando? Tengo 1GB de Ram.

    Gracias!!

    1.    Willy Klew dijo

      Hola César, me alegra que te haya parecido interesante.

      Si el valor se pierde al reiniciar el sistema yo miraría en /etc/rc.local y los demás scripts de inicio (varían de acuerdo a cada distro) ya que puede ser que esto se establezca al inicio.

      Saludos!

  2.   Pascual Martín dijo

    ¡Muy buena explicación!

    Como complemento, aquí otra de interesante sobre Swap y swappiness en Linux:

    http://www.sysadmit.com/2016/10/linux-swap-y-swappiness.html

Escribe un comentario