El desarrollo del kernel de Linux nunca se detiene. Cada nueva versión llega con optimizaciones, limpiezas de código y, de vez en cuando, alguna innovación que promete mejorar el rendimiento del sistema. En esta ocasión, la atención se centra en una novedad curiosamente llamada “Sheaves” (o “gavillas” en español), que ha comenzado a integrarse como parte del trabajo previo al futuro Linux 6.18.
Un nuevo enfoque en la gestión de memoria
Esta característica —fusionada recientemente en el kernel— actúa como una capa de almacenamiento en caché basada en la matriz de CPU, que se puede activar de forma opcional. Además, Linux introduce ahora un caché de poleas por nodo NUMA conocido como “Granero”, lo que apunta a un sistema más eficiente a la hora de manejar la memoria entre distintos procesadores.
El trabajo sobre Sheaves no se ha quedado ahí. Esta semana se publicó un conjunto inicial de parches que busca reemplazar las losas de CPU dentro del asignador de memoria SLUB por estas nuevas estructuras llamadas “poleas”.
De losas a poleas: el cambio que propone SUSE
El responsable de esta nueva serie de parches es Vlastimil Babka, ingeniero de SUSE, quien tituló su propuesta “slab: reemplazar las losas de la CPU (parciales) con poleas”. En su explicación, Babka detalla los motivos detrás del cambio:
“El almacenamiento en caché de las poleas percpu se introdujo como una opción opt-in, pero el objetivo siempre fue mover todos los cachés a este sistema. Este es el siguiente paso: habilitar las gavillas para todos los cachés (excepto los dos de arranque) y luego eliminar las losas por CPU (parciales) junto con una gran cantidad de código asociado”.
El ingeniero también señala que, además de una mejora potencial en el rendimiento, este cambio simplifica el código al eliminar rutas rápidas sin bloqueo que utilizaban complejas operaciones como this_cpu_try_cmpxchg128/64, las cuales solían causar complicaciones con PREEMPT_RT o kmalloc_nolock().
Menos código, menos complejidad
Babka explica que el nuevo enfoque mantiene la operación de actualización de la lista libre de losas sin bloqueo, algo esencial para liberar objetos NUMA remotos sin necesidad de vaciar las llamadas “matrices alienígenas” de SLUB. También facilita el traslado de objetos desde las poleas hacia las losas sin necesidad de usar el bloqueo principal (list_lock) del nodo.
En otras palabras, este rediseño busca mejorar la eficiencia interna del kernel y reducir las zonas de código complicadas que, durante años, han sido fuente de problemas de rendimiento y mantenimiento.
Qué queda por hacer
Aunque se trata de un primer RFC (Request for Comments), Babka ya ha identificado algunas tareas pendientes importantes:
-
Ajustar los contadores de estadísticas para adaptarse al nuevo esquema.
-
Integrar el manejo de poleas RCU con el procesamiento por lotes de kfree_rcu.
-
Realizar una evaluación de rendimiento completa para medir los beneficios reales.
Por ahora, no se han publicado datos concretos sobre el impacto en el rendimiento. El propio Babka reconoce que, por el momento, “con suerte” se verá una mejora, pero aún falta la validación mediante pruebas de rendimiento.
Simplificación del kernel y primeras impresiones
A pesar de la falta de métricas, el trabajo ya muestra resultados visibles en el código: la migración a Sheaves elimina más de 900 líneas del código existente, aunque añade unas 1.700 nuevas, probablemente mejor estructuradas y más fáciles de mantener a largo plazo.
El autor del artículo original, Michael Larabel, señala que planea ejecutar nuevos benchmarks del kernel de Linux cuando sea posible, con el fin de medir con precisión el impacto de esta nueva arquitectura.
Por ahora, el panorama es prometedor. Este tipo de cambios, aunque invisibles para la mayoría de los usuarios, marcan la diferencia en la estabilidad y eficiencia de Linux. Si los resultados de rendimiento acompañan, Sheaves podría convertirse en una de esas mejoras internas que fortalecen aún más la reputación del sistema operativo como una de las plataformas más robustas del mundo.
Añadir comentario
Comentarios