Lansarea nucleului Linux 6.0

După două luni de dezvoltare, Linus Torvalds a lansat versiunea kernelului Linux 6.0. Schimbarea semnificativă a numărului de versiune a fost făcută din motive estetice și este un pas formal, care elimină disconfortul cauzat de acumularea unui număr mare de lansări în serie (Linus a glumit că motivul schimbării numerotării este că i se termină degetele de la mâini și picioare ca să numere versiunile). Dintre cele mai notabile schimbări se numără: suport pentru scrierea tamponizată asincronă în XFS, driverul bloc ublk, optimizarea planificatorului de sarcini, un mecanism de verificare a corectitudinii funcționării kernelului și suport pentru cifrarea bloc ARIA.

Principalele noutăți în kernelul 6.0:

  • Subsistemul de disc, I/O și sistemele de fișiere
    • Sistemul de fișiere XFS a primit suport pentru scrierea tamponizată asincronă folosind mecanismul io_uring. Testele de performanță efectuate cu ajutorul instrumentului fio (1 fir, dimensiunea blocului 4kB, 600 de secunde, scriere secvențială) arată o creștere a numărului de operațiuni de intrare/ieșire pe secundă (IOPS) de la 77k la 209k, viteza de transfer a datelor – de la 314MB/s la 854MB/s, și o scădere a întârzierilor de la 9600ns la 120ns (de 80 de ori).
    • În sistemul de fișiere Btrfs a fost implementată a doua versiune a protocolului pentru comanda „send”, care oferă suport pentru metadate suplimentare, expedierea datelor în blocuri mai mari (mai mari de 64K) și transmiterea extentoarelor într-o formă comprimată. Performanța operațiunilor de citire directă (direct read) a fost crescută semnificativ (de până la 3 ori) prin citirea simultană a până la 256 de sectoare. Conflictele de blocare au fost reduse și verificarea metadatelor a fost accelerată prin reducerea metadatelor rezervate pentru elementele suspendate.
    • În sistemul de fișiere ext4 au fost adăugate noi operațiuni ioctl EXT4_IOC_GETFSUUID și EXT4_IC_SETFSUUID pentru extragerea sau setarea identificatorului UUID, stocat în superbloc.
    • În sistemul de fișiere F2FS a fost propus un mod de consum scăzut de memorie, care optimizează funcționarea pe dispozitive cu memorie RAM redusă și permite scăderea consumului de memorie pe seama reducerii performanței.
    • A fost adăugat suport pentru autentificarea unităților NVMe.
    • În server NFSv4 a implementat o limită pentru numărul de clienți activi, care este setată la 1024 de clienți admisibili pentru fiecare gigabyte de memorie RAM din sistem.
    • În implementarea clientului CIFS, performanța a fost îmbunătățită în modul de transmisie multicircuit.
    • Sub-sistemul de monitorizare a evenimentelor în FS fanotify a adăugat un nou steag FAN_MARK_IGNORE pentru a ignora evenimentele specifice.
    • În FS Overlayfs, la montarea deasupra unui FS cu mapare de identificatori de utilizatori, s-a asigurat suport corect pentru listele de control al accesului compatibile POSIX.
    • A fost adăugat un driver bloc ublk, care își externalizează logica specifică pe un proces de fundal în spațiul utilizatorului și utilizează sub-sistemul io_uring.
  • Memorie și servicii de sistem
    • În sub-sistemul DAMON (Monitorizarea Accesului la Date) au fost adăugate noi funcționalități, care permit nu doar monitorizarea accesului proceselor la memorie din spațiul utilizatorului, ci și influențarea gestionării memoriei. În special, a fost propus un nou modul „LRU_SORT”, care asigură reorganizarea listelor LRU (Least Recently Used) pentru a spori prioritatea anumitor pagini de memorie.
    • A fost implementată posibilitatea de a crea noi regiuni de memorie, utilizând caracteristicile magistralei CXL (Compute Express Link), folosită pentru organizarea interacțiunilor de înaltă viteză între CPU și dispozitivele de memorie. CXL permite conectarea de noi regiuni de memorie, furnizate de dispozitive externe de memorie, și utilizarea acestora ca resurse suplimentare în spațiul de adresare fizic pentru extinderea memoriei sistemului (DDR) sau memoriei permanente (PMEM).
    • S-au rezolvat problemele de performanță ale sistemelor pe procesoare AMD Zen, cauzate de codul adăugat acum 20 de ani pentru a ocoli o problemă hardware în unele chipseturi (a fost adăugată o instrucțiune suplimentară WAIT, care încetinea procesorul pentru a permite chipsetului să intre în stare de inactivitate). Modificarea a dus la creșterea performanței în sarcini care alternează frecvent între stările de inactivitate (idle) și activitate (busy). De exemplu, după dezactivarea manevrei de ocolire, mediile testului tbench au crescut de la 32191 MB/s la 33805 MB/s.
    • Codul de heuristică care asigura migrarea proceselor pe CPU-urile cele mai puțin solicitate, având în vedere câștigul preconizat în consumul de energie, a fost eliminat din planificatorul de sarcini. Dezvoltatorii au ajuns la concluzia că heuristica nu oferă beneficii semnificative și este mai simplu să se mute procesele fără evaluări suplimentare de fiecare dată când o astfel de mutare ar putea reduce consumul de energie (de exemplu, atunci când CPU-ul țintă are un consum de energie mai scăzut). Deactivarea heuristicii a condus la o reducere a consumului de energie în timpul sarcinilor intense; de exemplu, în testul de decodare video, consumul de energie a scăzut cu 5.6%.
    • A fost optimizat modul de distribuire a sarcinilor pe nucleele CPU în sisteme mari, ceea ce a crescut performanța în anumite tipuri de sarcini.
    • În interfața de intrare/ieșire asincronă io_uring a fost propus un nou flag IORING_RECV_MULTISHOT, care permite utilizarea modului «multi-shot» cu apelul de sistem recv() pentru a efectua mai multe operații de citire dintr-un singur socket de rețea. În io_uring a fost, de asemenea, implementată suportul pentru transmiterea rețelelor fără tamponare intermediară (zero-copy).
    • A fost implementată posibilitatea de a trece programele BPF atașate la uprobe în starea de repaus. Un nou iterator ksym pentru lucrul cu tabelele simbolurilor nucleului a fost, de asemenea, adăugat în BPF.
    • Interfața învechită «efivars» din sysfs, destinată accesului la variabilele de încărcare UEFI, a fost eliminată (acum, accesul la datele EFI folosește pe scară largă sistemul de fișiere virtual efivarfs).
    • În utilitarul perf au fost implementate rapoarte noi pentru analiza conflictelor de blocare și a timpului petrecut de procesor pentru a executa componentele nucleului.
    • Setarea CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, care permitea compilarea nucleului în modul de optimizare «-O3», a fost eliminată. Se subliniază că experimentele cu modurile de optimizare pot fi efectuate prin transmiterea flag-urilor în timpul compilării («make KCFLAGS=-O3»), iar pentru adăugarea setării în Kconfig este necesar un profil repetabil al performanței, care arată că desfășurarea ciclurilor în modul «-O3» oferă un câștig comparativ cu nivelul de optimizare «-O2».
    • A fost adăugat interfața debugfs pentru a obține informații despre funcționarea unor „memory shrinker” individuale (handleri care sunt apelate în cazul lipsei de memorie și care gestionează compresia structurilor de date ale nucleului pentru a reduce consumul de memorie).
    • Pentru arhitecturile OpenRISC și LoongArch a fost implementat suportul pentru magistrala PCI.
    • Pentru arhitectura RISC-V a fost realizată extensia „Zicbom” pentru gestionarea dispozitivelor cu DMA, care nu sunt coerente cu cache-ul (non-cache-coherent).
  • Virtualizare și securitate
    • A fost adăugat mecanismul de verificare RV (Runtime Verification) pentru a verifica corectitudinea funcționării în sisteme de înaltă fiabilitate, care garantează absența erorilor. Verificarea se efectuează în timp real prin atașarea handlerilor la punctele de urmare, comparând desfășurarea efectivă a execuției cu un model determinist de referință predefinit, care definește comportamentul așteptat al sistemului. Comparația cu modelul în timpul execuției este poziționată ca o metodă mai ușoară și mai simplă de implementat în practică pentru confirmarea corectitudinii execuției în sisteme critice, complementar metodologiilor clasice de verificare a fiabilității. Printre avantajele RV se numără capacitatea de a oferi o verificare strictă fără a necesita implementarea întregului sistem într-o limbaj de modelare, precum și reacționarea flexibilă la evenimente neprevăzute.
    • Integrate modulele nucleului pentru gestionarea enclavei bazate pe tehnologia Intel SGX2 (Software Guard eXtensions), care permite aplicațiilor să execute cod în zone de memorie izolate criptate, accesul restului sistemului fiind limitat. Tehnologia Intel SGX2 este suportată în cipurile Intel Ice Lake și Gemini Lake și se deosebește de Intel SGX1 prin instrucțiuni suplimentare pentru gestionarea dinamică a memoriei enclavei.
    • Pentru arhitectura x86 a fost realizată posibilitatea de a transmite un seed pentru generatorul de numere pseudoaleatorii prin setările bootloader-ului.
    • În modulul LSM SafeSetID a fost adăugată capacitatea de a gestiona modificările efectuate prin apelul setgroups(). SafeSetID permite serviciilor sistemului să gestioneze utilizatorii în mod sigur, fără a crește privilegii (CAP_SETUID) și fără a obține drepturile utilizatorului root.
    • A fost adăugat suportul pentru cifrarea blocurilor ARIA.
    • În modulul de gestionare a securității bazat pe BPF a fost implementată posibilitatea de a atașa handleri la procese individuale și grupuri de procese (cgroup).
    • A fost adăugat un mecanism cu implementare watchdog pentru a determina blocările sistemelor gazdă pe baza monitorizării activității vCPU.
  • Subsystema de rețea
    • În subsistemul BPF au fost adăugate procesatori pentru generarea și verificarea cookie-urilor SYN. De asemenea, a fost adăugat un set de funcții (kfunc) pentru accesarea și modificarea stării conexiunilor.
    • În stiva wireless a fost adăugat suport pentru mecanismul MLO (Multi-Link Operation), definit în specificația WiFi 7, care permite dispozitivelor să primească și să trimită simultan date folosind diferite benzi de frecvență și canale, de exemplu, pentru a stabili simultan mai multe canale de comunicare între punctul de acces și dispozitivul client.
    • A fost îmbunătățită performanța implementării protocolului TLS încorporat în nucleu.
    • A fost adăugat un parametru de linie de comandă a nucleului «hostname=», care permite setarea numelui gazdei în stadiul timpuriu al încărcării, înainte ca componentele spațiului utilizator să fie lansate.
  • Echipament
    • În driverul i915 (Intel) a fost asigurat suport pentru plăcile grafice discrete Intel Arc (DG2/Alchemist) A750 și A770. A fost propusă o implementare inițială a suportului GPU Intel Ponte Vecchio (Xe-HPC) și Meteor Lake. Lucrările pentru suportul platformei Intel Raptor Lake au continuat.
    • În driverul amdgpu au continuat lucrările pentru a asigura suportul platformelor AMD RDNA3 (RX 7000) și CDNA (Instinct).
    • În driverul Nouveau a fost revizuit codul de suport pentru motoarele de afișare GPU NVIDIA nv50.
    • A fost adăugat un nou driver DRM logic logicvc pentru ecranele LogiCVC.
    • În driverul v3d (pentru GPU Broadcom Video Core) a fost implementat suport pentru plăcile Raspberry Pi 4.
    • În driverul msm a fost adăugat suport pentru GPU Qualcomm Adreno 619.
    • În driverul Panfrost a fost adăugat suport pentru GPU ARM Mali Valhall.
    • A fost adăugat suport inițial pentru procesoarele Qualcomm Snapdragon 8cx Gen3, utilizate în laptopurile Lenovo ThinkPad X13s.
    • Au fost adăugat drivere audio pentru platformele AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake și Mediatek MT8186.
    • A fost adăugat suport pentru acceleratoare sistemice de învățare automată Intel Habana Gaudi 2.
    • A fost adăugat suport pentru ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

În același timp, Fundația Latino-Americană pentru Software Liber a format o variantă complet liberă a nucleului 6.0 — Linux-libre 6.0-gnu, curățată de elemente de firmware și drivere care conțin componente sau părți de cod ne-liber, a căror utilizare este limitată de către producător. În noua versiune, utilizarea blob-urilor în driverul CS35L41 HD-audio și în driverul cu interfață UCSI pentru microcontrolerele STM32G0 a fost dezactivată. S-au curățat fișierele dts pentru cipurile Qualcomm și MediaTek. A fost reconfigurată dezactivarea blob-urilor în driverul MediaTek MT76. Codul de curățare a blob-urilor în driverele și subsistemele AMDGPU, Adreno, Tegra VIC, Netronome NFP și Habanalabs Gaudi2 a fost actualizat. Curățarea driverului VXGE, care a fost eliminat din nucleu, a fost oprită.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster