Vydanie jadra Linux 5.19

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie linuxového jadra 5.19. Medzi najvýznamnejšie zmeny: podpora architektúry procesora LoongArch, integrácia záplat "BIG TCP", režim na požiadanie vo fscache, odstránenie kódu na podporu formátu a.out, možnosť použiť ZSTD na kompresiu firmvéru, rozhranie pre správa vysťahovania pamäte z používateľského priestoru, zvýšenie spoľahlivosti a výkonu generátora pseudonáhodných čísel, podpora pre Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) a ARM SME (Scalable Matrix Extension) rozšírenia.

V oznámení Linus povedal, že s najväčšou pravdepodobnosťou bude mať ďalšie vydanie jadra číslo 6.0, pretože vetva 5.x nazhromaždila dostatok vydaní na zmenu prvého čísla v čísle verzie. Zmena číslovania sa vykonáva z estetických dôvodov a je formálnym krokom, ktorý zmierňuje nepohodlie v dôsledku nahromadenia veľkého počtu čísel v sérii.

Linus tiež spomenul, že na vytvorenie vydania použil notebook Apple založený na architektúre ARM64 (Apple Silicon) s linuxovým prostredím založeným na distribúcii Asahi Linux. Nie je to Linusova primárna pracovná stanica, ale platformu použil na otestovanie jej vhodnosti pre prácu s jadrom a na zabezpečenie toho, aby mohol produkovať vydania jadra na cestách s ľahkým notebookom po ruke. Predtým, pred mnohými rokmi, mal Linus skúsenosti s používaním zariadení Apple na vývoj - kedysi používal PC založené na CPU ppc970 a laptop Macbook Air.

Nová verzia obsahuje 16401 2190 opráv od 16206 2127 vývojárov (v minulom vydaní bolo 90 13847 opráv od 1149456 349177 vývojárov), veľkosť opravy je 39 MB (zmeny sa dotkli 5.19 21 súborov, pribudlo 11 4 3 riadkov kódu, zmazalo sa XNUMX XNUMX riadkov). Asi XNUMX % všetkých zmien zavedených v XNUMX súvisí s ovládačmi zariadení, približne XNUMX % zmien súvisí s aktualizáciou kódu špecifického pre hardvérové ​​architektúry, XNUMX % súvisí so sieťovým zásobníkom, XNUMX % sa týka súborových systémov a XNUMX % súvisia s internými subsystémami jadra.

