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.


15 comentarios, deja el tuyo

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  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

  3.   lacondiciondeespectador dijo

    no sabes lo bien que me viene esto gracias

  4.   clerygo dijo

    Saludos,

    En mi /etc/sysctl.conf no esta el texto vm.swappiness=, lo busquè bien, el archivo es pequeño. A menos que tenga que agregarlo, el articulo dice que busque y modifique el valor, no que agregue la linea.

  5.   Lewis dijo

    Saludos,

    En mi /etc/sysctl.conf no esta el texto vm.swappiness=. A menos que tenga que agregarlo, el articulo dice que busque y modifique el valor, no que agregue la linea.

  6.   Nosferatus dijo

    Debes crearlo, al final del fichero pones vm.swappiness=10 y listo.

    Si no se guarda al reiniciar podría ser porque no usas la orden sudo.

    Ubuntu: sudo gedit /etc/sysctl.conf
    Xubuntu: sudo mousepad /etc/sysctl.conf

  7.   santiago dijo

    Excelente articulo. Graciass!

  8.   Roberto dijo

    Se puede poner cero. que problemas pueden aparecer?

  9.   José Castillo Ávalos dijo

    Hola y gracias Willy Clew por tu artículo que me deja claro el proceso para usar la memoria swapp, pero me produjo una enorme duda porque al ingresar al terminal y ejecutar los comandos que indicas me devuelve el mensaje que dice:

    bash: cat/proc/sys/vm/swappiness: No existe el archivo o el directorio

    ¿A qué puede deberse esto?

    1.    Andrés Choque Lopez dijo

      Lo escribiste mal. No pusiste el espacio después de «cat».

  10.   icemodding dijo

    genial, lo compartimos en el grupo de ubuntu en español https://t.me/ubuntu_es

  11.   Smith dijo

    Excelente me funciono en Debian 10.9

  12.   Juan dijo

    soy informático he instalado y probado varias distros, la mejor opción de configurar el swappiness es escribir en la terminal

    sudo nano /etc/sysctl.conf

    luego de presionar enter escribir la clave y enter de nuevo, escribir entonces al final la siguiente linea

    vm.swappiness=0

    luego presionar ctrl y la tecla x a la vez, el genera una pregunta de que si desea guardar la nueva sentencia en el archivo entonces presionar la tecla Y para decirle que si y n para que no lo guarde

    ¿por que escribí cero 0? Hechas ya las pruebas en distintas pcs que he programado pues esa es la mejor opción ya que usa cuya paginacion pero por ejemplo si se abre chromium o algún navegador abriendo facebook pues la memoria de intercambio (swap o llamada también paginacion) aumentara pero cuando se cierra sesión y el navegador o cualquier programa pues la memoria de paginacion (swap) disminuirá liberando del disco duro la cual es útil para evitar dañarlo recordemos que la memoria de intercambio o llamada paginacion (swap) utiliza el disco duro.

  13.   Norberto Gonzalez dijo

    No entendi, disculpas. Si por defecto esta en 60 para que swap se active faltando 40 o menos, al poner el parametro en 10. ¿No se activaria con el 90 de la ram libre? Haciendo mas lento el intercambio de datos