Despois de dous meses de desenvolvemento, Linus Torvalds presentou o lanzamento do núcleo Linux 6.0. O cambio significativo no número de versión é por razóns estéticas e é un paso formal para aliviar a incomodidade de acumular un gran número de problemas na serie (Linus chanceou dicindo que o motivo para cambiar o número da rama era máis probable que se estivese sen dedos). e os dedos dos pés para contar os números de versión). Entre os cambios máis salientables: soporte para a escritura en búfer asíncrona en XFS, o controlador de bloques ublk, optimización do planificador de tarefas, un mecanismo para verificar o correcto funcionamento do núcleo, soporte para o cifrado de bloques ARIA.
Principais novidades no núcleo 6.0:
- Subsistema de disco, E/S e sistemas de ficheiros
- O sistema de ficheiros XFS engadiu soporte para escrituras asíncronas en búfer mediante o mecanismo io_uring. As probas de rendemento realizadas mediante ferramentas fio (1 fío, tamaño de bloque de 4 kB, 600 segundos, escritura secuencial) mostran un aumento das operacións de entrada/saída por segundo (IOPS) de 77k a 209k, velocidade de transferencia de datos de 314MB/s a 854MB/s, e unha caída da latencia de 9600ns a 120ns (80 veces).
- O sistema de ficheiros Btrfs implementa unha segunda versión do protocolo para o comando "enviar", que implementa soporte para metadatos adicionais, enviando datos en bloques máis grandes (máis de 64K) e transmitindo extensións en forma comprimida. O rendemento das operacións de lectura directa aumentou significativamente (ata 3 veces) debido á lectura simultánea de ata 256 sectores. Reduciu a contención de bloqueo e acelerou a comprobación de metadatos ao reducir os metadatos reservados para os elementos aprazados.
- Engadíronse novas operacións ioctl EXT4_IOC_GETFSUUID e EXT4_IC_SETFSUUID ao sistema de ficheiros ext4 para recuperar ou definir o UUID almacenado no superbloque.
- O sistema de ficheiros F2FS ofrece un modo de baixo consumo de memoria, que optimiza o funcionamento en dispositivos cunha pequena cantidade de RAM e permítelle reducir o consumo de memoria a costa dun rendemento reducido.
- Engadido soporte para a autenticación de unidades NVMe.
- O servidor NFSv4 implementa un límite no número de clientes activos, que se establece como 1024 clientes válidos por cada gigabyte de RAM do sistema.
- A implementación do cliente CIFS mellorou o rendemento no modo de transmisión multicanle.
- Engadiuse unha nova marca FAN_MARK_IGNORE ao subsistema de seguimento de eventos no fanotify FS para ignorar eventos específicos.
- No Overlayfs FS, cando se monta encima dun FS con asignación de ID de usuario, ofrécese soporte correcto para listas de control de acceso compatibles con POSIX.
- Engadiuse o controlador de bloque ublk, que move a lóxica específica ao lado do proceso en segundo plano no espazo do usuario e usa o subsistema io_uring.
- Servizos de memoria e sistema
- Engadíronse novas funcións ao subsistema DAMON (Data Access MONitor), que permiten non só supervisar o acceso ao proceso á RAM desde o espazo do usuario, senón tamén influír na xestión da memoria. En particular, propúxose un novo módulo "LRU_SORT", que permite reagrupar as listas LRU (Least Recently Used) para aumentar a prioridade de determinadas páxinas de memoria.
- Implementouse a capacidade de crear novas rexións de memoria utilizando as capacidades do bus CXL (Compute Express Link), que se utiliza para organizar a interacción de alta velocidade entre a CPU e os dispositivos de memoria. CXL permítelle conectar novas rexións de memoria proporcionadas por dispositivos de memoria externos e utilizalas como recursos adicionais de espazo de enderezo físico para ampliar a memoria de acceso aleatorio (DDR) ou a memoria permanente (PMEM) do sistema.
- Resolveuse os problemas de rendemento cos procesadores AMD Zen causados polo código engadido hai 20 anos para solucionar un problema de hardware nalgúns chipsets (engadiuse unha instrución WAIT adicional para ralentizar o procesador para que o chipset tivese tempo de entrar nun estado inactivo). O cambio resultou nun rendemento reducido baixo cargas de traballo que alternan frecuentemente entre estados inactivos e ocupados. Por exemplo, despois de desactivar a solución, as puntuacións medias das probas de banco aumentaron de 32191 MB/s a 33805 MB/s.
- O código con heurística foi eliminado do planificador de tarefas, garantindo a migración dos procesos ás CPU menos cargadas, tendo en conta a ganancia prevista no consumo de enerxía. Os desenvolvedores concluíron que a heurística non era o suficientemente útil e que era máis doado eliminala e migrar procesos sen unha avaliación adicional sempre que esa migración puidese producir un menor consumo de enerxía (por exemplo, cando a CPU de destino está nun nivel de potencia inferior). A desactivación da heurística provocou unha redución do consumo de enerxía cando se realizan tarefas intensivas, por exemplo, na proba de decodificación de vídeo, o consumo de enerxía diminuíu un 5.6%.
- Optimizouse a distribución de tarefas entre núcleos de CPU en sistemas grandes, o que mellorou o rendemento para certos tipos de carga de traballo.
- A interface de E/S asíncrona io_uring ofrece unha nova marca, IORING_RECV_MULTISHOT, que lle permite utilizar o modo multidisparo coa chamada ao sistema recv() para realizar varias operacións de lectura desde o mesmo socket de rede á vez. io_uring tamén admite a transferencia de rede sen búfer intermedio (copia cero).
- Implementouse a capacidade de poñer os programas BPF conectados a uprobe nun estado de sono. BPF tamén engade un novo iterador ksym para traballar con táboas de símbolos do núcleo.
- Eliminouse a obsoleta interface "efivars" en sysfs, destinada ao acceso ás variables de arranque UEFI (o FS virtual efivarfs úsase agora universalmente para acceder aos datos EFI).
- A utilidade perf ten novos informes para analizar os conflitos de bloqueo e o tempo que leva o procesador executando compoñentes do núcleo.
- Eliminouse a configuración CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, o que permitiu que o núcleo se construíse no modo de optimización "-O3". Nótase que os experimentos con modos de optimización pódense levar a cabo pasando marcas durante a montaxe ("facer KCFLAGS=-O3"), e engadir unha configuración a Kconfig require un perfil de rendemento repetible, que mostra que o desenrolo de bucle usado no modo "-O3" dá un beneficio en comparación co nivel de optimización "-O2".
- Engadiuse unha interface debugfs para obter información sobre o funcionamento dos "reducidores de memoria" individuais (se chaman os controladores cando hai memoria insuficiente e empaquetan estruturas de datos do núcleo para reducir o seu consumo de memoria).
- Para as arquitecturas OpenRISC e LoongArch, está implementado soporte para o bus PCI.
- Para a arquitectura RISC-V, implementouse a extensión "Zicbom" para xestionar dispositivos con DMA que non é coherente coa caché.
- Virtualización e seguridade
- Engadiuse un mecanismo de verificación RV (Runtime Verification) para verificar o correcto funcionamento en sistemas altamente fiables que garanten que non hai fallos. A verificación realízase en tempo de execución unindo controladores a puntos de rastrexo que verifican o progreso real da execución fronte a un modelo determinista de referencia predeterminado da máquina que define o comportamento esperado do sistema. A verificación co modelo en tempo de execución sitúase como un método máis lixeiro e fácil de implementar para confirmar a corrección da execución en sistemas críticos, complementando os métodos clásicos de verificación da fiabilidade. Entre as vantaxes de RV está a capacidade de proporcionar unha verificación estrita sen unha implementación separada de todo o sistema nunha linguaxe de modelado, así como unha resposta flexible a eventos imprevistos.
- Compoñentes do núcleo integrados para a xestión de enclaves baseados na tecnoloxía Intel SGX2 (Software Guard eXtensions), que permite que as aplicacións executen código en áreas de memoria cifradas illadas, ás que o resto do sistema ten acceso limitado. A tecnoloxía Intel SGX2 é compatible con chips Intel Ice Lake e Gemini Lake e difire de Intel SGX1 en instrucións adicionais para a xestión dinámica da memoria dos enclaves.
- Para a arquitectura x86, implementouse a capacidade de transferir a semente para o xerador de números pseudoaleatorios a través da configuración do cargador de arranque.
- O módulo SafeSetID LSM agora ten a capacidade de xestionar os cambios feitos a través da chamada setgroups(). SafeSetID permite aos servizos do sistema xestionar os usuarios de forma segura sen aumentar os privilexios (CAP_SETUID) e sen obter privilexios de root.
- Engadido soporte para o cifrado de bloques ARIA.
- O módulo de xestión de seguridade baseado en BPF ofrece a posibilidade de anexar controladores a procesos individuais e grupos de procesos (cgroups).
- Engadiuse un mecanismo cunha implementación de watchdog para detectar bloqueos dos sistemas convidados baseándose no seguimento da actividade da vCPU.
- Subsistema de rede
- Engadíronse controladores para xerar e comprobar as cookies SYN ao subsistema BPF. Tamén se engade un conxunto de funcións (kfunc) para acceder e cambiar o estado das conexións.
- A pila sen fíos engadiu soporte para o mecanismo MLO (Multi-Link Operation), definido na especificación WiFi 7 e que permite que os dispositivos reciban e envíen datos simultáneamente utilizando diferentes bandas de frecuencia e canles, por exemplo, para establecer simultáneamente varias canles de comunicación entre un punto de acceso a un dispositivo cliente.
- Mellorouse o rendemento do protocolo TLS integrado no núcleo.
- Engadiuse unha opción de liña de comandos do núcleo "hostname=" para permitir que o nome de host se estableza no inicio do proceso de arranque, antes de que se inicien os compoñentes do espazo do usuario.
- Оборудование
- O controlador i915 (Intel) ofrece soporte para tarxetas de vídeo discretas Intel Arc (DG2/Alchemist) A750 e A770. Propúxose unha implementación inicial de soporte para as GPU Intel Ponte Vecchio (Xe-HPC) e Meteor Lake. Continúa o traballo para apoiar a plataforma Intel Raptor Lake.
- O controlador amdgpu segue proporcionando soporte para as plataformas AMD RDNA3 (RX 7000) e CDNA (Instinct).
- O controlador Nouveau reelaborou o código de soporte para os motores de visualización da GPU NVIDIA nv50.
- Engadiuse un novo controlador logicvc DRM para pantallas LogiCVC.
- O controlador v3d (para GPU Broadcom Video Core) admite placas Raspberry Pi 4.
- Engadido soporte para Qualcomm Adreno 619 GPU ao controlador msm.
- Engadido soporte para ARM Mali Valhall GPU ao controlador Panfrost.
- Engadiuse soporte inicial para os procesadores Qualcomm Snapdragon 8cx Gen3 utilizados nos portátiles Lenovo ThinkPad X13s.
- Engadíronse controladores de son para as plataformas AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake e Mediatek MT8186.
- Engadido soporte para aceleradores de aprendizaxe automática Intel Habana Gaudi 2.
- Engadido soporte para ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.
Ao mesmo tempo, a Latin American Free Software Foundation formou unha versión do núcleo completamente gratuíto 6.0 - Linux-libre 6.0-gnu, limpa de elementos de firmware e controladores que conteñan compoñentes ou seccións de código non libres, cuxo alcance é limitado polo fabricante. A nova versión desactiva o uso de blobs no controlador de audio HD CS35L41 e no controlador UCSI para microcontroladores STM32G0. Os ficheiros DTS dos chips Qualcomm e MediaTek foron limpos. Reelaborouse a desactivación de blobs no controlador MediaTek MT76. Código de limpeza de blob actualizado nos controladores e subsistemas AMDGPU, Adreno, Tegra VIC, Netronome NFP e Habanalabs Gaudi2. Deixou de limpar o controlador VXGE, que foi eliminado do núcleo.
Fonte: opennet.ru