Versión do núcleo de Linux 6.0

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

Engadir un comentario