Versión do núcleo de Linux 5.19

Despois de dous meses de desenvolvemento, Linus Torvalds presentou o lanzamento do kernel Linux 5.19. Entre os cambios máis salientables: soporte para a arquitectura do procesador LoongArch, integración de parches "BIG TCP", modo baixo demanda en fscache, eliminación de código para admitir o formato a.out, posibilidade de usar ZSTD para a compresión de firmware, unha interface para xestionar o desaloxo da memoria do espazo do usuario, aumentando a fiabilidade e o rendemento do xerador de números pseudoaleatorios, soporte para Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) e ARM Extensións SME (Scalable Matrix Extension).

No anuncio, Linus dixo que o máis probable é que a próxima versión do núcleo teña o número 6.0, xa que a rama 5.x acumulou bastantes versións para cambiar o primeiro número do número de versión. O cambio de numeración realízase por motivos estéticos e é un paso formal que alivia as molestias pola acumulación dunha gran cantidade de temas na serie.

Linus tamén mencionou que usou un portátil de Apple baseado na arquitectura ARM64 (Apple Silicon) cun ambiente Linux baseado na distribución Asahi Linux para crear a versión. Non é a estación de traballo principal de Linus, pero usou a plataforma para probar a súa idoneidade para o traballo no núcleo e asegurarse de que podía producir versións do núcleo mentres viaxaba cun portátil lixeiro á man. Anteriormente, hai moitos anos, Linus tiña experiencia usando equipos de Apple para o desenvolvemento: unha vez usou un PC baseado na CPU ppc970 e un portátil Macbook Air.

A nova versión inclúe 16401 correccións de 2190 desenvolvedores (na última versión había 16206 correccións de 2127 desenvolvedores), o tamaño do parche é de 90 MB (os cambios afectaron a 13847 ficheiros, engadíronse 1149456 liñas de código, elimináronse 349177 liñas). Aproximadamente o 39% de todos os cambios introducidos na versión 5.19 están relacionados con controladores de dispositivos, aproximadamente o 21% dos cambios están relacionados coa actualización de código específico de arquitecturas de hardware, o 11% están relacionados coa pila de rede, o 4% están relacionados con sistemas de ficheiros e o 3% están relacionados cos subsistemas do núcleo interno.

