En este momento estás viendo Optimizar el uso de la memoria swap

Optimizar el uso de la memoria swap

La memoria swap también es llamada partición de intercambio. Es un espacio que el sistema operativo utiliza como RAM.

Sumario

  • Que es y para que se utiliza
  • Razón para minimizar el uso de la swap
  • Casos en los que no interesa minimizar la swap
  • Cantidad de swap recomendable
  • Minimizar el uso de la swap
  • Tranferir de la swap a RAM todos los datos

Que es y para que se utiliza

Cuando instalamos un sistema operativo linux, habilitamos una partición en el disco duro, para la memoria swap. Esta memoria es llamada también partición de intercambio. Cuando los procesos en ejecución en nuestro sistema, llenan la memoria RAM, este recurre a esta partición del disco en busca de más espacio. Esto está pensado para liberar a la RAM de carga de trabajo.

En los S.O. Windows, se utiliza un fichero que se llama «archivo de paginación», que persigue el mismo objetivo. Este está ubicado en la misma partición de trabajo, viéndose limitada su velocidad de lectura y escritura.

Cuando la RAM alcanza cierto nivel de carga, podemos configurar, mediante el parámetro swappines, el Kernel del S.O. linux, que buscará los datos de los procesos que menos usamos y los moverá al área de intercambio o swap del disco duro. Así estamos liberando memoria RAM para trabajar con más procesos.

Razón para minimizar el uso de la swap

Tenemos que tener en cuenta que la velocidad de lectura y escritura en la memoria RAM es muchísimo más rápida que la relativa a un disco duro, aunque sea un SSD. Por ello, si el sistema utiliza mucha swap, todo irá mucho más lento.

Por otra parte, los SSD tienen un número limitado de escrituras, y si el sistema lo utiliza constantemente, limitará en el tiempo la vida del dispositivo.

Casos en los que no interesa minimizar la swap

En determinadas circunstancias no es recomendable minimizar el uso de la swap. Veamos:

  • En servidores con mucha carga de trabajo. Es absolutamente necesario para asegurar los servicios en momentos de gran demanda.
  • En equipos antiguos con muy poca RAM.
  • En estaciones de trabajo, que aunque tengan mucha RAM, ejecutan aplicaciones con un alto consumo de memoria.
  • En equipos que se utilicen para compilar aplicaciones con mucho peso.

Cantidad de swap recomendable

Aquí «cada maestrillo tiene su librillo». Lo cierto es que depende de muchas cosas, cantidad de RAM, trabajo que vaya a realizar el equipo, procesador, etc..

Por ejemplo, si hablamos de instalar Linux, nos encontramos con que «Red Hat» recomienda un tamaño de swap del 20% del tamaño de la RAM (para equipos con 4GB o más);

«CentOS» recomienda que la memoria swap sea el doble de tamaño de la RAM en equipos de 2GB o menos y, en equipos con más de 2GB de RAM , 2 GB es suficiente. Si el equipo tiene 5GB o más, debemos asignar 3GB de swap.

«Ubuntu» por su parte, dice:

  • Si la RAM es menos de 1GB, la swap debe ser al menos de 1GB y 2GB como máximo.
  • Si la RAM es más de 1GB la swap debe ser como mínimo la raíz cuadrada de la RAM y como máximo el doble de la RAM.

Por otro lado, e independientemente del S.O. utilizado, si se usa la hibernación, la swap debe ser igual al tamaño de la RAM más la raíz cuadrada de esta, pues cuando hibernamos el equipo se cargan todos los datos de la sesión en la memoria de intercambio.

En el caso de los servidores habrá que valorar la carga máxima de trabajo que deberá realizar para seguir dando el servicio.

Minimizar el uso de la swap

Como hemos visto, en cualquier equipo medianamente moderno, dispondremos de suficiente RAM para querer evitar o retardar el uso de la swap en nuestro sistema operativo y usar la memoria RAM siempre que sea posible.

El encargado de gestionar el uso de RAM y de swap es el nucleo del S.O. (Kernel). En Linux disponemos de una herramienta que se llama swappiness, con la que modificando su valor, le indicamos al Kernel cuando debe empezar a usar la swap.

