BookinglyTech News
Software

Redox Rings lleva io_uring a Redox OS y multiplica por 15 el rendimiento de E/S

El sistema operativo de micronúcleo escrito en Rust estrena una API de buffers circulares equivalente a io_uring, suma multi-núcleo en ARM64 y arregla una fuga de memoria que disparaba los tiempos de compilación.

3 min de lecturaLobsters0 vistas

Redox OS ha publicado su resumen de agosto, y el mes viene cargado. El proyecto, un sistema operativo tipo Unix con micronúcleo escrito en Rust, ha estrenado Redox Rings, una API de comunicación por buffers circulares equivalente al io_uring de Linux, ha añadido soporte multi-núcleo en AArch64 y ha conseguido arrancar en un portátil MSI Modern 14 C7M gracias a las mejoras de compatibilidad UEFI. En las pruebas del driver NVMe, la mejora de E/S que reportan llega a ser de 14 a 15 veces.

Rendimiento: io_uring propio y el compilador que dejó de arrastrarse

Redox Rings lo han implementado Ibuki Omatsu y Anhad Singh con la orientación de 4lDO2 y la ayuda de Wildan Mubarok para cazar bugs. Afecta al driver NVMe, a RedoxFS y a RAMFS, y el benchmark que enseñan mide el acceso al NVMe saltándose el sistema de ficheros para aislar la ganancia. La cifra es del propio proyecto y sale de QEMU, no de hardware real, así que conviene leerla como lo que es.

El otro número grueso del mes tiene menos truco. Wildan Mubarok llevaba meses investigando por qué la compilación de GCC se degradaba con el tiempo y acabó dando con una fuga de memoria en el kernel. Compilar la suite de pruebas os-test en QEMU había pasado de 2 horas a 10, con errores de memoria agotada por el camino. Con la fuga tapada, ese tiempo se quedó en unos 30 minutos. A eso se suma el cierre del trabajo sobre el planificador EEVDF que firmó Akshit Gaur dentro del programa RSoC, con soporte de prioridades de proceso y ajuste de prioridades del sistema.

NUMA, QEMU y arranque dual

Aadarsh, también conocido como EuclidDivisionLemma, ha metido el soporte inicial de NUMA: asignación en nodo local por defecto y una API en libredox para modificar las políticas de asignación. Todavía no lo han validado fuera de QEMU y piden ayuda para probarlo en máquinas de verdad. En la misma línea, el equipo ha confirmado que QEMU funciona ejecutándose sobre Redox, tanto la variante servidor en modo terminal como la de escritorio con frontend GTK. Sin aceleración tipo KVM, eso sí, va lento.

Para quien quiera probarlo hay otra novedad práctica: el instalador ya permite arranque dual con Linux gracias al trabajo de Wildan Mubarok, con opciones nuevas en la interfaz gráfica. Los pasos están en la documentación de instalación.

Lo demás, en corto

En el kernel, 4lDO2 ha recortado un 5% la sobrecarga de IPC, ha adelgazado el binario un 2,2% al eliminar código DTB inalcanzable y ha fusionado redox_syscall dentro del repositorio del kernel para simplificar cambios. En drivers, MJ Pooladkhay ha implementado soporte PCI MSI-X multi-vector y ha corregido completados perdidos de dispositivos VirtIO. Wildan Mubarok ha portado rldd como implementación de ldd, y 4lDO2 ha documentado la filosofía de seguridad de relibc, con el código unsafe restringido a funciones hoja.

Redox lleva años siendo ese proyecto que se sigue con atención pero que nadie despliega en producción. Lo de agosto no cambia eso, pero Redox Rings ataca justo el punto donde un micronúcleo paga el precio: la E/S. Queda ver si las ganancias se sostienen en hierro real y si el soporte NUMA aguanta fuera del emulador.