Linux mejora la gestión de swap con varios discos: así funciona.

Publicado el 14 de julio de 2026, 9:34

Si alguna vez has configurado un servidor Linux con más de un disco dedicado a swap, seguramente sabes que el sistema no siempre reparte la carga de la forma más eficiente. Un nuevo conjunto de parches presentado para el kernel de Linux busca precisamente resolver ese problema, mejorando cómo el sistema distribuye la entrada y salida de datos cuando hay múltiples dispositivos de intercambio en juego. No es una función que vaya a notar la mayoría de usuarios de escritorio, pero para quienes administran infraestructuras Linux más complejas, este cambio puede marcar una diferencia real en rendimiento y previsibilidad. La propuesta viene de un ingeniero de Tencent, Kairu Song, que lleva tiempo trabajando en reorganizar la forma en que el kernel gestiona el swap cuando hay más de un dispositivo disponible. La serie se ha enviado como RFC, es decir, como una solicitud de comentarios a la comunidad antes de integrarse formalmente, lo que indica que todavía está en fase de discusión y revisión técnica.

Qué problema resuelve este nuevo diseño de swap

Para entender por qué esto importa, conviene saber cómo funciona hoy el intercambio de memoria en Linux cuando hay varios discos implicados. Actualmente existe una caché de clúster que funciona a nivel global y que comparten todos los dispositivos de intercambio del sistema. Esta caché se introdujo en su día para acelerar la asignación rápida de swap, y en la práctica cumple bien su función cuando solo hay que repartir trabajo entre dispositivos equivalentes. El problema aparece en escenarios más avanzados, como el intercambio por niveles o el intercambio en capas, donde no todos los dispositivos son iguales ni deben tratarse de la misma manera. En esos casos, el sistema necesita poder omitir ciertos dispositivos de forma selectiva, pero la caché global no está pensada para eso: no tiene una propiedad estable por dispositivo, así que saltarse uno implica también saltarse la caché entera, lo que termina generando un rendimiento mucho peor del esperado.

Cómo gestiona Linux hoy el intercambio entre varios dispositivos

Más allá de la caché, el diseño actual se apoya en una estructura llamada plist para rotar entre los distintos dispositivos de intercambio siguiendo un esquema de turnos. Cada vez que el sistema necesita elegir un dispositivo, tiene que bloquear esa estructura, seleccionar el dispositivo, desbloquear, realizar la asignación y volver a bloquear para rotar. Es un ciclo que obliga a todas las CPUs del sistema a competir por acceder a la misma cabecera de lista global, algo que no escala bien cuantos más núcleos y dispositivos entran en juego. A esto se suma que la rotación entre dispositivos se trata como un camino lento dentro del código, lo que a lo largo del tiempo ha obligado a introducir varias soluciones parciales para evitar cuellos de botella. El resultado es un sistema que funciona, pero que arrastra reglas poco claras sobre cuándo y cómo rota realmente entre dispositivos, con un tamaño de bloque de rotación que varía de forma difícil de predecir.

Qué cambia la propuesta de Tencent para el kernel

La serie de parches plantea eliminar por completo tanto la lista mutable como el bloqueo global que la acompaña. En su lugar, propone un nuevo esquema de bloqueo basado en permisos por CPU, tanto para la gestión de los dispositivos de intercambio como para una nueva cola de prioridad asociada. La idea de fondo es permitir que la asignación y la rotación entre dispositivos ocurran de manera más libre y flexible, sin depender de una única estructura global que todos los procesadores tengan que disputarse. Este rediseño elimina también la caché global de clúster tal y como existe hoy, sustituyéndola por un enfoque que sí puede convivir con conceptos como el intercambio en capas o por niveles. Según explica el propio autor de la serie, se ha tenido en cuenta desde el principio cómo encajarían estas ideas de nivelado y capas, precisamente para que el nuevo diseño no se convierta en un obstáculo cuando esas funciones avancen en el kernel.

Es importante señalar que, al tratarse de una solicitud de comentarios, la intención declarada es que estas propuestas de nivelado y capas se integren primero, y que esta reorganización del sistema de bloqueo llegue después como una optimización que se apoye en esa base. Es decir, no se trata de un cambio aislado, sino de una pieza dentro de un esfuerzo más amplio por modernizar la gestión de memoria virtual en Linux.

Qué significa esto para el futuro del intercambio en capas

Aunque estos cambios se mueven en un terreno muy alejado del día a día de un usuario de escritorio, tienen implicaciones interesantes de cara al futuro. El intercambio en capas, donde se combinan dispositivos más rápidos y más lentos según su papel dentro del sistema, es una técnica cada vez más relevante en entornos de servidores y centros de datos, donde exprimir cada recurso de almacenamiento tiene un impacto directo en costes y rendimiento. Que el propio diseño de bajo nivel del kernel empiece a tener en cuenta estos escenarios desde su arquitectura, en lugar de forzarlos sobre una estructura pensada para otra cosa, es un indicio de hacia dónde evoluciona la gestión de memoria en Linux. Todavía queda camino por recorrer antes de que estos parches lleguen a un kernel estable, y como ocurre con cualquier RFC, es probable que el diseño final cambie tras la revisión de otros desarrolladores del subsistema de memoria.

Lo que sí queda claro es que decisiones que parecen puramente técnicas, como la forma en que un sistema operativo reparte datos entre varios discos de intercambio, terminan reflejando algo más amplio: cómo Linux sigue adaptando piezas que llevan años en su núcleo para responder a las necesidades de una infraestructura cada vez más diversa y exigente.

Añadir comentario

Comentarios

Todavía no hay comentarios