Llançament del nucli Linux 6.3

Després de dos mesos de desenvolupament, Linus Torvalds ha llançat el nucli Linux 6.3. Entre els canvis més notables: neteja de plataformes ARM obsoletes i controladors de gràfics, integració continuada del suport del llenguatge Rust, utilitat hwnoise, suport per a estructures d'arbre vermell-negre a BPF, mode BIG TCP per a IPv4, benchmark Dhrystone integrat, capacitat de desactivar execució a memfd, suport per crear controladors HID mitjançant BPF, s'han fet canvis a Btrfs per reduir la fragmentació del grup de blocs.

La nova versió va acceptar 15637 correccions de 2055 desenvolupadors; mida del pedaç: 76 MB (canvis afectats a 14296 fitxers, 1023183 línies de codi afegits, 883103 línies suprimides). Com a comparació, a la versió anterior es van proposar 16843 correccions de 2178 desenvolupadors; mida del pedaç - 62 MB. Al voltant del 39% de tots els canvis introduïts al nucli 6.3 estan relacionats amb els controladors de dispositiu, al voltant del 15% dels canvis estan relacionats amb l'actualització de codi específic de les arquitectures de maquinari, el 10% estan relacionats amb la pila de xarxa, el 5% amb sistemes de fitxers i 3. % als subsistemes interns del nucli.

