Linux 6.1 llega con Rust, mejoras de rendimiento, en controladores y mas
Después de dos meses de desarrollo, Linus Torvalds dio a conocer el lanzamiento de la nueva versión del kernel Linux 6.1, en la cual entre los cambios más notables: soporte para el desarrollo de controladores y módulos en el lenguaje Rust, modernización del mecanismo para determinar las páginas de memoria utilizadas, un administrador de memoria especial para programas BPF, el sistema de diagnóstico de problemas de memoria KMSAN, el KCFI (Kernel Control -Flow Integrity) mecanismo de protección, la introducción del árbol de estructura de arce.
La nueva versión recibió 15115 correcciones de 2139 desarrolladores, el tamaño del parche es de 51 MB, que es aproximadamente 2 veces menor que el tamaño de los parches de los kernels 6.0 y 5.19.
Principales novedades de Linux 6.1
En esta nueva versión que se presenta del Kernel, podremos encontrar que se agregó la capacidad de usar Rust como segundo idioma para desarrollar controladores y módulos de kernel. El motivo principal detrás del soporte de Rust es facilitar la escritura de controladores de dispositivos seguros y de alta calidad al reducir las posibilidades de que se cometan errores de memoria.
El soporte de Rust está deshabilitado de forma predeterminada y no hace que Rust se incluya como una dependencia de compilación del kernel requerida. Hasta ahora, el kernel ha adoptado una versión mÃnima y simplificada de parches, que se ha reducido de 40 a 13 mil lÃneas de código y proporciona solo el mÃnimo necesario, suficiente para construir un módulo de kernel simple escrito en Rust.
En el futuro, está previsto aumentar gradualmente la funcionalidad existente, transfiriendo otros cambios de la rama Rust-for-Linux. Paralelamente, se están desarrollando proyectos para utilizar la infraestructura propuesta para desarrollar controladores de disco NVMe, el protocolo de red 9p y la GPU Apple M1 en Rust.
Otro de los cambios que se destaca es en AArch64, RISC-V y LoongArch con EFI, en donde se implementa la capacidad de cargar directamente imágenes de kernel comprimidas, ademas de que se agregaron controladores para cargar, ejecutar y descargar imágenes del kernel, llamados directamente desde EFI zboot.
También se han agregado controladores para instalar y eliminar protocolos de la base de datos de protocolos EFI. Anteriormente, el desempaquetado lo realizaba un cargador de arranque independiente, pero ahora puede hacerlo un controlador en el propio kernel: la imagen del kernel se forma como una aplicación EFI.
Parte de los parches se adoptó con la implementación de un modelo de administración de memoria de varios niveles que permite separar bancos de memoria con diferentes caracterÃsticas de rendimiento. Por ejemplo, las páginas más utilizadas pueden almacenarse en la memoria más rápida, mientras que las páginas que se utilizan con menos frecuencia pueden almacenarse en una memoria relativamente lenta. El kernel 6.1 adopta un mecanismo para determinar si las páginas muy utilizadas están en memoria lenta para moverlas a memoria rápida e implementa el concepto general de niveles de memoria y su rendimiento relativo.
Ademas de ello, podremos encontrar tambien que se agregó al subsistema BPF la capacidad de crear programas BPF «destructivos» diseñados especÃficamente para desencadenar un bloqueo a través de la llamada crash_kexec(). Dichos programas BPF pueden ser necesarios con fines de depuración para desencadenar la creación de un volcado de memoria en un momento determinado. El acceso a operaciones destructivas al cargar un programa BPF requiere especificar el indicador BPF_F_DESTRUCTIVE, activar sysctl kernel.destructive_bpf_enabled y tener derechos CAP_SYS_BOOT.
Se han realizado optimizaciones de rendimiento significativas en el sistema de archivos Btrfs, entre otras cosas, el rendimiento de las operaciones fiemap y lseek se ha incrementado en órdenes de magnitud (la comprobación de extensiones compartidas se ha acelerado 2 o 3 veces y el cambio de posición en los archivos ha sido acelerado por 1.3-4 veces). Además, se aceleró el registro en diario de inodos para directorios (25 % de aumento de rendimiento y 21 % de reducción de latencia en dbench), se mejoró la E/S almacenada en búfer y se redujo el consumo de memoria.
Ext4 agrega optimizaciones de rendimiento relacionadas con el registro en diario y la operación de solo lectura, se eliminó la compatibilidad con los atributos obsoletos noacl y nouser_xattr, ademas en EROFS (Enhanced Read-Only File System), diseñado para su uso en particiones de solo lectura, implementa la posibilidad de almacenamiento conjunto de datos duplicados en diferentes sistemas de archivos.
De los demás cambios que se destacan:
- Se agregó compatibilidad con los subsistemas de audio implementados en los procesadores Apple Silicon, Intel SkyLake e Intel KabyLake.
- El controlador de audio HDA CS35L41 admite el modo de suspensión.
- Se agregó soporte para los controladores AHCI SATA utilizados en SoC Baikal-T1.
- Se agregó soporte para chips Bluetooth MediaTek MT7921, Intel Magnetor (CNVi, conectividad integrada), Realtek RTL8852C, RTW8852AE y RTL8761BUV (Edimax BT-8500).
- Se agregaron controladores para PinePhone Keyboard, InterTouch Touchpads (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panels, XBOX One Elite, Tablets XP-PEN Deco Pro S y Intuos Pro pequeño (PTH-460).
- Controlador agregado para aceleradores criptográficos Aspeed HACE (Hash and Crypto Engine).
- Se agregó compatibilidad con los controladores Thunderbolt/USB4 integrados de Intel Meteor Lake.
- Se agregó soporte para los teléfonos inteligentes Sony Xperia 1 IV, Samsung Galaxy E5, E7 y Grand Max, Pine64 Pinephone Pro.
- SoC ARM compatible con AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 y RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8062 /BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Información sobre SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom y NXP.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.