Linux 6.4 ya fue liberado y llega con mejoras para Rust y mas
Después de dos meses de desarrollo, Linus Torvalds dio a conocer el lanzamiento de nueva versión del kernel Linux 6.4 y entre los cambios más importantes, se destaca la integración continua de la compatibilidad con el lenguaje Rust, la compatibilidad con el mecanismo Intel LAM, la deduplicación de páginas de memoria a nivel de proceso, la compatibilidad con iteradores en BPF, soporte para hibernación para sistemas RISC -V, entre otras cosas mas.
En esta nueva versión se integraron 16012 correcciones de 2080 desarrolladores los cuales agregaron 1006924 líneas de código, se eliminaron 597615 líneas.
Principales novedades del Kernel de Linux 6.4
En esta nueva versión que se presenta de Linux 6.4 una de sus principales novedades es la capacidad de crear controladores a nivel de kernel a partir de procesos en el espacio del usuario. A diferencia del uso de la API kthread, los controladores creados en el espacio de usuario heredan las propiedades del proceso y se ejecutan con las credenciales del proceso del espacio de usuario.
Otro de los cambios que se destaca viene desde la rama de Rust-for-Linux en la cual se ha continuado la transferencia de funcionalidad adicional relacionada con el uso de Rust como segundo lenguaje para desarrollar controladores y módulos de kernel. En esta nueva versión de Linux 6.4 podremos encontrar que se agregó la API pin-init para la inicialización segura de las estructuras de datos adjuntas, asi como tambien el soporte para variables condicionales (CondVar) y que se implementó el paquete UAPI para la interacción con el espacio del usuario.
Ademas de ello, tambien podremos encontrar que se implementó una variante del mecanismo para combinar páginas de memoria idénticas, que funciona a nivel de proceso y puede reducir significativamente el consumo de memoria mediante la deduplicación de páginas con el mismo contenido. A diferencia del mecanismo KSM en la nueva implementación, la compatibilidad con la deduplicación se habilita a través de prctl para todo el proceso y se hereda para los procesos secundarios, sin necesidad de activar para cada rango de memoria mediante madvise, que simplifica significativamente la aplicación.
Por otra parte, los procesos sin privilegios pueden obtener información del subsistema kernel PSI (Pressure Stall Information), que permite el análisis del espacio del usuario de información sobre el tiempo de espera para obtener diversos recursos (CPU, memoria, E/S) para evaluar con precisión el nivel del sistema patrones de carga y desaceleración.
Tambien se destaca que para los sistemas basados en la arquitectura RISC-V, se admite la hibernación y el kernel se puede compilar como un archivo vinculado en modo PIE (ejecutables independientes de la posición), ademas de que se agregó una nueva llamada al sistema riscv_hwprobe() para proporcionar información sobre el fabricante y la arquitectura del hardware disponible.
Se han agregado cambios a XFS para implementar el escaneo FS sobre la marcha (limpieza en línea), que se espera que se incluya en una de las próximas versiones (aunque ya se agregó la documentación en línea de fsck ) .
En Ext4 se ha simplificado la organización de la entrada, ademas de que se han realizado optimizaciones en la asignación previa de inodos para mejorar el rendimiento en sistemas con una gran cantidad de escrituras aleatorias. Las operaciones de lectura y escritura de páginas de memoria se han trasladado al uso de folios de páginas de memoria (page folios).
Btrfs ha reescrito el código de verificación del sistema de archivos para usar scrub_stripe, es compatible con la verificación de RAID56 y se ejecuta aproximadamente un 10 % más rápido. Rendimiento mejorado del registro de directorios (la eliminación de la enumeración de índices durante el registro permitió reducir 4 veces el tiempo dedicado a la ejecución de fsync).
De los demás cambios que se destacan de esta nueva versión:
- El sistema de archivos F2FS agrega soporte para dispositivos de bloques zonificados, en los que el tamaño de las zonas no es un múltiplo de una potencia de dos.
- Se modificó la codificación de los comandos ioctl para el controlador ublk, que aporta una lógica específica al lado del proceso en el espacio del usuario.
- Se agregó la configuración de compilación UBLK_LEGACY_OPCODES para garantizar la compatibilidad con controladores más antiguos.
- Está prohibido deshabilitar y descargar el módulo SELinux durante la operación.
- Deshabilitar SELinux ahora solo se puede hacer en la etapa de arranque inicial pasando el parámetro «selinux=0» en la línea de comandos del kernel.
- Se agregó soporte para hiperllamadas de Hyper-V que se utilizan para reenviar dispositivos PCI a invitados con controladores de Hyper-V. S
- El hipervisor KVM implementa un marco para mover el procesamiento de solicitudes SMCCC al espacio del usuario, lo que permite implementar muchas operaciones relacionadas con la virtualización en el espacio del usuario sin agregarlas al kernel.
- Se agregó la capacidad de adjuntar programas BPF para procesar enlaces de NetFilter, por ejemplo, para crear un controlador que decida reenviar paquetes o realizar acciones en la etapa anterior al enrutamiento.
- El controlador msi-ec se ha agregado para permitir el control en el espacio del usuario de las funciones avanzadas de la computadora portátil MSI, como la selección del perfil de energía, el control de la velocidad del ventilador, el control de LED y los niveles de carga.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.