Innovacions clau al nucli 6.3:

  • Serveis de memòria i sistema
    • S'ha dut a terme una neteja important del codi relacionat amb plaques ARM antigues i no utilitzades, que ha reduït la mida de les fonts del nucli en 150 mil línies. S'han eliminat més de 40 plataformes ARM antigues.
    • S'ha implementat la capacitat de crear controladors per a dispositius d'entrada amb la interfície HID (Human Interface Device) implementada en forma de programes BPF.
    • Continuació de la portabilitat des de la branca Rust-for-Linux de funcionalitats addicionals relacionades amb l'ús de Rust com a segon llenguatge per desenvolupar controladors i mòduls del nucli. El suport de Rust no està habilitat per defecte i no fa que Rust s'inclogui com a dependència obligatòria de la construcció del nucli. La funcionalitat que s'ofereix en versions anteriors s'ha ampliat amb suport per als tipus Arc (una implementació de punters amb un recompte de referència), ScopeGuard (la neteja es realitza quan surt de l'abast) i ForeignOwnable (ofereix moviment del punter entre el codi C i Rust). . S'ha eliminat el mòdul "préstec" del paquet "alloc" (tipus "Cow" i tret "ToOwned"). Cal assenyalar que l'estat de suport de Rust al nucli ja està a prop de començar a acceptar els primers mòduls escrits en Rust al nucli.
    • Linux en mode d'usuari (que executa el nucli com a procés d'usuari) als sistemes x86-64 admet codi escrit en Rust. S'ha afegit suport per crear Linux en mode d'usuari mitjançant clang amb optimitzacions de temps d'enllaç habilitades (LTO).
    • S'ha afegit la utilitat hwnoise per fer un seguiment dels retards causats pel comportament del maquinari. Les desviacions en el temps d'execució de les operacions (jitter) es determinen quan el processament d'interrupcions està inhabilitat, superant un microsegon en 10 minuts de càlculs.
    • S'ha afegit un mòdul del nucli amb una implementació de referència de Dhrystone que es pot utilitzar per avaluar el rendiment de la CPU en configuracions sense components d'espai d'usuari (per exemple, en l'etapa de portació de nous SoC que només implementen la càrrega del nucli).
    • S'ha afegit l'opció de línia d'ordres del nucli "cgroup.memory=nobpf" per desactivar la comptabilitat del consum de memòria per als programes BPF, que pot ser útil per a sistemes amb contenidors aïllats.
    • Per als programes BPF, es proposa una implementació de l'estructura de dades d'arbre vermell-negre, que utilitza kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) en lloc d'afegir un nou tipus de mapatge.
    • En el mecanisme de seqüències reiniciables (rseq, seqüències reiniciables) s'ha afegit la possibilitat de passar identificadors d'execució paral·lel (ID de concurrència de mapa de memòria) identificats amb el número de CPU als processos. Rseq proporciona un mitjà per executar ràpidament atòmicament operacions que, si s'interrompen per un altre fil, es netegen i es tornen a intentar.
    • Els processadors ARM admeten instruccions SME 2 (Scalable Matrix Extension).
    • Per a les arquitectures s390x i RISC-V RV64, s'implementa el suport per al mecanisme "BPF trampoline", que permet minimitzar la sobrecàrrega en transferir trucades entre el nucli i els programes BPF.
    • En sistemes amb processadors basats en l'arquitectura RISC-V, s'ha implementat l'ús d'instruccions "ZBB" per accelerar les operacions de cadena.
    • Per als sistemes basats en l'arquitectura del conjunt d'instruccions LoongArch (utilitzat en els processadors Loongson 3 5000 i que implementen un nou RISC ISA similar a MIPS i RISC-V), suport per a l'aleatorització de l'espai d'adreces del nucli (KASLR), la reubicació del nucli a la memòria (reubicació). ), parada de punts de maquinari i mecanisme kprobe.
    • El mecanisme DAMOS (Data Access Monitoring-based Operation Schemes), que permet alliberar memòria en funció de la freqüència d'accés a la memòria, admet filtres per excloure determinades àrees de memòria del processament a DAMOS.
    • La biblioteca C estàndard mínima Nolibc implementa suport per a l'arquitectura s390 i el conjunt d'instruccions Arm Thumb1 (a més del suport per a ARM, AArch64, i386, x86_64, RISC-V i MIPS).
    • Objtool s'ha optimitzat per accelerar les compilacions del nucli i reduir el consum màxim de memòria durant les compilacions (quan es construeix el nucli en mode "allyesconfig", no hi ha problemes amb la terminació forçada dels processos en sistemes amb 32 GB de RAM).
    • S'ha interromput el suport per al muntatge del nucli per part del compilador Intel ICC, que fa temps que no funciona i ningú ha expressat el desig d'arreglar-lo.
  • Subsistema de disc, E/S i sistemes de fitxers
    • tmpfs admet l'assignació d'ID d'usuari del sistema de fitxers muntat, que s'utilitza per assignar els fitxers d'un usuari específic en una partició estrangera muntada a un altre usuari del sistema actual.
    • A Btrfs, per reduir la fragmentació dels grups de blocs, les extensions es divideixen per mida quan s'assignen blocs, és a dir. qualsevol grup de blocs ara es limita a petits (fins a 128 KB), mitjans (fins a 8 MB) i grans extensions. La implementació de raid56 s'ha refactoritzat. Codi redissenyat per comprovar les sumes de control. S'han fet optimitzacions de rendiment per accelerar l'operació d'enviament fins a 10 vegades mitjançant la memòria cau per a directoris i executant ordres només quan sigui necessari. Operacions de mapes de mapa 10 vegades més ràpides saltant les comprovacions d'enllaços de retrocés per a dades compartides (instantànies). Les operacions amb metadades s'acceleren un XNUMX% optimitzant la cerca de claus en estructures b-tree.
    • Rendiment millorat d'ext4 FS permetent que diversos processos realitzin simultàniament operacions d'E/S directes a blocs assignats prèviament mitjançant bloquejos d'inode compartits en lloc de bloquejos exclusius.
    • A f2fs, s'ha treballat per millorar la llegibilitat del codi. S'han solucionat problemes importants relacionats amb l'escriptura atòmica i la nova memòria cau d'extensió.
    • Dissenyat per a particions de només lectura, EROFS (Enhanced Read-Only File System) té la capacitat d'enllaçar les operacions de descompressió de fitxers comprimits a la CPU per reduir la latència d'accés a les dades.
    • El programador d'E/S BFQ ha afegit suport per a unitats de disc giratoris avançades, com les que utilitzen diverses unitats controlades per separat (Multi Actuator).
    • S'ha afegit suport per al xifratge de dades mitjançant l'algorisme AES-SHA2 a la implementació del client i servidor NFS.
    • El subsistema FUSE (Filesystems In User Space) ha afegit suport per al mecanisme d'extensió de consulta, que us permet posar informació addicional a la consulta. A partir d'aquesta característica, s'implementa l'addició d'identificadors de grup a la sol·licitud FS, que són necessaris per tenir en compte els drets d'accés a l'hora de crear objectes al FS (create, mkdir, symlink, mknod).
  • Virtualització i seguretat
    • L'hipervisor KVM per a sistemes x86 afegeix suport per a hipertrucades Hyper-V ampliades i els proporciona reenviament a un controlador que s'executa en un entorn amfitrió d'espai d'usuari. El canvi va permetre implementar suport per al llançament imbricat de l'hipervisor Hyper-V.
    • KVM facilita la restricció de l'accés dels convidats als esdeveniments PMU (Performance Monitor Unit) relacionats amb la mesura del rendiment.
    • El mecanisme memfd, que permet identificar una àrea de memòria mitjançant un descriptor de fitxers passat entre processos, s'ha afegit la possibilitat de crear àrees en les quals l'execució de codi està prohibida (memfd no executable) i és impossible establir drets d'execució en el futur.
    • S'ha afegit una nova operació PR_SET_MDWE prctl per bloquejar els intents d'incloure drets d'accés a la memòria que permeten escriure i executar alhora.
    • La protecció contra atacs de la classe Spectre s'ha afegit i habilitat per defecte, basat en el mode automàtic IBRS (Enhanced Indirect Branch Restricted Speculation) proposat als processadors AMD Zen 4, que permet habilitar i desactivar de manera adaptativa l'execució especulativa d'instruccions durant el processament d'interrupcions. , trucades al sistema i canvis de context. La protecció proposada comporta una sobrecàrrega més baixa en comparació amb la protecció de Retpoline.
    • Soluciona una vulnerabilitat que podria evitar la protecció d'atac de Spectre v2 quan s'utilitza la tecnologia multithreading simultània (SMT o Hyper-Threading) i causada per la desactivació de STIBP (Single Thread Indirect Branch Predictors) en seleccionar el mode de protecció IBRS.
    • Per als sistemes basats en ARM64, s'ha afegit un nou objectiu de compilació "virtconfig", que, quan se selecciona, activa només el conjunt mínim de components del nucli necessaris per arrencar als sistemes de virtualització.
    • S'ha afegit suport per filtrar les trucades del sistema mitjançant el mecanisme seccomp per a l'arquitectura m68k.
    • S'ha afegit suport per als dispositius CRB TPM2 (Command Response Buffer) integrats dels processadors AMD Ryzen basats en la tecnologia Microsoft Pluton.
  • Subsistema de xarxa
    • S'ha afegit una interfície netlink per configurar la subcapa PLCA (Physical Layer Collision Avoidance), definida a l'especificació IEEE 802.3cg-2019 i utilitzada en xarxes Ethernet 802.3cg (10Base-T1S) optimitzades per connectar dispositius IoT i sistemes industrials. L'ús de PLCA millora el rendiment a les xarxes Ethernet de mitjans compartits.
    • El suport per a l'API "extensions sense fil" per gestionar les interfícies sense fil WiFi 7 (802.11be) s'ha interromput, ja que aquesta API no cobreix tots els paràmetres necessaris. Quan intenteu utilitzar l'API "extensions sense fil", que continua essent compatible com a capa emulada, ara es mostrarà un avís per a la majoria dels dispositius actuals.
    • S'ha preparat documentació detallada sobre l'API netlink (per a desenvolupadors del nucli i per a desenvolupadors d'aplicacions d'espai d'usuari). S'ha implementat la utilitat ynl-gen-c per generar codi C basat en les especificacions YAML del protocol Netlink.
    • S'ha afegit suport per a l'opció IP_LOCAL_PORT_RANGE als endolls de xarxa per simplificar la configuració de les connexions de sortida mitjançant traductors d'adreces sense utilitzar SNAT. Quan s'utilitza la mateixa adreça IP en diversos hosts, IP_LOCAL_PORT_RANGE permet que cada amfitrió utilitzi el seu propi rang de ports de xarxa de sortida i, a la passarel·la, reenviï paquets en funció dels números de port.
    • Per a MPTCP (MultiPath TCP), s'ha implementat la capacitat de processar fluxos mixtes que utilitzen els protocols IPv4 i IPv6. MPTCP és una extensió del protocol TCP per organitzar el funcionament d'una connexió TCP amb el lliurament de paquets simultàniament al llarg de diverses rutes a través de diferents interfícies de xarxa vinculades a diferents adreces IP.
    • Per a IPv4, s'implementa la possibilitat d'utilitzar l'extensió BIG TCP, que permet augmentar la mida màxima del paquet TCP fins a 4 GB per optimitzar el funcionament de les xarxes internes d'alta velocitat dels centres de dades. Aquest augment de la mida del paquet amb un camp de capçalera de 16 bits s'aconsegueix mitjançant la implementació de paquets "jumbo" que tenen la mida de la capçalera IP establerta a 0 i la mida real transmesa en un camp de 32 bits separat en una capçalera adjunta separada.
    • S'ha afegit un nou paràmetre sysctl default_rps_mask, mitjançant el qual podeu establir la configuració predeterminada RPS (Receive Packet Steering), que s'encarrega de distribuir el processament del trànsit entrant entre els nuclis de la CPU al nivell del controlador d'interrupcions.
    • Suport interromput per a disciplines de cua per restringir el trànsit CBQ (cua basada en classes), ATM (circuits virtuals ATM), dsmark (marcador de servei diferenciat), tcindex (índex de control de trànsit) i RSVP (protocol de reserva de recursos). Aquestes disciplines han estat abandonades durant molt de temps i ningú estava disposat a continuar amb el seu suport.
  • Оборудование
    • S'han eliminat tots els controladors de gràfics basats en DRI1: i810 (targetes gràfiques integrades Intel 8xx antigues), mga (GPU Matrox), r128 (GPU ATI Rage 128 incloses les targetes Rage Fury, XPERT 99 i XPERT 128), savage (GPU S3 Savage), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) i via (VIA IGP), que van quedar obsolets el 2016 i que no s'admeten a Mesa des del 2012.
    • S'han eliminat els controladors obsolets de framebuffer (fbdev) omap1, s3c2410, tmiofb i w100fb.
    • S'ha afegit un controlador DRM per a la VPU (Unitat de processament versàtil) integrada a les CPU Intel Meteor Lake (14a generació), dissenyades per accelerar la visió per ordinador i les operacions d'aprenentatge automàtic. El controlador s'implementa mitjançant el subsistema "accel", destinat a proporcionar suport per a acceleradors de computació, que es poden subministrar tant en forma d'ASIC separats com com a blocs IP dins del SoC i la GPU.
    • El controlador i915 (Intel) amplia el suport per a targetes gràfiques Intel Arc (DG2/Alchemist) discretes, proporciona suport preliminar per a les GPU Meteor Lake i inclou suport per a les GPU Intel Xe HP 4tile.
    • El controlador amdgpu afegeix suport per a la tecnologia AdaptiveSync i la possibilitat d'utilitzar Secure Display amb diverses pantalles. Suport actualitzat per a DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x i DP 2.1.
    • S'ha afegit suport per a plataformes SM8350, SM8450 SM8550, SDM845 i SC8280XP al controlador msm (GPU Qualcomm Adreno).
    • El controlador Nouveau ha deixat de suportar les antigues trucades ioctl.
    • S'ha afegit suport experimental per a NPU VerSilicon (processador de xarxa neuronal VeriSilicon) al controlador etnaviv.
    • S'ha implementat el controlador pata_parport per a unitats IDE connectades mitjançant un port paral·lel. El controlador afegit va permetre eliminar l'antic controlador PARIDE del nucli i actualitzar el subsistema ATA. Una limitació del nou controlador és la impossibilitat de connectar simultàniament una impressora i un disc mitjançant un port paral·lel.
    • S'ha afegit el controlador ath12k per a targetes sense fil basades en xips Qualcomm amb suport Wi-Fi 7. S'ha afegit suport per a targetes sense fil basades en xips RealTek RTL8188EU.
    • S'ha afegit suport per a 46 taulers basats en l'arquitectura ARM64, incloent Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD i també dispositius basat en SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 i SDM632, caixa de TV Rockchips RK3128, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328 i RK3/642 654/AM68 / AM69).

Al mateix temps, la Latin American Free Software Foundation va formar una variant del nucli completament lliure 6.3 - Linux-libre 6.3-gnu, eliminada d'elements de microprogramari i controladors que contenien components o seccions de codi no lliures, l'abast dels quals està limitat per el fabricant. A la versió 6.3, es van netejar les taques als nous controladors ath12k, aw88395 i peb2466, així com als nous fitxers d'arbre de dispositius per a dispositius qcom basats en AArch64. Codi de neteja de blob actualitzat als controladors i subsistemes amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, així com als controladors per a targetes DVB amb descodificació de programari i fitxers BPF precompilats. S'han aturat els controladors de purga mga, r128, tm6000, cpia2 i r8188eu, ja que es van eliminar del nucli. Neteja de taques del controlador i915 millorada.

Font: opennet.ru

Afegeix comentari