Este valor está en un rango entre 0 y 100. Por ejemplo, podemos ponerle un valor de «90», si queremos que solo se empiece a usar la swap cuando tengamos el 90% de la RAM en uso.

La mayoría de los S.O. Linux, por defecto, tienen asignado un valor swappiness de 60, seguramente pensando en servidores, pero inadecuado en escritorios. En un equipo moderno con suficiente RAM, un valor de 90 o incluso de 95 sería suficiente.

Para ver el valor de configuración actual que tenemos ejecutamos:

cat /proc/sus/vm/swappiness

Como vemos el valor es 60, el asignado por defecto. Si queremos aumentar el valor a 90, por ejemplo,

sudo sysctl vm.swappiness=90

Al situar el valor en 90, el S.O. usará muy poco la swap , solo cuando esta alcance un uso del 90%. Una vez establecido el nuevo valor, deberemos utilizar el equipo durante un periodo de tiempo razonable, para asegurarnos de que el rendimiento es bueno y el sistema estable.

Pero esta configuración solo afecta a la sesión. Si reiniciamos sesión el valor volverá a 60. Para cambiar esta configuración y hacerla persistente, tenemos que editar el fichero «sysctl.conf»

sudo nano /etc/sysctl.conf

Y añadir la linea

vm.swappiness=90

Tranferir de la swap a RAM todos los datos

Con la swap activada, poco a poco, se va saturando y ralentiza el funcionamiento del sistema. Podemos reiniciar el equipo, pero a veces no es una opción. Por eso vamos a ver como podemos transferir el contenido de memoria swap a la RAM, sin apagar el equipo.

En primer lugar tenemos que ver el estado de la memoria, para ello ejecutamos,

free -h 

Con «-h» vemos los valores entendibles para los humanos..

Para realizar la transferencia ejecutamos los siguientes comandos

sudo swapoff -a ; sudo swapon -a

Si observamos el Monitor del sistema, mientras ejecutamos los comandos,

La linea verde representa el uso de swap y la roja la RAM. Como vemos, al iniciar el traspaso, la cantidad de RAM y swap usada era la misma. Se produce el traslado y el uso de la swap baja a cero.

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en el pie de la página o desde aquí mismo.

Esta entrada tiene 4 comentarios

  1. Ricardo

    Buenas, me acabo de instalar debian 11 en un pc con un intel atom x5-z8350, 4 gb de ram y 64 de EMMC, como no estaba seguro he dejado el particionado del disco por defecto y me crea una partición swap de 8gb.
    Mis preguntas son:
    ¿puedo hacer la partición manual y no dejarle nada de swap? para que únicamente use la ram.
    ¿es recomendable no usar nada de swap? Es para uso ofimático, ver videos y Youtuve.

    1. Buenos días Ricardo. No es recomendable no utilizar una partición swap, aunque si que puede funcionar el sistema sin ella. Puedes regular el uso de la swap con el valor swappiness, pero no lo creo necesario para un uso normal como dices. Ten en cuenta que si abres muchas pestañas en el navegador, necesitaras más ram o swap.
      Por otro lado ten presente que cuando hibernas el equipo, todo se carga en la swap para cuando reinicias la sesión. Por eso al hacer la instalación te asigna tanta swap. Yo te recomendaría que lo dejes así. Puedes monitorear un tiempo el uso de ram que haces y luego decidir si reduces el espacio en disco para la swap. Si no tienes problema de almacenamiento, te recomiendo que lo dejes como está.
      Gracias por tu pregunta y visita.

  2. Pedro

    Hola, tengo una duda… al traspasar los procesos de la swap a la ram, no seria como un reinicio? porque creo que mataria los procesos en la swap y los re ejecutaria en la ram. Yo pregunto, porque en la empresa tengo un servidor que se me consume el 100% de la swap dos procesos propios del dominio. y no se si al hacer swap off y swap on pueda generar alguna perdida de data.

    1. No mata ningún proceso. Simplemente los traspasa a la RAM como puedes ver en el monitor del sistema. Te funcionara todo mejor cuanto menos uso hagas de la swap.
      Gracias Pedro por tu pregunta.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.