Recientemente, Linux ha incorporado dos pequeños parches (uno con una extensión de tan sólo una línea, el otro de tan sólo 20 líneas más) que han demostrado tener un impacto insospechablemente mayúsculo en el rendimiento del kernel del sistema operativo libre por excelencia.
El parche 'mmap'
El bot de pruebas automatizadas del kernel de Linux, mantenido por Intel, Intel ha sido capaz de identificar una mejora de rendimiento del 3888,9% (casi del cuatro mil por ciento, sí) en el kernel de Linux... causada por una única línea de código.
Concretamente, una línea de un parche (llamado 'mmap') que reajusta la forma en que se alinean ciertos bloques de memoria llamados THP (pedazos grandes de memoria diseñados para mejorar el rendimiento al reducir la sobrecarga de gestión).
Básicamente, el kernel hacía que las asignaciones de memoria más grandes siguieran una regla estricta para alinearse de una manera específica. Esto, aunque tenía buenas intenciones, estaba causando problemas en algunos programas que no funcionaban bien con esa regla, lo que resultaba en ralentizaciones significativas.
¿Qué soluciona este parche?
Tras un cambio en el kernel realizado hace más de un año, el benchmark 'cactusBSSN' empezó a funcionar mucho más lento, (hasta un 600% en algunos PCs). Esto pasó porque este programa utiliza memoria en tamaños "inusuales" (como 4632 kB).
Antes del cambio, estos tamaños se podían juntar en bloques grandes, que el sistema podía manejar fácilmente. Pero después del cambio, estos bloques se dividían en piezas más pequeñas, dejando "espacios vacíos" entre ellos.
Esto causó que el sistema tuviera más problemas para encontrar y usar la memoria eficientemente. El mismo problema terminó afectando a Darktable, un popular programa de edición de fotos.
Un parche by Linus Torvalds
Linus Torvalds, creador del kernel de Linux, ha vuelto a demostrar por qué sigue liderando su desarrollo (y por qué es considerado uno de los más grandes expertos de su campo): con uno de sus últimos parches al código del kernel, de tan sólo 21 líneas de código, Torvalds ha logrado un aumento del 2,6% en el rendimiento multihilo del kernel de Linux.
Este parche lleva integrado en la versión estable del kernel de Linux desde la versión 6.12, lanzada hace menos de un mes.
Suprimiendo una medida de seguridad eficaz (pero no eficiente)
La modificación se centra en la función 'copy_from_user()' del kernel de Linux, y una de sus novedades radica en la supresión del uso de 'barrier_nospec()', una medida de seguridad introducida en su momento para mitigar las vulnerabilidades conocidas como Meltdown y Spectre.
Descubiertas en 2018, estas vulnerabilidades explotaban la ejecución especulativa, un mecanismo de los procesadores modernos diseñado para predecir y cargar instrucciones antes de ser necesarias, optimizando así el rendimiento.
El problema es que la implementación de la citada medida de seguridad, aunque bastante efectiva, ha demostrado ser extremadamente lenta, afectando notablemente el rendimiento en sistemas multihilo y aplicaciones de alta frecuencia de llamadas, como servidores proxy y bases de datos.
La solución de Torvalds: eficiencia en la simplicidad
Este dilema ha sido una constante en la evolución del kernel de Linux: proteger los sistemas sin sacrificar rendimiento. Torvalds, conocido por su oposición a medidas que impacten desproporcionadamente la velocidad, ha logrado una solución que mitiga ambos problemas.
Así, fiel a su filosofía de equilibrio entre seguridad y rendimiento, introdujo una optimización basada en el uso de enmascaramiento de punteros: asignar una dirección de todos unos ('111...111') en situaciones donde la dirección proporcionada por el usuario sea inválida.
Este cambio no sólo mantiene la seguridad necesaria, sino que también elimina operaciones redundantes, mejorando la eficiencia del sistema.
El impacto de esta solución fue confirmado por pruebas automatizadas realizadas en entornos multihilo, mostrando un aumento del 2,6% en el rendimiento. Aunque pueda parecer un avance modesto, su efecto se amplifica cuando se considera la escala global de uso de Linux, desde servidores y servicios en la nube hasta dispositivos locales.
Vía | Phoronix & The Register
Imagen | Marcos Merino mediante IA
Ver 5 comentarios