Nota: Este artículo fue publicado originalmente en 2014. Algunos pasos, comandos o versiones de software pueden haber cambiado. Consulta la documentación actual de Ubuntu para obtener la información más reciente.

En esta guía paso a paso, aprenderás a configurar swappiness en Ubuntu. Ubuntu es una distribución popular de Linux basada en Debian, ampliamente utilizada para servidores y entornos de desarrollo.

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Un sistema con Ubuntu (edición de escritorio o servidor)
  • Acceso a la terminal con privilegios sudo
  • Familiaridad básica con la línea de comandos de Linux

Cómo: Configurar Swappiness en Ubuntu

En uno de mis artículos anteriores sobre (</install-swap-file-windows-azure-ubuntu-vm/> “How to: Install a swap file in a Windows Azure Ubuntu VM”) cubrí cómo instalar un espacio de intercambio (swap) para una VM de Windows Azure. Implementé swap principalmente como una precaución contra quedarse sin memoria, lo cual podría resultar en que las aplicaciones no funcionen correctamente y el sitio podría caerse. Para evitar eso, se implementa swap que muy probablemente disminuirá la velocidad de tus servicios, pero al menos no se colapsarán. Efectivamente te compra tiempo para resolver tus problemas de memoria a expensas de usar el disco duro, lo que resulta en latencias adicionales. Así que hasta ahora configurar tu memoria swap parece genial, pero cuidado, si tu swappiness no está configurado correctamente enfrentarás latencias innecesarias. En mi caso, todavía tenía más de un gigabyte de memoria disponible pero ya estaba haciendo mucho swapping. No tiene sentido hacer swapping cuando hay suficiente RAM disponible; solo estás moviendo información dentro y fuera de la memoria que fácilmente podría caber toda en memoria. Swappiness entonces controla qué tan agresivamente debe el sistema operativo usar el espacio de intercambio.

¿Qué es Swappiness?

El parámetro swappiness en Ubuntu controla la tendencia del kernel del sistema operativo a mover la memoria (información) utilizada por los procesos fuera de la memoria física y hacia el disco de intercambio. Como se mencionó anteriormente, usar un disco duro es por naturaleza mucho más lento que usar RAM. Esto resulta en que las aplicaciones tarden más en responder, particularmente aquellas que están siendo intercambiadas al disco (las demás sufren indirectamente por las operaciones de E/S adicionales, pero al menos ya están presentes en RAM).

Hay algunas cosas importantes que saber sobre cómo usar este parámetro:

  • Los valores aceptados de Swappiness van de 0 a 100 inclusive.
  • Un valor de 0 indica al kernel que evite el intercambio a toda costa.
  • Un valor de 100 indica que debe intercambiar agresivamente la información en memoria.

Así que hasta ahora debes estar pensando después de leer mis opiniones sobre swappiness que 0 es el camino a seguir: ten cuidado con esa elección. La respuesta correcta depende de muchas cosas, incluyendo tus aplicaciones, el uso y la capacidad del sistema. Por ejemplo, supón que usas un valor de 0 y la memoria está casi llena. Si intentas ejecutar una aplicación grande habrá un retraso hasta que el sistema pueda liberar suficiente memoria intercambiando procesos antes de que puedas usar tu aplicación. Toma el otro extremo de 100: Deberías tener en todo momento suficiente RAM para lanzar procesos grandes, pero tu tasa de respuesta general de tu máquina sufrirá un impacto en el rendimiento.

Ubuntu ha determinado por defecto que un valor de 60 es ideal para la mayoría de los usuarios. Permite que la memoria esté disponible para lanzar nuevas aplicaciones mientras no es tan agresivo como para causar un gran impacto en el rendimiento. Pero como mencioné, el mejor valor para tu máquina depende del uso que le des al sistema. Por ejemplo, estoy ejecutando un servidor que eventualmente lanza procesos para atender solicitudes entrantes, pero su tamaño es relativamente pequeño y en su mayor parte siempre tengo suficiente RAM para manejar todos los servicios necesarios. En mi caso me gusta usar un valor de swappiness de 10. Deberías pensar en tus patrones generales de uso de RAM y siéntete libre de experimentar. Espero que los valores límite (0 y 100) sean demasiado extremos, pero puedes ver cuál es la diferencia entre 25 y 75, por ejemplo.

¿Cómo configuro Swappiness?

Esto es bastante fácil. Hay un archivo (/proc/sys/vm/swappiness) que se usa durante la operación y que indica el swappiness actual bajo el cual está funcionando el sistema. Cambiar este valor resultaría en que el swappiness del sistema se cambie durante la duración del kernel (es decir, hasta que reinicies / apagues y vuelvas a encender).

Si quieres ver el valor, recomiendo usar cat en lugar de nano para evitar editar accidentalmente el archivo:

$ cat /proc/sys/vm/swappiness
60

Probablemente verás el valor predeterminado de 60 a menos que ya haya sido modificado. Como mencioné, podrías modificar el archivo, hacer swapoff y luego activarlo de nuevo para que el cambio tenga efecto solo durante tu sesión actual. Si modificas el valor a través del comando sysctl (recomiendo no editar el archivo /etc/sysctl.conf directamente para evitar romper accidentalmente algo más). Dicho cambio solo tendrá efecto después de reiniciar la máquina. Supón que quieres usar un nivel de swappiness de 15:

$ sysctl vm.swappiness=15

Si quieres, puedes ejecutar swapoff -a y swapon -a para que tu nuevo valor de swappiness se aplique al sistema (en lugar de tener que reiniciar, esta podría ser una opción atractiva).

No olvides verificar tu uso de memoria con free -m para ver el tamaño y uso del swap.

¿Qué valor de swappiness recomiendas?

Esta es mi opinión personal y deberías monitorear tu uso de swap y rendimiento para ajustarlo. Creo que este es un buen punto de partida, pero usa tu propio criterio, experimenta y decide qué es lo mejor para ti.

Swappiness Recomendado Memoria generalmente disponibleTamaño relativo de nuevos procesosSwappiness Recomendado
MuchaPequeño< 10
MuchaMediano10 < x < 20
MuchaGrande15 < x < 30
MediaPequeño10 < 15
MediaMediano15 < x < 25
MediaGrande25 < x < 45
PocaPequeño35 < x < 60
PocaMediano50 < x < 70
PocaGrande65 < x < 90

Todo se vuelve relativo pero entiendes la idea general: Cuanta más memoria generalmente tengas libre o disponible, menor será el swappiness que puedes usar. También, cuanto más grandes sean los nuevos procesos que lances, mayor será el swappiness que necesitarás para que puedan caber correctamente en memoria si es necesario. Considera el siguiente escenario: Tienes una máquina con 16gb de RAM y generalmente solo usas 2gb. Nunca has usado más de 13gb y no esperas hacerlo. Así que incluso si los nuevos procesos usan mucha RAM, nunca te quedas sin memoria, por lo que un valor de 10 o inferior sería recomendable (incluso 0).

Si quieres, siéntete libre de proporcionar a través de los comentarios las especificaciones de tu sistema, patrones de uso de memoria y puedo ayudarte a elegir un valor inicial con el cual experimentar.

(http://img.zemanta.com/zemified_h.png?x-id=5a719463-cced-4eb4-b803-0e78fba9e3bb)](http://www.zemanta.com/?px “Enhanced by Zemanta”)

Resumen

Has aprendido exitosamente a configurar swappiness en Ubuntu. Si encuentras algún problema, verifica los requisitos previos y asegúrate de que tu entorno de Ubuntu esté correctamente configurado.

Artículos Relacionados