Kľúčové inovácie v jadre 5.19:

  • Diskový subsystém, I/O a súborové systémy
    • Súborový systém EROFS (Enhanced Read-Only File System), určený na použitie na oddieloch iba na čítanie, bol skonvertovaný na používanie subsystému fscache, ktorý poskytuje ukladanie údajov do vyrovnávacej pamäte. Táto zmena výrazne zlepšila výkon systémov, v ktorých sa veľké množstvo kontajnerov spúšťa z obrazu založeného na EROFS.
    • Do subsystému fscache bol pridaný režim čítania na požiadanie, ktorý sa používa na optimalizáciu EROFS. Nový režim vám umožňuje organizovať ukladanie do vyrovnávacej pamäte čítania z obrazov FS umiestnených v lokálnom systéme. Na rozdiel od pôvodne dostupného režimu prevádzky, ktorý je zameraný na ukladanie údajov prenášaných prostredníctvom sieťových súborových systémov do vyrovnávacej pamäte v lokálnom súborovom systéme, režim „na požiadanie“ deleguje funkcie získavania údajov a ich zapisovania do vyrovnávacej pamäte na samostatný proces na pozadí bežiaci v užívateľskom priestore.
    • XFS poskytuje možnosť ukladať miliardy rozšírených atribútov v i-uzle. Maximálny počet rozsahov pre jeden súbor sa zvýšil zo 4 miliárd na 247. Bol implementovaný režim pre atomickú aktualizáciu niekoľkých rozšírených atribútov súboru naraz.
    • Súborový systém Btrfs má optimalizovanú prácu so zámkami, čo umožnilo približne 7% nárast výkonu pri priamom zápise v režime nowait. Výkon operácií v režime NOCOW (bez kopírovania pri zápise) sa zvýši približne o 3 %. Zaťaženie vyrovnávacej pamäte stránok pri spustení príkazu „send“ sa znížilo. Minimálna veľkosť podstránok bola znížená zo 64K na 4K (možno použiť podstránky menšie ako stránky jadra). Bol vykonaný prechod z použitia radixového stromu na algoritmus XArrays.
    • Na server NFS bol pridaný režim na rozšírenie zachovania stavu uzamknutia nastaveného klientom, ktorý prestal reagovať na požiadavky. Nový režim vám umožňuje odložiť vymazanie zámku až o jeden deň, pokiaľ iný klient nepožiada o konkurenčný zámok. V normálnom režime sa blokovanie zruší 90 sekúnd po tom, čo klient prestane reagovať.
    • Subsystém sledovania udalostí vo fanotify FS implementuje príznak FAN_MARK_EVICTABLE, pomocou ktorého môžete zakázať pripínanie cieľových i-uzlov vo vyrovnávacej pamäti, napríklad ignorovať podvetvy bez pripínania ich častí do vyrovnávacej pamäte.
    • Ovládač pre súborový systém FAT32 pridal podporu pre získavanie informácií o čase vytvorenia súboru prostredníctvom systémového volania statx s implementáciou efektívnejšej a funkčnejšej verzie stat(), ktorá vracia rozšírené informácie o súbore.
    • Boli vykonané významné optimalizácie ovládača exFAT, aby sa umožnilo súčasné vymazanie skupiny sektorov, keď je aktívny režim „dirsync“, namiesto postupného vymazania sektora po sektore. Znížením počtu blokových požiadaviek po optimalizácii vzrástol výkon pri vytváraní veľkého počtu adresárov na SD karte o viac ako 73-85% v závislosti od veľkosti klastra.
    • Jadro obsahuje prvú opravnú aktualizáciu ovládača ntfs3. Odkedy bol ntfs3 zahrnutý do jadra 5.15 v októbri minulého roka, ovládač nebol aktualizovaný a komunikácia s vývojármi sa stratila, ale vývojári teraz obnovili publikovanie zmien. Navrhované záplaty eliminovali chyby vedúce k únikom pamäte a pádom, vyriešili problémy s vykonávaním xfstests, vyčistili nepoužívaný kód a opravili preklepy.
    • Pre OverlayFS bola implementovaná možnosť mapovania ID používateľov pripojených súborových systémov, ktorá sa používa na porovnávanie súborov konkrétneho používateľa na pripojenom cudzom oddiele s iným používateľom na aktuálnom systéme.
  • Pamäťové a systémové služby
    • Pridaná počiatočná podpora pre architektúru inštrukčnej sady LoongArch používanú v procesoroch Loongson 3 5000, ktorá implementuje nový RISC ISA, podobný MIPS a RISC-V. Architektúra LoongArch je dostupná v troch variantoch: 32-bitová (LA32R), bežná 32-bitová (LA32S) a 64-bitová (LA64).
    • Odstránený kód na podporu formátu spustiteľného súboru a.out, ktorý bol vo verzii 5.1 zastaraný. Formát a.out je v systémoch Linux už dávno zastaraný a generovanie súborov a.out nie je podporované modernými nástrojmi v predvolených konfiguráciách Linuxu. Loader pre súbory a.out môže byť implementovaný úplne v užívateľskom priestore.
    • Podpora bootovacích možností špecifických pre x86 bola ukončená: nosp, nosmap, nosmep, noexec a noclflush).
    • Podpora pre zastaranú architektúru CPU h8300 (Renesas H8/300), ktorá bola dlho bez podpory, bola ukončená.
    • Rozšírené možnosti súvisiace s reakciou na detekciu rozdelených zámkov („rozdelených zámkov“), ktoré sa vyskytujú pri prístupe k nezarovnaným údajom v pamäti v dôsledku skutočnosti, že pri vykonávaní atómovej inštrukcie údaje prechádzajú dvoma riadkami vyrovnávacej pamäte CPU. Takéto blokády vedú k výraznému poklesu výkonu. Ak predtým jadro štandardne vydávalo varovanie s informáciami o procese, ktorý spôsobil zablokovanie, teraz sa problematický proces ďalej spomalí, aby sa zachoval výkon zvyšku systému.
    • Pridaná podpora pre mechanizmus IFS (In-Field Scan) implementovaný v procesoroch Intel, ktorý vám umožňuje spúšťať nízkoúrovňové diagnostické testy CPU, ktoré dokážu identifikovať problémy, ktoré nie sú detekované štandardnými nástrojmi na základe kódov na opravu chýb (ECC) alebo paritných bitov . Vykonané testy sú vo forme firmvéru na stiahnutie, navrhnutého podobne ako aktualizácie mikrokódu. Výsledky testov sú dostupné cez sysfs.
    • Pridaná možnosť vložiť bootconfig súbor do jadra, čo umožňuje okrem možností príkazového riadku určiť parametre jadra cez súbor nastavení. Vkladanie sa vykonáva pomocou voľby zostavy 'CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»'. Predtým sa bootconfig určoval pripojením k obrazu initrd. Integrácia do jadra umožňuje použitie bootconfig v konfiguráciách bez initrd.
    • Bola implementovaná možnosť stiahnuť firmvér komprimovaný pomocou algoritmu Zstandard. Do sysfs bola pridaná sada riadiacich súborov /sys/class/firmware/*, ktoré vám umožňujú spustiť načítanie firmvéru z používateľského priestoru.
    • Asynchrónne I/O rozhranie io_uring ponúka nový príznak IORING_RECVSEND_POLL_FIRST, ktorý, keď je nastavený, najprv odošle sieťovú operáciu na spracovanie pomocou dotazovania, čo môže ušetriť prostriedky v situáciách, keď je prijateľné spracovanie operácie s určitým oneskorením. io_uring tiež pridal podporu pre systémové volanie socket(), navrhol nové príznaky na zjednodušenie správy deskriptorov súborov, pridal režim „multi-shot“ na akceptovanie niekoľkých pripojení naraz vo volaní accept() a pridal operácie na presmerovanie NVMe príkazy priamo do zariadenia.
    • Architektúra Xtensa poskytuje podporu pre ladiaci nástroj KCSAN (Kernel Concurrency Sanitizer), ktorý je navrhnutý na dynamickú detekciu rasových podmienok v jadre. Pridaná aj podpora režimu spánku a koprocesorov.
    • Pre architektúru m68k (Motorola 68000) bol implementovaný virtuálny stroj (simulátor platformy) založený na emulátore Android Goldfish.
    • Pre architektúru AArch64 bola implementovaná podpora pre rozšírenia Armv9-A SME (Scalable Matrix Extension).
    • Subsystém eBPF umožňuje ukladanie typizovaných ukazovateľov v mapových štruktúrach a tiež pridáva podporu pre dynamické ukazovatele.
    • Navrhuje sa nový proaktívny mechanizmus obnovy pamäte, ktorý podporuje riadenie užívateľského priestoru pomocou súboru memory.reclaim. Zápis čísla do určeného súboru sa pokúsi odstrániť zodpovedajúci počet bajtov zo sady spojenej s cgroup.
    • Vylepšená presnosť využitia pamäte pri komprimácii údajov v odkladacom oddiele pomocou mechanizmu zswap.
    • Pre architektúru RISC-V je poskytovaná podpora pre spúšťanie 32-bitových spustiteľných súborov na 64-bitových systémoch, je pridaný režim na viazanie obmedzujúcich atribútov na stránky pamäte (napríklad na zakázanie ukladania do vyrovnávacej pamäte) a je implementovaná funkcia kexec_file_load() .
    • Implementácia podpory pre 32-bitové systémy Armv4T a Armv5 je prispôsobená na použitie v univerzálnych multiplatformových zostavách jadra vhodných pre rôzne systémy ARM.
  • Virtualizácia a bezpečnosť
    • Subsystém EFI implementuje schopnosť dôverne prenášať tajné informácie do hosťujúcich systémov bez toho, aby ich prezradil hostiteľskému systému. Údaje sa poskytujú prostredníctvom adresára security/coco v securityfs.
    • Režim ochrany uzamknutia, ktorý obmedzuje prístup používateľa root k jadru a blokuje cesty obchádzania UEFI Secure Boot, odstránil medzeru, ktorá umožňovala obísť ochranu manipuláciou s ladiacim nástrojom jadra.
    • Zahrnuté sú záplaty zamerané na zlepšenie spoľahlivosti a výkonu generátora pseudonáhodných čísel.
    • Pri zostavovaní pomocou Clang 15 je implementovaná podpora mechanizmu pre randomizáciu štruktúr jadra.
    • Mechanizmus Landlock, ktorý umožňuje obmedziť interakciu skupiny procesov s vonkajším prostredím, poskytuje podporu pre pravidlá, ktoré umožňujú riadiť vykonávanie operácií premenovania súborov.
    • Subsystém IMA (Integrity Measurement Architecture), určený na overovanie integrity komponentov operačného systému pomocou digitálnych podpisov a hash, bol presunutý na používanie modulu fs-verity na overovanie súborov.
    • Logika akcií pri zakázaní neprivilegovaného prístupu k subsystému eBPF bola zmenená - predtým boli zakázané všetky príkazy spojené so systémovým volaním bpf() a od verzie 5.19 je ponechaný prístup k príkazom, ktoré nevedú k vytváraniu objektov . Toto správanie vyžaduje privilegovaný proces na načítanie programu BPF, ale potom môžu neprivilegované procesy interagovať s programom.
    • Pridaná podpora pre rozšírenie AMD SEV-SNP (Secure Nested Paging), ktoré poskytuje bezpečnú prácu s vnorenými tabuľkami stránok pamäte a chráni pred útokmi „undeSErVed“ a „SEVerity“ na procesory AMD EPYC, čo umožňuje obísť AMD SEV (Secure Encrypted Virtualization). ) ochranný mechanizmus.
    • Pridaná podpora pre mechanizmus Intel TDX (Trusted Domain Extensions), ktorý umožňuje blokovať pokusy tretích strán o prístup k šifrovanej pamäti virtuálnych strojov.
    • Ovládač virtio-blk, ktorý sa používa na emuláciu blokových zariadení, má pridanú podporu pre I/O pomocou dotazovania, čo podľa testov znížilo latenciu asi o 10 %.
  • Sieťový subsystém
    • Balík obsahuje sériu BIG TCP záplat, ktoré vám umožňujú zvýšiť maximálnu veľkosť paketu TCP paketu na 4 GB pre optimalizáciu prevádzky vysokorýchlostných interných sietí dátových centier. Podobné zvýšenie veľkosti paketu s 16-bitovou veľkosťou poľa hlavičky sa dosiahne implementáciou „jumbo“ paketov, ktorých veľkosť v hlavičke IP je nastavená na 0 a skutočná veľkosť sa prenáša v samostatnom 32-bitovom v samostatnej pripojenej hlavičke. Pri testovaní výkonu nastavenie veľkosti paketu na 185 KB zvýšilo priepustnosť o 50 % a výrazne znížilo latenciu prenosu dát.
    • Pokračovali práce na integrácii nástrojov do sieťového zásobníka na sledovanie dôvodov zahadzovania paketov (kódy príčin). Kód príčiny sa odošle, keď sa uvoľní pamäť spojená s paketom a umožňuje situácie, ako je vyradenie paketu v dôsledku chýb hlavičky, detekcia spoofingu rp_filter, neplatný kontrolný súčet, nedostatok pamäte, spustené pravidlá IPSec XFRM, neplatné poradové číslo TCP atď.
    • Pridaná podpora pre spätné pripojenie MPTCP (MultiPath TCP) na použitie bežného TCP v situáciách, keď sa niektoré funkcie MPTCP nedajú použiť. MPTCP je rozšírenie protokolu TCP na organizovanie prevádzky TCP spojenia s doručovaním paketov súčasne niekoľkými cestami cez rôzne sieťové rozhrania spojené s rôznymi IP adresami. Pridané API na ovládanie tokov MPTCP z používateľského priestoru.
  • Оборудование
    • Pridaných viac ako 420 400 riadkov kódu súvisiaceho s ovládačom amdgpu, z ktorých asi 22.5 21 riadkov sú automaticky generované hlavičkové súbory pre údaje registra ASIC v ovládači GPU AMD a ďalších 4 21 riadkov poskytuje počiatočnú implementáciu podpory pre AMD SoC13. Celková veľkosť ovládača pre GPU AMD presiahla 3 milióny riadkov kódu. Okrem SoC7000 obsahuje ovládač AMD podporu pre SMU XNUMX.x (System Management Unit), aktualizovanú podporu pre USB-C a GPUVM a prípravy na podporu platforiem RDNAXNUMX (RX XNUMX) a CDNA (AMD Instinct) ďalších generácií. .
    • Ovládač i915 (Intel) má rozšírené možnosti týkajúce sa správy napájania. Pridané identifikátory pre GPU Intel DG2 (Arc Alchemist) používané na notebookoch, poskytnutá počiatočná podpora pre platformu Intel Raptor Lake-P (RPL-P), pridané informácie o grafických kartách Arctic Sound-M, implementované ABI pre výpočtové motory, pridané pre Karty DG2 podporujú formát Tile4, pre systémy založené na mikroarchitektúre Haswell je implementovaná podpora DisplayPort HDR.
    • Ovládač Nouveau prešiel na používanie obslužného programu drm_gem_plane_helper_prepare_fb; na niektoré štruktúry a premenné bolo aplikované statické prideľovanie pamäte. Pokiaľ ide o používanie modulov jadra open source spoločnosťou NVIDIA v Nouveau, práca sa zatiaľ obmedzuje na identifikáciu a odstránenie chýb. V budúcnosti sa plánuje použitie zverejneného firmvéru na zlepšenie výkonu ovládačov.
    • Pridaný ovládač pre radič NVMe používaný v počítačoch Apple založený na čipe M1.

Latinskoamerická nadácia pre slobodný softvér zároveň vytvorila verziu úplne slobodného jadra 5.19 - Linux-libre 5.19-gnu, zbavenú prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorého rozsah je limitované výrobcom. Nové vydanie vyčistí ovládače pre pureLiFi X/XL/XC a TI AMx3 Wkup-M3 IPC. Aktualizovaný kód čistenia blob v Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu ovládače a podsystémy. Bolo implementované spracovanie súborov so stromom zariadení Qualcomm AArch64. Pridaná podpora pre novú schému pomenovania komponentov Sound Open Firmware. Zastavil sa čistenie ovládača ATM Ambassador, ktorý bol odstránený z jadra. Správa čistenia blob v HDCP a Mellanox Core bola presunutá do samostatných značiek kconfig.

Zdroj: opennet.ru

Pridať komentár