viernes, 21 de agosto de 2015

Swappiness. Jugando con la swap



Todos sabemos que los programas se ejecutan desde la memoria RAM, pero como esta es cara y limitada, el sistema automáticamente pasa programas que no estén en ejecución a la swap de disco evitando así que agotemos la RAM y el sistema se colapse.

Lo ideal sería tenerlo todo en la RAM, pero no podemos llenarla. Lo bueno sería usar la casi ilimitada swap, pero es lenta.

¿Y si jugamos con las proporciones de una y otra?


El sistema trata automáticamente de mantener una cantidad de RAM libre “por lo que pueda pasar” y llegado a una cantidad de uso de RAM empieza a pasar datos al swap. Él lo gestiona automáticamente, pero podemos ver y modificar este porcentaje de RAM.

Lo primero que haremos será ver qué cantidad de RAM se puede utilizar antes de que el sistema empiece a hacer swap. Para ello en la terminal teclearemos

  • cat /proc/sys/vm/swappiness

Casi seguro que te devolverá un 60, lo que quiere decir que cuando el uso de RAM pasa del 60% es cuando entra en juego el swap.

¿Y si queremos modificarlo? Vamos a torturar a un amigo, haciendo que su equipo empiece a usar el lento swap cuando tenga utilizado solo el 20% de RAM. Tenemos que abrir una terminal y logarnos como root. En este caso, no nos servirá de nada usar sudo.

  • echo 20 > /proc/sys/vm/swappiness

Si repetimos el cat /proc/sys/vm/swappiness que usamos antes, veremos que el PC solo usa el 20% de la memoria antes de empezar a usar swap, con lo que el rendimiento del equipo…

Pero ahora vamos a obrar el milagro y mejorar el rendimiento “espectacularmente”. Vamos a usar un 70% de RAM antes del swap

  • echo 70 > /proc/sys/vm/swappiness

Podemos hacer varias pruebas hasta quedar contentos con el rendimiento del equipo y conseguir el equilibrio perfecto entre RAM y swap. Una vez logrado, podemos fijar el valor editando, de nuevo como root, el fichero /etc/sysctl.conf al que le añadiremos al final una línea que diga

vm.swappiness = el_valor_que_hemos_pensado_que_es_el_optimo

Si ya existe la línea, lo que haremos es cambiar el valor por el que nosotros queramos.

Y ahora, para que coja el nuevo valor, tenemos dos opciones. La de ex-windowsero, que no es otra cosa que reiniciar. Y la de linuxero, que es ejecutar

  • sysctl –p
Y así amigos es como se juega con el porcentaje de RAM y swap

6 comentarios:

  1. ¿Estás seguro de que es así y no al revés?

    En todos los tutoriales de optimización de la ram que he visto dicen lo contrario. Es decir, a menos valor del " swappines " menor uso de la memoria de intercambio.

    Un saludo

    ResponderEliminar
    Respuestas
    1. Yo lo ha leído y entendido así, pero lo revise

      Eliminar
    2. Revisa que creo que lo has entendido mal.
      A menor valor de vm.swappiness menor uso de de swap
      Aquí lo explican graficamente:
      http://aplicacionesysistemas.com/swappiness-en-sistemas-gnu-linux-que-es-y-como-configurarlo/

      Eliminar
  2. Es porque le quedo al revés; swappiness=0 con este valor solo usaría la memoria RAM

    ResponderEliminar

prekes sodui