Lanzamiento del núcleo de Linux 6.14

Después de dos meses de desarrollo, Linus Torvalds presentó la versión del núcleo Linux 6.14. Entre los cambios más destacados se encuentran: el controlador ntsync con primitivas de sincronización de Windows NT, la configuración del equilibrio de operaciones de lectura en Btrfs RAID1, el soporte para reflink en XFS en modo real-time, la posibilidad de entrada/salida bufereada sin caché, el cgroup dmem para limitar la memoria GPU, la implementación de io_uring en FUSE, la delegación de atributos en NFS, el soporte para escritura atómica en Device mapper, la aceleración de enlaces simbólicos, la gestión de la capacidad de ejecución de scripts y el soporte para chips Qualcomm Snapdragon 8 Elite, así como un controlador para el NPU de AMD.

La nueva versión incluye 12115 correcciones de 1984 desarrolladores, el tamaño del parche es de 39 MB (los cambios afectaron a 10170 archivos, se añadieron 531586 líneas de código y se eliminaron 235999 líneas). En la versión anterior hubo 14172 correcciones de 2086 desarrolladores, con un tamaño de parche de 46 MB. Aproximadamente el 41% de todos los cambios presentados en 6.14 están relacionados con controladores de dispositivos, aproximadamente el 13% se refiere a la actualización de código específico de arquitecturas de hardware, el 14% está relacionado con la pila de red, el 7% con sistemas de archivos y el 4% con subsistemas internos del núcleo.