Principais novidades no núcleo 5.19:

  • Subsistema de disco, E/S e sistemas de ficheiros
    • O sistema de ficheiros EROFS (Enhanced Read-Only File System), destinado a ser usado en particións de só lectura, converteuse para utilizar o subsistema fscache, que proporciona almacenamento en caché de datos. O cambio mellorou significativamente o rendemento dos sistemas nos que se lanzan un gran número de contedores desde unha imaxe baseada en EROFS.
    • Engadiuse un modo de lectura baixo demanda ao subsistema fscache, que se usa para optimizar EROFS. O novo modo permítelle organizar a caché de lectura a partir de imaxes FS situadas no sistema local. En contraste co modo de operación inicialmente dispoñible, que se centra no almacenamento na caché no sistema de ficheiros local de datos transferidos a través de sistemas de ficheiros de rede, o modo "a demanda" delega as funcións de recuperar datos e escribilos na caché nun proceso en segundo plano en execución no espazo do usuario.
    • XFS ofrece a capacidade de almacenar miles de millóns de atributos estendidos nun i-node. O número máximo de extensións para un ficheiro aumentou de 4 millóns a 247. Implementouse un modo para actualizar atomicamente varios atributos de ficheiro estendidos á vez.
    • O sistema de ficheiros Btrfs optimizou o traballo con bloqueos, o que permitiu un aumento de aproximadamente un 7% no rendemento ao escribir directamente no modo nowait. O rendemento das operacións en modo NOCOW (sen copia en escritura) increméntase aproximadamente un 3%. A carga na caché da páxina ao executar o comando "enviar" reduciuse. O tamaño mínimo das subpáxinas reduciuse de 64K a 4K (pódense usar subpáxinas máis pequenas que as páxinas do núcleo). Fíxose unha transición desde o uso dunha árbore de base ao algoritmo XArrays.
    • Engadiuse un modo ao servidor NFS para estender a conservación do estado de bloqueo definido por un cliente que deixou de responder ás solicitudes. O novo modo permítelle atrasar a liberación do bloqueo ata un día a menos que outro cliente solicite un bloqueo competidor. No modo normal, o bloqueo elimínase 90 segundos despois de que o cliente deixe de responder.
    • O subsistema de seguimento de eventos no fanotify FS implementa a marca FAN_MARK_EVICTABLE, coa que pode desactivar fixar os i-nodes de destino na caché, por exemplo, para ignorar subramas sen fixar as súas partes na caché.
    • O controlador para o sistema de ficheiros FAT32 engadiu soporte para obter información sobre o momento da creación do ficheiro mediante a chamada ao sistema statx coa implementación dunha versión máis eficiente e funcional de stat(), que devolve información ampliada sobre o ficheiro.
    • Realizáronse optimizacións significativas no controlador exFAT para permitir a limpeza simultánea dun grupo de sectores cando o modo "dirsync" está activo, en lugar da limpeza secuencial sector por sector. Ao reducir o número de solicitudes de bloqueo despois da optimización, o rendemento de crear un gran número de directorios na tarxeta SD aumentou máis dun 73-85%, dependendo do tamaño do clúster.
    • O núcleo inclúe a primeira actualización correctiva do controlador ntfs3. Desde que ntfs3 se incluíu no núcleo 5.15 en outubro pasado, o controlador non se actualizou e perdeuse a comunicación cos desenvolvedores, pero os desenvolvedores retomaron a publicación dos cambios. Os parches propostos eliminaron os erros que provocaban fugas de memoria e fallos, resolveron problemas coa execución de xfstests, limparon o código non utilizado e corrixiron erros tipográficos.
    • Para OverlayFS, implementouse a capacidade de asignar ID de usuario dos sistemas de ficheiros montados, que se usa para facer coincidir os ficheiros dun usuario específico nunha partición externa montada con outro usuario do sistema actual.
  • Servizos de memoria e sistema
    • Engadiuse soporte inicial para a arquitectura do conxunto de instrucións LoongArch usada nos procesadores Loongson 3 5000, que implementa o novo RISC ISA, similar ao MIPS e RISC-V. A arquitectura LoongArch está dispoñible en tres variantes: 32 bits reducidos (LA32R), 32 bits normal (LA32S) e 64 bits (LA64).
    • Eliminouse o código para admitir o formato de ficheiro executable a.out, que quedou en desuso na versión 5.1. O formato a.out estivo en desuso nos sistemas Linux, e as ferramentas modernas non admiten a xeración de ficheiros a.out nas configuracións predeterminadas de Linux. O cargador de ficheiros a.out pódese implementar enteiramente no espazo do usuario.
    • O soporte para opcións de arranque específicas de x86 foi descontinuado: nosp, nosmap, nosmep, noexec e noclflush).
    • O soporte para a arquitectura desactualizada da CPU h8300 (Renesas H8/300), que estivo sen soporte durante moito tempo, foi descontinuada.
    • Capacidades ampliadas relacionadas coa resposta á detección de bloqueos divididos ("bloqueos divididos") que se producen ao acceder a datos non aliñados na memoria debido ao feito de que ao executar unha instrución atómica, os datos cruzan dúas liñas de caché da CPU. Tales bloqueos levan a unha caída significativa no rendemento. Se anteriormente, por defecto, o núcleo emitía un aviso con información sobre o proceso que provocou o bloqueo, agora o proceso problemático ralentizarase aínda máis para preservar o rendemento do resto do sistema.
    • Engadido soporte para o mecanismo IFS (In-Field Scan) implementado nos procesadores Intel, que lle permite realizar probas de diagnóstico de CPU de baixo nivel que poden identificar problemas que non son detectados polas ferramentas estándar baseados en códigos de corrección de erros (ECC) ou bits de paridade. . As probas realizadas son en forma de firmware descargable, deseñados de forma similar ás actualizacións de microcódigos. Os resultados das probas están dispoñibles a través de sysfs.
    • Engadida a posibilidade de incorporar un ficheiro bootconfig no núcleo, o que permite, ademais das opcións da liña de comandos, determinar os parámetros do núcleo a través dun ficheiro de configuración. A incorporación realízase mediante a opción de montaxe 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Anteriormente, o bootconfig determinábase uníndolle á imaxe initrd. A integración no núcleo permite que bootconfig se use en configuracións sen initrd.
    • Implementouse a posibilidade de descargar firmware comprimido usando o algoritmo Zstandard. Engadiuse a sysfs un conxunto de ficheiros de control /sys/class/firmware/*, o que lle permite iniciar a carga do firmware desde o espazo do usuario.
    • A interface de E/S asíncrona io_uring ofrece unha nova marca, IORING_RECVSEND_POLL_FIRST, que, cando estea configurada, enviará primeiro unha operación de rede para ser procesada mediante sondaxes, o que pode aforrar recursos nas situacións nas que é aceptable procesar a operación con certo atraso. io_uring tamén engadiu soporte para a chamada do sistema socket(), propuxo novas marcas para simplificar a xestión dos descritores de ficheiros, engadiu un modo "multi-shot" para aceptar varias conexións á vez na chamada accept() e engadiu operacións para reenviar NVMe comandos directamente ao dispositivo.
    • A arquitectura Xtensa ofrece soporte para a ferramenta de depuración KCSAN (Kernel Concurrency Sanitizer), deseñada para detectar dinámicamente as condicións de carreira dentro do núcleo. Tamén se engadiu soporte para o modo de suspensión e os coprocesadores.
    • Para a arquitectura m68k (Motorola 68000), implementouse unha máquina virtual (simulador de plataforma) baseada no emulador Android Goldfish.
    • Para a arquitectura AArch64, implementouse soporte para extensións Armv9-A SME (Extensión de matriz escalable).
    • O subsistema eBPF permite almacenar punteiros escritos en estruturas de mapas e tamén engade soporte para punteiros dinámicos.
    • Proponse un novo mecanismo de recuperación de memoria proactiva que admite o control do espazo do usuario mediante o ficheiro memory.reclaim. Escribir un número no ficheiro especificado tentará expulsar o número de bytes correspondente do conxunto asociado co cgroup.
    • Mellora a precisión do uso da memoria ao comprimir datos na partición de intercambio mediante o mecanismo zswap.
    • Para a arquitectura RISC-V, ofrécese soporte para executar executables de 32 bits en sistemas de 64 bits, engádese un modo para ligar atributos restritivos ás páxinas de memoria (por exemplo, para desactivar o almacenamento en caché) e implícase a función kexec_file_load() .
    • A implementación do soporte para sistemas Armv32T e Armv4 de 5 bits está adaptada para o seu uso en compilacións universais de núcleo multiplataforma adecuadas para diferentes sistemas ARM.
  • Virtualización e seguridade
    • O subsistema EFI implementa a capacidade de transferir confidencialmente información secreta aos sistemas convidados sen revelala ao sistema host. Os datos son proporcionados a través do directorio security/coco en securityfs.
    • O modo de protección de bloqueo, que restrinxe o acceso do usuario root ao núcleo e bloquea as rutas de omisión de arranque seguro de UEFI, eliminou unha brecha que permitía evitar a protección manipulando o depurador do núcleo.
    • Inclúense parches destinados a mellorar a fiabilidade e o rendemento do xerador de números pseudoaleatorios.
    • Ao construír usando Clang 15, implícase o soporte para o mecanismo para aleatorizar as estruturas do núcleo.
    • O mecanismo Landlock, que permite limitar a interacción dun grupo de procesos co entorno externo, ofrece soporte para regras que permiten controlar a execución das operacións de cambio de nome de ficheiros.
    • O subsistema IMA (Integrity Measurement Architecture), deseñado para verificar a integridade dos compoñentes do sistema operativo mediante sinaturas dixitais e hash, pasou a utilizar o módulo fs-verity para a verificación de ficheiros.
    • Cambiouse a lóxica de accións ao desactivar o acceso sen privilexios ao subsistema eBPF: previamente todos os comandos asociados á chamada ao sistema bpf() estaban desactivados e, a partir da versión 5.19, déixase o acceso aos comandos que non levan á creación de obxectos. . Este comportamento require un proceso privilexiado para cargar un programa BPF, pero entón os procesos sen privilexios poden interactuar co programa.
    • Engadiuse compatibilidade coa extensión AMD SEV-SNP (Secure Nested Paging), que proporciona un traballo seguro con táboas de páxinas de memoria anidadas e protexe contra ataques "undeSErVed" e "SEVerity" aos procesadores AMD EPYC, que permiten evitar a AMD SEV (Secure Encrypted Virtualization). ) mecanismo de protección.
    • Engadido soporte para o mecanismo Intel TDX (Trusted Domain Extensions), que permite bloquear os intentos de terceiros de acceder á memoria cifrada das máquinas virtuais.
    • O controlador virtio-blk, usado para emular dispositivos de bloque, engadiu soporte para E/S mediante sondaxes, que, segundo as probas, reduciu a latencia nun 10%.
  • Subsistema de rede
    • O paquete inclúe unha serie de parches BIG TCP que che permiten aumentar o tamaño máximo de paquete dun paquete TCP a 4 GB para optimizar o funcionamento das redes internas de centros de datos de alta velocidade. Un aumento similar no tamaño do paquete cun tamaño de campo de cabeceira de 16 bits conséguese mediante a implementación de paquetes "jumbo", cuxo tamaño na cabeceira IP está configurado en 0 e o tamaño real transmítese nun separado de 32 bits. campo nunha cabeceira anexa separada. Nas probas de rendemento, establecer o tamaño do paquete en 185 KB aumentou o rendemento nun 50 % e reduciu significativamente a latencia da transferencia de datos.
    • Continuouse o traballo na integración de ferramentas na pila de rede para rastrexar os motivos polos que se soltaron paquetes (códigos de razón). O código de razón envíase cando se libera a memoria asociada ao paquete e permite situacións como o descarte do paquete debido a erros de cabeceira, detección de falsificación de rp_filter, suma de verificación non válida, falta de memoria, regras IPSec XFRM activadas, número de secuencia TCP non válido, etc.
    • Engadiuse compatibilidade para desactivar as conexións MPTCP (MultiPath TCP) para utilizar o TCP normal, en situacións nas que non se poden usar determinadas funcións MPTCP. MPTCP é unha extensión do protocolo TCP para organizar o funcionamento dunha conexión TCP coa entrega de paquetes simultaneamente ao longo de varias rutas a través de diferentes interfaces de rede asociadas a diferentes enderezos IP. Engadiuse a API para controlar os fluxos MPTCP desde o espazo do usuario.
  • Оборудование
    • Engadíronse máis de 420 liñas de código relacionadas co controlador amdgpu, das cales unhas 400 liñas son ficheiros de cabeceira xerados automaticamente para os datos do rexistro ASIC no controlador AMD GPU, e outras 22.5k liñas proporcionan a implementación inicial do soporte para AMD SoC21. O tamaño total do controlador para as GPU AMD superou os 4 millóns de liñas de código. Ademais de SoC21, o controlador AMD inclúe soporte para SMU 13.x (System Management Unit), soporte actualizado para USB-C e GPUVM e está preparado para soportar as próximas xeracións de RDNA3 (RX 7000) e CDNA (AMD Instinct). plataformas.
    • O controlador i915 (Intel) ten capacidades ampliadas relacionadas coa xestión de enerxía. Engadíronse identificadores para as GPU Intel DG2 (Arc Alchemist) utilizadas en portátiles, proporcionaron soporte inicial para a plataforma Intel Raptor Lake-P (RPL-P), engadiuse información sobre as tarxetas gráficas Arctic Sound-M), implementou ABI para motores de cálculo, engadiuse para Soporte de tarxetas DG2 para o formato Tile4; para sistemas baseados na microarquitectura Haswell, está implementado soporte DisplayPort HDR.
    • O controlador Nouveau pasou a usar o manejador drm_gem_plane_helper_prepare_fb; aplicouse a asignación de memoria estática a algunhas estruturas e variables. En canto ao uso de módulos do núcleo de código aberto por parte de NVIDIA en Nouveau, o traballo ata agora redúcese a identificar e eliminar erros. No futuro, está previsto que o firmware publicado se use para mellorar o rendemento do controlador.
    • Engadiuse un controlador para o controlador NVMe usado nos ordenadores Apple baseado no chip M1.

Ao mesmo tempo, a Latin American Free Software Foundation formou unha versión do núcleo completamente gratuíto 5.19 - Linux-libre 5.19-gnu, eliminado 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 limpa os controladores de pureLiFi X/XL/XC e TI AMx3 Wkup-M3 IPC. Código de limpeza de blob actualizado en Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, controladores e subsistemas pu3-imgu. Implementouse o procesamento dos ficheiros da árbore de dispositivos Qualcomm AArch64. Engadiuse compatibilidade para o novo esquema de nomeamento de compoñentes de Sound Open Firmware. Deixou de limpar o controlador ATM Ambassador, que foi eliminado do núcleo. A xestión da limpeza de blob en HDCP e Mellanox Core moveuse a etiquetas kconfig separadas.

Fonte: opennet.ru

Engadir un comentario