logo linux

Por qué es importante la partición de intercambio (swap) en Linux

Los sistemas de hoy en día dispone de una cantidad tal de memoria RAM. Eso hace que en muchas ocasiones se pueda cuestionar la utilidad de la partición de intercambio desactivándola. Pero eso no es correcto en sistemas Linux.

La principal utilidad de una partición de intercambio (swap o paginación) es de servir como una ampliación de la memoria RAM en caso de que esta se gaste. Esto resulta útil cuando, puntualmente, se consume más memoria de la disponible y necesitamos seguir ejecutando el programa. Sin swap, el programa no podría funcionar si no hubiera suficiente RAM libre.

swap
Esquema de los distintos tipos de memoria en Linux. Fuente: IBM

El principal problema es que la partición de intercambio se almacena en el disco duro y eso significa que el rendimiento sufre una caída importante debido a las limitadas tasas de transferencia de los dispositivos de almacenamiento masivo frente a las tasas de la memoria RAM. En cualquier caso, es el precio que hay pagar para usar más RAM de la disponible físicamente en el sistema.

Por cierto, existe una confusión generalizada en la denominación de la partición de intercambio y la memoria virtual. Estos dos conceptos son completamente diferentes y no tienen ninguna relación entre sí. Para saber por qué, puedes leer la entrada que dedicamos hace unos meses al monitor del sistema Top.

Otra función de la partición de intercambio es almacenar el contenido íntegro de la memoria RAM cuando se hiberna el sistema. La hibernación consiste en guardar en disco todos los datos almacenados en dispositivos de memoria volátil (RAM, registros, etc). De esa forma, la próxima vez que se enciende el ordenador en vez de arrancar el sistema, se vuelva el contenido almacenado en disco a la memoria y el ordenador continúa funcionando como si no se hubiera apagado.

Cuando se va a dimensionar la partición de intercambio siempre surge la duda del tamaño que deberá tener y lo típicamente recomendado es darle el mismo tamaño que de RAM instalada. Esto es así exclusivamente por el almacenamiento del archivo de hibernación. Este tamaño podría ser superior si fuera necesario. Y también podría ser inferior si no vamos a hibernar. Esta última opción se ha vuelto corriente hoy en día gracias a las unidades SSD, que realizan un arranque del sistema muy rápido.

Una vez que en la mayoría de PCs actuales deja de ser necesaria la hibernación para acelerar el arranque, a muchos les podría entrar dar la tentación de no usar swap, es decir, no tener partición de intercambio debido a ven improbable quedarse sin RAM y al hecho de que cuando el sistema tira de paginación (swap), se ralentiza hasta extremos insoportables.

Si leemos la documentación de kernel al respecto, nos encontrarmos con esto:

Hay dos razones principales por las que es deseable disponer de swap. La primera es que expande la cantidad de memoria que puede usar un proceso. La memoria virtual y el swap permiten a un proceso grande ejecutarse incluso si el proceso sólo está residente parcialmente. Conforme las páginas de memoria «viejas» se meten en swap, la cantidad de memoria direccionada puede fácilmente superar a la RAM mientras las páginas necesarias se recargan cuando hacen falta.

El lector ocasional  podría pensar que con una cantidad suficiente de memoria, el swap es innecesario pero eso nos trae a la segunda razón. Un número significativo de páginas referidas por un proceso en su ejecución temprana podrían ser usadas para la inicialización y nunca volver a ser usadas. Es mejor meter esas páginas en swap y crear más buffer para el disco que dejarlas residentes y no usadas.

Así que independientemente de que necesitemos o no más RAM, es aconsejable permitir al sistema ir metiendo en la partición de intercambio todas las páginas de memoria que no se usen porque de esa forma se deja más espacio al buffer del disco. El buffer de disco es una porción de RAM que se emplea para almacenar los datos del disco duro más usados. Este buffer acelera enormemente la respuesta del sistema cuando se quiere acceder a dicha información y evidentemente, cuanta más RAM haya libre, más probable será que en el buffer de disco se encuentren los datos a los que queremos acceder. Una vez más, podéis echar un vistazo a la entrada sobre Top enlazada más arriba para saber los tipos de memoria que hay en un sistema Linux.

Permitir al sistema liberar esta porción de RAM tiene mucho sentido cuando se sabe que esas páginas de memoria no se van a volver a usar más, con lo cual no va a producirse una merma del rendimiento.

Paradójicamente, aunque el mayor inconveniente de la partición de intercambio  es su extremadamente lenta velocidad, nos encontramos con que la mejor virtud del swap para sistemas con RAM de sobra, es el aumento del rendimiento del equipo al permitir mayores porciones de datos de disco en RAM.

Por último, y por petición de una lectora en Facebook, ¿en que parte del disco se debe crear la patición de intercambio (al principio, en medio, al final)? Los discos duros mecánicos son más rápidos en los primeros sectores ya que se encuentran en la periferia física del disco (más bits por revolución). No obstante, el talón de aquiles es el acceso a datos aleatorios ya que el movimiento de las cabezas suponen unos tiempos muertos que hacen caer la tasa un par de órdenes de magnitud con respecto a la lectura de un bloque de datos continuo. Por eso da igual dónde se encuentre la información de intercambio: va a ser extremadamente lento sea cual sea el caso.

La partición swap ocupa un bloque continuo del disco (la propia partición) y el algoritmo empleado se encarga de escribir las páginas de memoria con un orden tal que su lectura sea lo más continua posible intentando evitar saltos de los cabezales del disco. Habitualmente, los instaladores ponen la partición de swap entre la del sistema «/» y la partición de datos «/home» o al final del disco en caso de sólo haya una partición para todo. Es preferible dejar la «parte rápida» del disco para lecturas/escrituras habituales (sistema operativo y programas) que para operaciones esporádicas (swap) donde, además, no se aprovecha la velocidad extra que ofrece esa parte del disco.

Para conocer todos los detalles sobre cómo funciona la partición de intercambio en Linux, puedes leer la documentación al respecto.

1 comentario en “Por qué es importante la partición de intercambio (swap) en Linux

  1. Eso explica por qué en el monitor del sistema a veces veo que se está consumiendo swap cuando tengo memoria de sobra. En varias ocasiones he estado a punto de eliminar la partición swap pero leyendo esto creo que será mejor dejarla donde está.

Los comentarios están cerrados.