Lansarea nucleului Linux 6.0

După două luni de dezvoltare, Linus Torvalds a prezentat lansarea nucleului Linux 6.0. Schimbarea semnificativă a numărului de versiune este din motive estetice și este un pas formal pentru a ușura disconfortul de a acumula un număr mare de probleme în serie (Linus a glumit că motivul pentru schimbarea numărului de ramură era mai probabil pentru că rămânea fără degete). și degetele de la picioare pentru a număra numerele de versiune) . Printre cele mai notabile modificări: suport pentru scrierea în buffer asincronă în XFS, driverul de bloc ublk, optimizarea programatorului de sarcini, un mecanism de verificare a funcționării corecte a nucleului, suport pentru cifrul bloc ARIA.

Inovații cheie în nucleul 6.0:

  • Subsistem de disc, I/O și sisteme de fișiere
    • Sistemul de fișiere XFS a adăugat suport pentru scrierile tampon asincrone folosind mecanismul io_uring. Testele de performanță efectuate folosind instrumente fio (1 fir, dimensiunea blocului de 4 kB, 600 de secunde, scriere secvențială) arată o creștere a operațiunilor de intrare/ieșire pe secundă (IOPS) de la 77k la 209k, viteza de transfer de date de la 314MB/s la 854MB/s, și o scădere a latenței de la 9600ns la 120ns (80 de ori).
    • Sistemul de fișiere Btrfs implementează o a doua versiune a protocolului pentru comanda „trimite”, care implementează suport pentru metadate suplimentare, trimițând date în blocuri mai mari (mai mult de 64K) și transmițând extensii în formă comprimată. Performanța operațiunilor de citire directă a fost crescută semnificativ (de până la 3 ori) datorită citirii simultane a până la 256 de sectoare. S-a redus conflictul de blocare și a accelerat verificarea metadatelor prin reducerea metadatelor rezervate pentru elementele amânate.
    • Noi operațiuni ioctl EXT4_IOC_GETFSUUID și EXT4_IC_SETFSUUID au fost adăugate la sistemul de fișiere ext4 pentru a prelua sau a seta UUID-ul stocat în superbloc.
    • Sistemul de fișiere F2FS oferă un mod de consum redus de memorie, care optimizează funcționarea pe dispozitivele cu o cantitate mică de RAM și vă permite să reduceți consumul de memorie cu prețul unei performanțe reduse.
    • S-a adăugat suport pentru autentificarea unității NVMe.
    • Serverul NFSv4 implementează o limită a numărului de clienți activi, care este setată la 1024 de clienți validi pentru fiecare gigabyte de RAM din sistem.
    • Implementarea clientului CIFS a îmbunătățit performanța în modul de transmisie multicanal.
    • Un nou semnal FAN_MARK_IGNORE a fost adăugat la subsistemul de urmărire a evenimentelor din fanotify FS pentru a ignora anumite evenimente.
    • În Overlayfs FS, atunci când este montat deasupra unui FS cu mapare ID utilizator, este oferit suport corect pentru listele de control al accesului compatibile cu POSIX.
    • S-a adăugat driverul bloc ublk, care mută logica specifică pe partea procesului de fundal în spațiul utilizatorului și utilizează subsistemul io_uring.
  • Servicii de memorie și sistem
    • Au fost adăugate noi funcții la subsistemul DAMON (Data Access MONitor), permițând nu numai monitorizarea accesului procesului la RAM din spațiul utilizatorului, ci și influențarea managementului memoriei. În special, a fost propus un nou modul „LRU_SORT”, care oferă regruparea listelor LRU (Least Recently Used) pentru a crește prioritatea anumitor pagini de memorie.
    • Capacitatea de a crea noi regiuni de memorie a fost implementată folosind capabilitățile magistralei CXL (Compute Express Link), folosită pentru a organiza interacțiunea de mare viteză între CPU și dispozitivele de memorie. CXL vă permite să conectați noi regiuni de memorie furnizate de dispozitive de memorie externe și să le utilizați ca resurse suplimentare de spațiu de adrese fizice pentru a extinde memoria cu acces aleatoriu (DDR) sau memoria permanentă (PMEM) a sistemului.
    • S-au rezolvat problemele de performanță cu procesoarele AMD Zen cauzate de codul adăugat acum 20 de ani pentru a rezolva o problemă hardware în unele chipset-uri (a fost adăugată o instrucțiune WAIT suplimentară pentru a încetini procesorul, astfel încât chipset-ul să aibă timp să intre într-o stare inactiv). Schimbarea a dus la o performanță redusă la sarcini de lucru care alternează frecvent între stările inactiv și ocupate. De exemplu, după dezactivarea soluției, scorurile medii ale testelor tbench au crescut de la 32191 MB/s la 33805 MB/s.
    • Codul cu euristică a fost eliminat din planificatorul de sarcini, asigurând migrarea proceselor către CPU-urile cel mai puțin încărcate, ținând cont de câștigul prognozat în consumul de energie. Dezvoltatorii au ajuns la concluzia că euristica nu a fost suficient de utilă și că a fost mai ușor să o eliminați și să migrați procesele fără o evaluare suplimentară ori de câte ori o astfel de migrare ar putea duce la un consum mai mic de energie (de exemplu, atunci când CPU-ul țintă se află într-un nivel de putere mai scăzut). Dezactivarea euristicii a dus la o reducere a consumului de energie atunci când efectuați sarcini intensive, de exemplu, în testul de decodare video, consumul de energie a scăzut cu 5.6%.
    • Distribuția sarcinilor între nucleele CPU pe sisteme mari a fost optimizată, ceea ce a îmbunătățit performanța pentru anumite tipuri de încărcătură de lucru.
    • Interfața I/O asincronă io_uring oferă un nou indicator, IORING_RECV_MULTISHOT, care vă permite să utilizați modul multi-shot cu apelul de sistem recv() pentru a efectua mai multe operații de citire de la aceeași soclu de rețea simultan. io_uring acceptă și transferul de rețea fără tamponare intermediară (zero-copy).
    • S-a implementat capacitatea de a pune programele BPF atașate la uprobe într-o stare de somn. BPF adaugă, de asemenea, un nou iterator ksym pentru lucrul cu tabelele de simboluri ale nucleului.
    • Interfața învechită „efivars” din sysfs, destinată accesului la variabilele de boot UEFI, a fost eliminată (efivarfs virtual FS este acum folosit universal pentru a accesa datele EFI).
    • Utilitarul perf are noi rapoarte pentru analiza conflictelor de blocare și a timpului petrecut de procesor executând componentele nucleului.
    • Setarea CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 a fost eliminată, ceea ce a permis nucleului să fie construit în modul de optimizare „-O3”. Se remarcă faptul că experimentele cu moduri de optimizare pot fi efectuate prin trecerea de steaguri în timpul asamblarii („make KCFLAGS=-O3”), iar adăugarea unei setări la Kconfig necesită profilare repetabilă de performanță, arătând că derularea buclei este utilizată în modul „-O3”. oferă un avantaj în comparație cu nivelul de optimizare „-O2”.
    • A fost adăugată o interfață debugfs pentru a obține informații despre funcționarea „reducerilor de memorie” individuale (handlerii apelați atunci când există memorie insuficientă și împachetează structurile de date ale nucleului pentru a reduce consumul de memorie).
    • Pentru arhitecturile OpenRISC și LoongArch, este implementat suportul pentru magistrala PCI.
    • Pentru arhitectura RISC-V, extensia „Zicbom” a fost implementată pentru a gestiona dispozitivele cu DMA care nu este coerent în cache.
  • Virtualizare și securitate
    • A fost adăugat un mecanism de verificare RV (Runtime Verification) pentru a verifica funcționarea corectă pe sisteme extrem de fiabile care garantează nicio eroare. Verificarea se realizează în timpul execuției prin atașarea handler-urilor la punctele de urmărire care verifică progresul real al execuției față de un model determinist de referință predeterminat al mașinii care definește comportamentul așteptat al sistemului. Verificarea cu modelul în timpul execuției este poziționată ca o metodă mai ușoară și mai ușor de implementat pentru confirmarea corectitudinii execuției pe sistemele critice, completând metodele clasice de verificare a fiabilității. Printre avantajele RV se numără capacitatea de a oferi o verificare strictă fără o implementare separată a întregului sistem într-un limbaj de modelare, precum și un răspuns flexibil la evenimente neprevăzute.
    • Componente kernel integrate pentru gestionarea enclavelor bazate pe tehnologia Intel SGX2 (Software Guard eXtensions), care permite aplicațiilor să execute cod în zone izolate criptate de memorie, la care restul sistemului are acces limitat. Tehnologia Intel SGX2 este acceptată în cipurile Intel Ice Lake și Gemini Lake și diferă de Intel SGX1 prin instrucțiuni suplimentare pentru gestionarea dinamică a memoriei enclavelor.
    • Pentru arhitectura x86, a fost implementată capacitatea de a transfera semințele pentru generatorul de numere pseudoaleatoare prin setările bootloader-ului.
    • Modulul SafeSetID LSM are acum capacitatea de a gestiona modificările efectuate prin apelul setgroups(). SafeSetID permite serviciilor de sistem să gestioneze în siguranță utilizatorii fără a crește privilegiile (CAP_SETUID) și fără a obține privilegii root.
    • S-a adăugat suport pentru cifrul bloc ARIA.
    • Modulul de management al securității bazat pe BPF oferă posibilitatea de a atașa handlere la procese individuale și la grupuri de procese (cgroups).
    • A fost adăugat un mecanism cu o implementare watchdog pentru a detecta blocările sistemelor invitate pe baza monitorizării activității vCPU.
  • Subsistemul de rețea
    • La subsistemul BPF au fost adăugate handlere pentru generarea și verificarea cookie-urilor SYN. De asemenea, este adăugat un set de funcții (kfunc) pentru accesarea și modificarea stării conexiunilor.
    • Stack-ul wireless a adăugat suport pentru mecanismul MLO (Multi-Link Operation), definit în specificația WiFi 7 și care permite dispozitivelor să primească și să trimită date simultan folosind benzi și canale diferite de frecvență, de exemplu, pentru a stabili simultan mai multe canale de comunicație între un punct de acces la un dispozitiv client.
    • Performanța protocolului TLS încorporat în nucleu a fost îmbunătățită.
    • S-a adăugat o opțiune de linie de comandă a nucleului „hostname=" pentru a permite setarea numelui de gazdă la începutul procesului de pornire, înainte ca componentele spațiului utilizator să fie pornite.
  • Оборудование
    • Driverul i915 (Intel) oferă suport pentru plăcile video discrete Intel Arc (DG2/Alchemist) A750 și A770. A fost propusă o implementare inițială a suportului pentru GPU-urile Intel Ponte Vecchio (Xe-HPC) și Meteor Lake. Lucrările continuă pentru a sprijini platforma Intel Raptor Lake.
    • Driverul amdgpu continuă să ofere suport pentru platformele AMD RDNA3 (RX 7000) și CDNA (Instinct).
    • Driverul Nouveau a reelaborat codul de suport pentru motoarele de afișare GPU NVIDIA nv50.
    • S-a adăugat un nou driver logicvc DRM pentru ecranele LogiCVC.
    • Driverul v3d (pentru GPU Broadcom Video Core) acceptă plăci Raspberry Pi 4.
    • S-a adăugat suport pentru GPU Qualcomm Adreno 619 la driverul msm.
    • S-a adăugat suport pentru GPU ARM Mali Valhall la driverul Panfrost.
    • S-a adăugat suport inițial pentru procesoarele Qualcomm Snapdragon 8cx Gen3 utilizate în laptopurile Lenovo ThinkPad X13s.
    • S-au adăugat drivere de sunet pentru platformele AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake și Mediatek MT8186.
    • S-a adăugat suport pentru acceleratoarele de învățare automată Intel Habana Gaudi 2.
    • S-a 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, Latin American Free Software Foundation a format o versiune a nucleului complet gratuit 6.0 - Linux-libre 6.0-gnu, curățată de elemente de firmware și drivere care conțin componente sau secțiuni de cod non-libere, al căror scop este limitat de producător. Noua versiune dezactivează utilizarea blob-urilor în driverul audio HD CS35L41 și driverul UCSI pentru microcontrolerele STM32G0. Fișierele DTS pentru cipurile Qualcomm și MediaTek au fost curățate. Dezactivarea blob-urilor din driverul MediaTek MT76 a fost reluată. Cod de curățare blob actualizat în driverele și subsistemele AMDGPU, Adreno, Tegra VIC, Netronome NFP și Habanalabs Gaudi2. S-a oprit curățarea driverului VXGE, care a fost eliminat din kernel.

Sursa: opennet.ru

Adauga un comentariu