Lanzamiento del núcleo de Linux 6.0

Luego de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del kernel Linux 6.0. El cambio significativo en el número de versión es por razones estéticas y es un paso formal para aliviar la incomodidad de acumular una gran cantidad de números en la serie (Linus bromeó diciendo que la razón para cambiar el número de sucursal era más bien que se estaba quedando sin dedos). y dedos de los pies para contar los números de versión). Entre los cambios más notables: soporte para escritura asíncrona en buffer en XFS, el controlador de bloque ublk, optimización del programador de tareas, un mecanismo para verificar el correcto funcionamiento del kernel, soporte para el cifrado de bloque ARIA.

Innovaciones clave en el kernel 6.0:

  • Subsistema de disco, E/S y sistemas de archivos
    • El sistema de archivos XFS ha agregado soporte para escrituras asíncronas en buffer usando el mecanismo io_uring. Las pruebas de rendimiento realizadas con herramientas fio (1 subproceso, tamaño de bloque de 4 kB, 600 segundos, escritura secuencial) muestran un aumento en las operaciones de entrada/salida por segundo (IOPS) de 77 k a 209 k, la velocidad de transferencia de datos de 314 MB/s a 854 MB/s, y una caída en la latencia de 9600ns a 120ns (80 veces).
    • El sistema de archivos Btrfs implementa una segunda versión del protocolo para el comando "enviar", que implementa soporte para metadatos adicionales, enviando datos en bloques más grandes (más de 64K) y transmitiendo extensiones en forma comprimida. El rendimiento de las operaciones de lectura directa se ha incrementado significativamente (hasta 3 veces) gracias a la lectura simultánea de hasta 256 sectores. Se redujo la contención de bloqueo y se aceleró la verificación de metadatos al reducir los metadatos reservados para elementos diferidos.
    • Se agregaron nuevas operaciones ioctl EXT4_IOC_GETFSUUID y EXT4_IC_SETFSUUID al sistema de archivos ext4 para recuperar o configurar el UUID almacenado en el superbloque.
    • El sistema de archivos F2FS ofrece un modo de bajo consumo de memoria, que optimiza el funcionamiento en dispositivos con una pequeña cantidad de RAM y le permite reducir el consumo de memoria a costa de un rendimiento reducido.
    • Se agregó soporte para la autenticación de unidades NVMe.
    • El servidor NFSv4 implementa un límite en la cantidad de clientes activos, que se establece en 1024 clientes válidos por cada gigabyte de RAM en el sistema.
    • La implementación del cliente CIFS ha mejorado el rendimiento en el modo de transmisión multicanal.
    • Se ha agregado una nueva bandera FAN_MARK_IGNORE al subsistema de seguimiento de eventos en fanotify FS para ignorar eventos específicos.
    • En Overlayfs FS, cuando se monta encima de un FS con asignación de ID de usuario, se proporciona soporte correcto para listas de control de acceso compatibles con POSIX.
    • Se agregó el controlador de bloque ublk, que mueve la lógica específica al lado del proceso en segundo plano en el espacio del usuario y utiliza el subsistema io_uring.
  • Servicios de memoria y sistema.
    • Se han agregado nuevas características al subsistema DAMON (Data Access MONitor), lo que permite no solo monitorear el acceso del proceso a la RAM desde el espacio del usuario, sino también influir en la administración de la memoria. En particular, se ha propuesto un nuevo módulo "LRU_SORT", que proporciona reagrupación de listas LRU (menos utilizadas recientemente) para aumentar la prioridad de determinadas páginas de memoria.
    • La capacidad de crear nuevas regiones de memoria se implementó utilizando las capacidades del bus CXL (Compute Express Link), utilizado para organizar la interacción de alta velocidad entre la CPU y los dispositivos de memoria. CXL le permite conectar nuevas regiones de memoria proporcionadas por dispositivos de memoria externos y utilizarlas como recursos de espacio de direcciones físicas adicionales para expandir la memoria de acceso aleatorio (DDR) o la memoria permanente (PMEM) del sistema.
    • Se resolvieron problemas de rendimiento con los procesadores AMD Zen causados ​​por el código agregado hace 20 años para solucionar un problema de hardware en algunos conjuntos de chips (se agregó una instrucción WAIT adicional para ralentizar el procesador para que el conjunto de chips tuviera tiempo de entrar en un estado inactivo). El cambio resultó en una reducción del rendimiento bajo cargas de trabajo que frecuentemente alternan entre estados inactivos y ocupados. Por ejemplo, después de deshabilitar la solución alternativa, los puntajes promedio de las pruebas en el banco aumentaron de 32191 MB/s a 33805 MB/s.
    • Se eliminó el código con heurística del programador de tareas, lo que garantiza la migración de procesos a las CPU menos cargadas, teniendo en cuenta el aumento previsto en el consumo de energía. Los desarrolladores concluyeron que la heurística no era lo suficientemente útil y que era más fácil eliminarla y migrar procesos sin una evaluación adicional siempre que dicha migración pudiera resultar en un menor consumo de energía (por ejemplo, cuando la CPU de destino está en un nivel de energía más bajo). La desactivación de la heurística condujo a una reducción en el consumo de energía al realizar tareas intensivas; por ejemplo, en la prueba de decodificación de video, el consumo de energía disminuyó en un 5.6%.
    • Se ha optimizado la distribución de tareas entre los núcleos de la CPU en sistemas grandes, lo que ha mejorado el rendimiento para ciertos tipos de cargas de trabajo.
    • La interfaz de E/S asíncrona io_uring ofrece un nuevo indicador, IORING_RECV_MULTISHOT, que le permite utilizar el modo multidisparo con la llamada al sistema recv() para realizar múltiples operaciones de lectura desde el mismo socket de red a la vez. io_uring también admite la transferencia de red sin almacenamiento en búfer intermedio (copia cero).
    • Se implementó la capacidad de poner los programas BPF adjuntos a uprobe en estado de suspensión. BPF también agrega un nuevo iterador ksym para trabajar con tablas de símbolos del kernel.
    • Se eliminó la interfaz obsoleta “efivars” en sysfs, destinada a acceder a las variables de arranque UEFI (el FS virtual efivarfs ahora se usa universalmente para acceder a datos EFI).
    • La utilidad perf tiene nuevos informes para analizar los conflictos de bloqueo y el tiempo que dedica el procesador a ejecutar los componentes del kernel.
    • Se eliminó la configuración CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, lo que permitió que el kernel se construyera en el modo de optimización "-O3". Cabe señalar que se pueden llevar a cabo experimentos con modos de optimización pasando indicadores durante el ensamblaje (“make KCFLAGS=-O3”), y agregar una configuración a Kconfig requiere un perfil de rendimiento repetible, lo que muestra que el desenrollado del bucle utilizado en el modo “-O3” proporciona un beneficio en comparación con el nivel de optimización “-O2”.
    • Se ha agregado una interfaz debugfs para obtener información sobre el funcionamiento de "reductores de memoria" individuales (controladores llamados cuando no hay suficiente memoria y empaquetando estructuras de datos del kernel para reducir su consumo de memoria).
    • Para las arquitecturas OpenRISC y LoongArch, se implementa soporte para el bus PCI.
    • Para la arquitectura RISC-V se ha implementado la extensión “Zicbom” para gestionar dispositivos con DMA que no es coherente con la caché.
  • Virtualización y seguridad
    • Se ha agregado un mecanismo de verificación RV (Runtime Verification) para verificar el correcto funcionamiento de sistemas altamente confiables que garantizan la ausencia de fallas. La verificación se realiza en tiempo de ejecución adjuntando controladores a puntos de seguimiento que verifican el progreso real de la ejecución contra un modelo determinista de referencia predeterminado de la máquina que define el comportamiento esperado del sistema. La verificación con el modelo en tiempo de ejecución se posiciona como un método más liviano y fácil de implementar para confirmar la corrección de la ejecución en sistemas críticos, complementando los métodos clásicos de verificación de confiabilidad. Entre las ventajas de RV se encuentra la capacidad de proporcionar una verificación estricta sin una implementación separada de todo el sistema en un lenguaje de modelado, así como una respuesta flexible a eventos imprevistos.
    • Componentes de kernel integrados para la gestión de enclaves basados ​​en la tecnología Intel SGX2 (Software Guard eXtensions), que permite a las aplicaciones ejecutar código en áreas aisladas cifradas de memoria, a las que el resto del sistema tiene acceso limitado. La tecnología Intel SGX2 es compatible con los chips Intel Ice Lake y Gemini Lake y se diferencia de Intel SGX1 en instrucciones adicionales para la gestión dinámica de la memoria de los enclaves.
    • Para la arquitectura x86, se implementó la capacidad de transferir la semilla para el generador de números pseudoaleatorios a través de la configuración del gestor de arranque.
    • El módulo SafeSetID LSM ahora tiene la capacidad de gestionar los cambios realizados mediante la llamada setgroups(). SafeSetID permite que los servicios del sistema administren usuarios de forma segura sin aumentar los privilegios (CAP_SETUID) y sin obtener privilegios de root.
    • Se agregó soporte para cifrado de bloques ARIA.
    • El módulo de gestión de seguridad basado en BPF proporciona la capacidad de adjuntar controladores a procesos individuales y grupos de procesos (cgroups).
    • Se ha agregado un mecanismo con una implementación de vigilancia para detectar bloqueos de sistemas invitados basándose en el monitoreo de la actividad de vCPU.
  • Subsistema de red
    • Se han agregado controladores para generar y verificar cookies SYN al subsistema BPF. También se agrega un conjunto de funciones (kfunc) para acceder y cambiar el estado de las conexiones.
    • La pila inalámbrica ha agregado soporte para el mecanismo MLO (Multi-Link Operation), definido en la especificación WiFi 7 y que permite a los dispositivos recibir y enviar datos simultáneamente usando diferentes bandas de frecuencia y canales, por ejemplo, para establecer simultáneamente varios canales de comunicación entre un punto de acceso a un dispositivo cliente.
    • Se ha mejorado el rendimiento del protocolo TLS integrado en el kernel.
    • Se agregó una opción de línea de comando del kernel "hostname=" para permitir que el nombre de host se establezca temprano en el proceso de arranque, antes de que se inicien los componentes del espacio de usuario.
  • Equipo
    • El controlador i915 (Intel) brinda soporte para tarjetas de video discretas Intel Arc (DG2/Alchemist) A750 y A770. Se ha propuesto una implementación inicial de soporte para las GPU Intel Ponte Vecchio (Xe-HPC) y Meteor Lake. Se continúa trabajando para respaldar la plataforma Intel Raptor Lake.
    • El controlador amdgpu continúa brindando soporte para las plataformas AMD RDNA3 (RX 7000) y CDNA (Instinct).
    • El controlador Nouveau ha modificado el código de soporte para los motores de visualización de la GPU NVIDIA nv50.
    • Se agregó un nuevo controlador DRM logicvc para pantallas LogiCVC.
    • El controlador v3d (para GPU Broadcom Video Core) admite placas Raspberry Pi 4.
    • Se agregó soporte para GPU Qualcomm Adreno 619 al controlador msm.
    • Se agregó soporte para GPU ARM Mali Valhall al controlador Panfrost.
    • Se agregó soporte inicial para los procesadores Qualcomm Snapdragon 8cx Gen3 utilizados en las computadoras portátiles Lenovo ThinkPad X13s.
    • Se agregaron controladores de sonido para las plataformas AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake y Mediatek MT8186.
    • Se agregó soporte para los aceleradores de aprendizaje automático Intel Habana Gaudi 2.
    • Se agregó soporte para ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Al mismo tiempo, la Fundación Latinoamericana de Software Libre formó una versión del kernel 6.0 completamente libre - Linux-libre 6.0-gnu, libre de elementos de firmware y controladores que contengan componentes o secciones de código no libres, cuyo alcance es limitado por el fabricante. La nueva versión desactiva el uso de blobs en el controlador de audio HD CS35L41 y el controlador UCSI para microcontroladores STM32G0. Se han limpiado los archivos DTS para chips Qualcomm y MediaTek. Se ha modificado la desactivación de blobs en el controlador MediaTek MT76. Código de limpieza de blobs actualizado en controladores y subsistemas AMDGPU, Adreno, Tegra VIC, Netronome NFP y Habanalabs Gaudi2. Se detuvo la limpieza del controlador VXGE, que se eliminó del kernel.

Fuente: opennet.ru

Añadir un comentario