Novedades principales en el núcleo 6.14:

  • Subsistema de disco, entrada/salida y sistemas de archivos
    • En el sistema de archivos Btrfs se ha añadido soporte para nuevos métodos de equilibrio de operaciones de lectura entre los dispositivos que forman parte del RAID1. Además de la distribución de carga basada en identificadores de procesos (pid), la nueva versión propone tres nuevos modos de equilibrio: "rotation" (distribución uniforme de la carga entre todos los dispositivos, habilitado por defecto); "latency" (distribución teniendo en cuenta las latencias, que puede ser útil en caso de fallos o inestabilidad en los dispositivos); y devid (gestión manual). Se ha añadido una interfaz en "\/sys\/fs\/btrfs\/\/read_policy" para cambiar el modo de balanceo. Entre otros cambios en Btrfs se encuentra la implementación de ioctl FS_IOC_READ_VERITY_METADATA.
    • Se ha añadido un modo de entrada/salida en búfer no cacheado, donde los datos se eliminan de la caché de páginas tan pronto como se completan las operaciones de lectura o escritura. Este cambio puede ser útil al utilizar dispositivos de almacenamiento muy rápidos, donde la caché de operaciones en la memoria es excesiva. Para tales dispositivos, el nuevo modo permite evitar el uso innecesario de memoria por parte de la caché de páginas sin recurrir al uso de una API complicada de entrada/salida directa (Direct I/O).
    • En fsnotify, el mecanismo de seguimiento de cambios en el sistema de archivos, se ha añadido un nuevo evento FS_PRE_ACCESS, que se genera antes de acceder al contenido de un archivo. El evento se maneja de manera sincrónica, es decir, el núcleo envía el evento y espera recibir una respuesta. Si se recibe la respuesta, la operación se ejecuta; si ocurre un error, la llamada del sistema devuelve un código de error al espacio de usuario. Con FS_PRE_ACCESS, el proceso en el espacio de usuario puede, por ejemplo, organizar la escritura de un archivo a medida que los datos están disponibles en un almacenamiento lento.
    • Se ha añadido soporte en el subsistema FUSE, que permite crear implementaciones de sistemas de archivos en el espacio de usuario, para el intercambio de datos entre el núcleo y el manejador en el espacio de usuario utilizando el mecanismo de entrada/salida io_uring. Este cambio mejora el rendimiento de FUSE al reducir los cambios de contexto entre el núcleo y el espacio de usuario.
    • En el sistema de archivos XFS, se ha incorporado la posibilidad de utilizar mapeo inverso (rmap, reverse-mapping) en el modo de operación con retrasos predecibles («dispositivo en tiempo real»). El mapeo inverso permite determinar qué archivo está utilizando un bloque específico en el dispositivo de almacenamiento. A través del rmap en XFS para el modo en tiempo real, se ha implementado el soporte para la operación reflink, que permite crear copias de archivos clonando los metadatos del archivo y creando un enlace a los datos existentes sin copiarlos realmente.
    • En VFS se ha implementado la caché del tamaño de los enlaces simbólicos, lo que ha permitido acelerar la ejecución de la operación readlink en un 1.5% (en la prueba con /initrd.img en ext4). La caché está habilitada en los sistemas de archivos ext4 y tmpfs.
    • Se ha añadido soporte para la delegación de atributos de archivos en la implementación de NFSv4.2, lo que permite gestionar atributos de archivos como el tiempo de modificación (mtime) en el lado del cliente NFS, sin necesidad de restablecer los cambios en el servidor. También se ha mejorado el soporte del protocolo 'LOCALIO' en NFS, que permite determinar si el cliente y el servidor NFS están en el mismo host, para habilitar optimizaciones correspondientes, como el uso de entrada/salida directa por parte del cliente.
    • Se ha mejorado el rendimiento de las operaciones de lectura en los sistemas de archivos NETFS, CIFS y AFS (Andrew File System).
    • Se ha incluido un modo de carga directa de bloques en el caché de páginas en Squashfs (SQUASHFS_FILE_DIRECT), lo que permite prescindir de un caché read_page separado. Este cambio ha reducido el tamaño de la memoria consumida al trabajar con Squashfs.
    • Se ha implementado un indicador STATX_DIO_READ_ALIGN en la llamada al sistema statx(), para determinar el alineamiento requerido para las operaciones de lectura de archivos.
    • En el sistema de archivos Bcachefs se ha actualizado y estabilizado el formato de las estructuras de disco. Cualquier cambio futuro en el formato se considerará opcional y se implementará en forma de complementos opcionales. Se ha incrementado significativamente la velocidad de verificación de la integridad del sistema de archivos. Además, se ha mejorado el funcionamiento en modo solo lectura de Bcachefs; se han solucionado problemas que llevaban a accesos a memoria después de su liberación (use after free); se han resuelto problemas con punteros reflink en fsck; y se ha corregido el manejo de reinicio de transacciones.
    • Se ha reinstalado el módulo md-linear, destinado a la agregación de dispositivos de bloque. Este módulo había sido declarado obsoleto y eliminado del núcleo 6.8, pero ya que se encontró que era muy solicitado, ha sido restaurado.
    • Los sistemas de archivos F2FS y SQUASHFS han sido actualizados para utilizar folios de páginas de memoria.
    • Los sistemas de archivos OCFS2 y DLMFS se han actualizado para utilizar la nueva API de montaje de particiones.
    • En el controlador null_blk se ha implementado un atributo 'rotational', que se establece a través de configfs y permite simular el funcionamiento con dispositivos basados en discos mecánicos para facilitar las pruebas de funcionalidades del núcleo.
    • En el sistema Device Mapper y en los módulos dm-mirror, dm-io, dm-table, dm-linear, dm-stripe y dm-raid1 se ha implementado soporte para escritura atómica.
  • Memoria y servicios del sistema
    • Se ha completado la integración en el núcleo del controlador ntsync, que implementa el dispositivo simbólico /dev/ntsync y un conjunto de primitivas para la sincronización utilizadas en el núcleo de Windows NT. La implementación de estas primitivas a nivel de núcleo permite aumentar significativamente el rendimiento de los juegos de Windows que se ejecutan a través de Wine. El aumento del rendimiento se logra al eliminar la sobrecarga asociada con el uso de RPC en el espacio de usuario. La creación de un controlador separado para el núcleo de Linux se explica por la dificultad de implementar correctamente la API de sincronización NT sobre las primitivas existentes en el núcleo.
    • Se ha añadido un nuevo controlador cgroup DMEM para contabilizar separadamente las áreas de memoria de dispositivos como la GPU. DMEM permite crear cgroups separados para diversas tareas que trabajan con la GPU, de modo que puedan ejecutarse sin afectar a otras. Esta nueva función resuelve el problema de la terminación forzada de operaciones con la GPU cuando se agota la memoria disponible, gracias al seguimiento de la memoria reflejada de la GPU y la memoria utilizada por los controladores de CPU en cgroups separados.
    • Se han realizado optimizaciones en la escalabilidad de la operación de vaciado (flush) del caché TLB (Translation Lookaside Buffer), utilizado para acelerar la conversión de direcciones virtuales en físicas. Las optimizaciones añadidas se reducen a la actualización diferida de algunas estructuras de datos durante el cambio de contexto, lo que permite mejorar el rendimiento en algunas pruebas.
    • Se ha mejorado el rendimiento del mecanismo MGLRU (Multi-Generational LRU), utilizado para determinar qué páginas de memoria están en uso y cuáles se pueden expulsar a la partición de intercambio.
    • Se ha continuado la transferencia de cambios desde la rama Rust-for-Linux, relacionados con el uso del lenguaje Rust como segundo idioma para el desarrollo de controladores y módulos del núcleo (el soporte de Rust no está activado por defecto y no lleva a incluir Rust entre las dependencias de construcción obligatorias para el núcleo). Se ha proporcionado la posibilidad de utilizar en el código del núcleo el macro «derive(CoercePointee)», que permite utilizar punteros inteligentes con objetos trait. En el núcleo se han incluido enlaces de Rust para PCI, plataformas, Open Firmware, dispositivos simbólicos y algunas funciones de entrada/salida. Greg Kroah-Hartman, responsable del soporte de la rama estable del núcleo de Linux, ha caracterizado el estado actual como «casi listo para escribir un controlador real en Rust».
    • En los escenarios de construcción se ha propuesto un nuevo código para generar versiones de símbolos de depuración para módulos cargables, que ahora utiliza información de los registros de depuración en formato DWARF, en lugar de analizar directamente el código fuente. El cambio permite aplicar versionado de símbolos de depuración para módulos escritos en Rust. La antigua implementación también se ha dejado en el núcleo, y la elección del generador se realiza a nivel de opciones de construcción.
    • Para la arquitectura PowerPC se ha implementado el soporte del modo de desalojo perezoso de tareas (PREEMPT_LAZY, lazy preemption), que corresponde al modo de desalojo completo («full preemption») para tareas en tiempo real (RR/FIFO/DEADLINE), pero retrasa el desalojo de tareas normales (SCHED_NORMAL) hasta el límite de la interrupción.
    • Se ha añadido soporte para contadores de consumo de energía de los procesadores AMD en el subsistema de perfilado de rendimiento «perf». Se ha añadido la capacidad de funcionar en sistemas con hasta 2048 núcleos de CPU.
    • Se ha proporcionado la posibilidad de utilizar el parámetro sysctl pid_max con espacios de nombres de identificadores de procesos (ID namespace). El parámetro pid_max está destinado a limitar el valor máximo de los identificadores de procesos (PID) y ahora puede utilizarse para restringir el número máximo de procesos que se ejecutan en el espacio de nombres especificado. El tratamiento del parámetro se realiza de manera jerárquica, es decir, las restricciones en los espacios de nombres externos se aplican a los espacios de nombres anidados.
    • Al utilizar el sistema de llamadas execveat para iniciar un proceso, ahora se mostrará el nombre del archivo ejecutado en el sistema de archivos /proc en lugar del número del descriptor de archivo.
    • Se ha agregado una utilidad mountinfo al código fuente del núcleo (en el directorio samples/vfs) que demuestra el uso de las llamadas al sistema statmount() y listmount().
    • En la subsistema BPF se han propuesto nuevas funciones bpf_local_irq_save() y bpf_local_irq_restore() para desactivar temporalmente las interrupciones en la CPU local. Estas funciones pueden aplicarse para implementar estructuras cuya manipulación no se vea interrumpida por interrupciones.
    • En la llamada al sistema madvise(), al usar las banderas MADV_DONTNEED y MADV_FREE, se garantiza la liberación de las tablas de páginas de memoria asociadas con el rango de direcciones liberado, ya que en algunas situaciones las páginas de memoria vacías pueden ocupar una cantidad significativa de memoria.
    • Para la arquitectura OpenRISC se ha implementado soporte para el mecanismo de secuencias reiniciables (rseq, restartable sequences), destinado a la ejecución atómica rápida de operaciones que, en caso de ser interrumpidas por otro hilo, se limpian y se intentan ejecutar de nuevo.
    • Se ha reorganizado el código con la implementación de los algoritmos CRC32 y CRC-T10DIF, que ya no se superponen con la subsistema de crypto y se llaman directamente desde la interfaz bibliotecaria. Este cambio ha permitido simplificar el código y aumentar su eficiencia.
    • Se ha añadido una interfaz al sistema de entrada/salida asíncrono io_uring para transmitir metadatos adicionales sobre la integridad al realizar operaciones de lectura y escritura.
  • Virtualización y seguridad
    • Se ha añadido la bandera AT_EXECVE_CHECK a la llamada del sistema execveat, lo que permite realizar una verificación de la capacidad de ejecución de un archivo sin su ejecución real, pero teniendo en cuenta las políticas de seguridad, los derechos de acceso y los módulos LSM activos. Se han sugerido las banderas securebit SECBIT_EXEC_RESTRICT_FILE y SECBIT_EXEC_DENY_INTERACTIVE para su uso en combinación con AT_EXECVE_CHECK, que se pueden utilizar para restringir la ejecución de archivos con scripts en lenguajes de programación interpretados. La bandera SECBIT_EXEC_RESTRICT_FILE ordena a los enlazadores y a los intérpretes que utilicen la opción AT_EXECVE_CHECK para verificar la validez de la ejecución, mientras que la bandera SECBIT_EXEC_DENY_INTERACTIVE prohíbe el procesamiento de comandos interactivos. La idea principal del cambio es la posibilidad de aplicar políticas de seguridad no solo a archivos ejecutables tradicionales, sino también a archivos de texto con scripts que se pueden cargar a través de la ejecución de un intérprete (es decir, la prohibición de ejecución puede implementarse no solo al ejecutar './script.sh', sino también al ejecutarlo en forma de 'sh script.sh').
    • En sistemas x86 se ha implementado el soporte para contadores de tiempo protegidos para sistemas invitados, que impiden la modificación de los relojes del sistema invitado desde el entorno host. Esta funcionalidad se basa en el mecanismo AMD SEV (Virtualización Encriptada Segura), utilizado en sistemas de virtualización para protección máquinas virtuales contra interferencias por parte del hipervisor o del administrador del sistema host.
    • Se ha añadido soporte para reglas xperm en el sistema de control de acceso mandatado SELinux, lo que permite vincular políticas SELinux a llamadas específicas de ioctl() o mensajes netlink.
    • Para la firma digital de módulos del núcleo, se utiliza por defecto el algoritmo SHA512 en lugar de SHA1.
    • Los controladores para sistemas invitados de VirtualBox han incorporado soporte para la arquitectura ARM64.
    • En el hipervisor KVM se ha continuado trabajando en la implementación del mecanismo Intel TDX (Extensiones de Dominio Confiables) para cifrar la memoria de los sistemas invitados.
    • En virtio_blk se ha añadido soporte para el modo de recuperación de errores.
  • Subsistema de red
    • En la implementación del protocolo RxRPC se ha añadido la posibilidad de utilizar grandes tramas UDP para mejorar el rendimiento.
    • Para TCP se ha añadido soporte para el algoritmo RACK-TLP para la detección de pérdida de paquetes.
    • Se ha añadido un nuevo parámetro sysctl tcp_tw_reuse_delay, que actúa en relación con el espacio de nombres de red (network namespace) y permite definir la demora que se introduce antes de que el sistema pueda reutilizar el número de puerto de red después de cerrar un socket TCP.
    • Se ha añadido la opción de elegir un proveedor de tiempo preciso (PTP) para la formación de marcas de tiempo en los niveles PHY y MAC.
    • Para IPsec, se implementó el soporte del mecanismo de agregación y fragmentación de paquetes IP encapsulados — IP-TFS/AGGFRAG (IP Traffic Flow Security/Modo de Agregación y Fragmentación para Carga Útil de Seguridad Encapsulada).
    • En el sistema de sockets de red se ha añadido el soporte para la transmisión de información sobre prioridad (SO_PRIORITY) en forma de mensajes de control (cmsg). Para los sockets de red, se ha añadido la opción SO_RCVPRIORITY, que incluye en las funciones recvmsg() la transmisión de información sobre la prioridad del socket.
  • Hardware
    • Se ha añadido el controlador amdxdna para los aceleradores NPU (Unidad de Procesamiento Neural) integrados en los CPUs AMD basados en la arquitectura XDNA, destinados a acelerar operaciones relacionadas con el aprendizaje automático. La NPU basada en la arquitectura XDNA se suministra en las series 7040 y 8040 de procesadores AMD Ryzen, así como en los aceleradores AMD Alveo V70 y SoC AMD Versal.
    • En el controlador i915 se han añadido identificadores para nuevas GPU, se ha implementado un manejador de fallos para la inicialización HDMI y se ha mejorado la fiabilidad del reinicio de los motores GPU en sistemas Haswell y anteriores.
    • Se ha continuado trabajando en el controlador drm (Direct Rendering Manager) Xe para GPUs basadas en la arquitectura Intel Xe, que se utiliza en las tarjetas gráficas Intel de la familia Arc y en gráficos integrados desde los procesadores Tiger Lake.
    • En el controlador Nouveau se ha añadido la capacidad de transferir buffers con logs de GSP-RM a través de debugfs.
    • En el controlador AMDGPU se ha implementado el soporte para el mecanismo DRM panic, que muestra una representación similar a la 'pantalla azul de la muerte' durante fallos. Se ha continuado la preparación para el soporte de la futura serie de tarjetas gráficas Radeon RX 9000 basadas en la arquitectura RDNA4. Se ha actualizado el soporte para DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS e ISP.
    • En el controlador DRM msm (GPU Qualcomm Adreno) se ha añadido soporte para la plataforma Qualcomm SM6150 (QCS615).
    • En el controlador DRM panfrost se ha añadido soporte para SoC MediaTek MT8188 con GPU Mali-G57.
    • En el controlador DRM vc4 se ha añadido soporte para SoC Broadcom BCM2712 (Raspberry Pi 5).
    • En el controlador vfio nvgrace-gpu se ha añadido soporte para los chips NVIDIA Grace Blackwell 200.
    • Incluye un controlador para los controladores Intel THC (Touch Host Controller), utilizado para interactuar con pantallas táctiles y touchpads en algunas computadoras portátiles. Se añadió soporte para dispositivos Wacom con interfaz PCI. Se añadió soporte para controladores de juegos QH Electronics.
    • Se añadió soporte para plataformas ARM, SoC y dispositivos: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Se añadió soporte para SoC SpacemiT K1 basado en la arquitectura RISC-V.
    • En el subsistema de sonido ALSA para MIDI 2.0, se ampliaron las API rawmidi y sequencer. En la API para delegar operaciones de compresión a la tarjeta de sonido, se añadió soporte para ASRC (Conversión Asincrónica de Frecuencia de Muestreo).
    • Se añadió soporte para los sistemas de sonido de dispositivos Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 y 18i20. Se añadió soporte para auriculares inalámbricos SteelSeries Arctis 9.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster