Vydanie jadra Linux 7.2

Po dvoch mesiacoch vývoja vydal Linus Torvalds jadro. Linux 7.2. Medzi najvýznamnejšie zmeny patria: mechanizmus streamovania dát USB4STREAM, optimalizácia výkonu btrfs, xfs a ext4, pokračujúce odstraňovanie kódu pre podporu CPU i486, možnosť vytvárať vnorené plánovače SCHED_EXT, znížená spotreba pamäte v subsystéme swap, zrýchlené nepomenované pipe, podpora rozšírení Intel MBEC a AMD GMET v KVM, odstránenie protokolu AppleTalk, počiatočná podpora HDMI 2.1 FRL v ovládači AMDGPU.

Hlavné nové funkcie v jadre 7.2 (1, 2, 3):

  • Diskový subsystém, I/O a súborové systémy
    • V mechanizme iomap bolo odstránené dodatočné volanie funkcie memset pre už dokončené iterácie vo funkcii iomap_iter(), ktoré pri vysokej intenzite I/O na rýchlych NVMe diskoch zvýšilo počet vstupno-výstupných operácií za sekundu (IOPS) o 5 % v testoch vykonaných s použitím súborových systémov ext4 a xfs.
    • XFS bol vyhlásený za stabilný pre podporu zónových úložných zariadení (rozdelenie skupín blokov alebo sektorov do zón, do ktorých je povolené iba sekvenčné pridávanie údajov, aktualizácia celej skupiny blokov).
    • Btrfs teraz štandardne podporuje veľké foliá, čím sa znižuje réžia a zlepšuje výkon počas intenzívneho sekvenčného I/O. Bola pridaná experimentálna podpora pre obrovské foliá (až do 2 MB). Bol pridaný nový príkaz ioctl, GET_CSUMS, na načítanie informácií o kontrolnom súčte v používateľskom priestore, napríklad pre utilitu mkfs a optimalizáciu deduplikácie. Výkon sekvenčného zápisu sa zvýšil o 15 % a výkon priameho I/O o 59 %.
    • Mechanizmus „rýchleho potvrdenia“ súborového systému Ext4 bol výrazne prepracovaný, aby sa eliminovali konflikty a zablokovania. Pridaný bol export štatistík snímok inode prostredníctvom /proc/fs/ext4/*/fc_info. Výkon výpočtu hash adresárov bol optimalizovaný (takmer zdvojnásobenie rýchlosti pre 255-znakové názvy, 27 % pre 64-znakové názvy a 11 % pre 32-znakové názvy).
    • F2FS teraz podporuje vrátenie chyby fserror, čo umožňuje monitorovať problémy so súborovým systémom z používateľského priestoru. Čas strávený spracovaním prerušení sa skrátil.
    • Do nástroja Device Mapper (DM) bol pridaný nový obslužný program dm-inlinecrypt pre transparentné šifrovanie a dešifrovanie blokových zariadení pomocou hardvérových zariadení s funkciou inline šifrovania.
    • Bola poskytnutá dokumentácia o pridávaní nových súborových systémov do jadra.
    • V NFS bola predvolená veľkosť bloku zväčšená na 4 MB na systémoch s aspoň 16 GB RAM (na manuálnu zmenu veľkosti bloku môžete použiť /proc/fs/nfsd/max_block_size). Bola pridaná podpora pre delegovanie adresárov, ktorá umožňuje vykonávať operácie s daným adresárom po určitý čas bez kontroly zmien stavu. server.
    • SMB server teraz podporuje súbory uložené v komprimovanej forme, ako aj kompresiu dát počas prenosu cez sieť.
    • Nová implementácia NTFS (ntfsplus) pridáva podporu pre symbolické odkazy. Windows a je zabezpečené správne spracovanie mnohých typov poškodenia metadát.
    • Backend fscache na ukladanie údajov EROFS (Enhanced Read-Only File System) do vyrovnávacej pamäte, ktorý bol pred dvoma rokmi zastaraný, bol odstránený.
    • Ceph FS teraz podporuje manuálne resetovanie klientskych relácií.
    • Súborový systém 9P bol optimalizovaný na zlepšenie výkonu v scenároch, ako sú napríklad zostavovania projektov.
    • Do systémového volania file_getattr() boli pridané príznaky na získanie informácií o citlivosti na malé a veľké písmená v súborovom systéme. Príznak FS_XFLAG_CASEFOLD označuje, že kontrola názvov súborov sa vykonáva bez rozlišovania na malé a veľké písmená a príznak FS_XFLAG_CASENONPRESERVING označuje, že informácie o malých a veľkých písmenách sa pri vytváraní nových názvov súborov nezachovávajú. Tieto príznaky je možné použiť v klientoch NFS, ktorí nerozlišujú na veľké a malé písmená.
    • Do systémového volania openat2() bol pridaný príznak O_EMPTYPATH, ktorý umožňuje odovzdať cestu k prázdnemu súboru. V tomto prípade sa cesta k otváranému súboru určí na základe odovzdaného deskriptora súboru.
    • Do systémového volania openat2() bol pridaný príznak OPENAT2_REGULAR, ktorý umožňuje otváranie iba bežných súborov (ak sa pokúša otvoriť špeciálny súbor, ako napríklad socket, pipe alebo zariadenie, vráti sa chyba EFTYPE).
  • Pamäťové a systémové služby
    • Na streamovanie dát medzi počítačmi pripojenými cez porty USB4 bol implementovaný mechanizmus USB4STREAM. Bolo pridané zariadenie /dev/tbstreamX, ktoré umožňuje čítať a zapisovať dáta pomocou štandardných funkcií read() a write(), podobne ako pri čítaní a zápise súborov. Napríklad na jednom hostiteľovi môžete odosielať informácie pomocou príkazu „echo hello > /dev/tbstream0“ a na inom ich čítať pomocou príkazu „cat /dev/tbstream0“. Mechanizmus USB4STREAM je možné kombinovať s možnosťou nadviazania sieťového pripojenia pomocou kábla USB4 (thunderbolt_net) alebo ho použiť samostatne na prenos dát medzi aplikáciami, ktoré nepodporujú sieťové sockety.
    • Bola zahrnutá druhá séria zmien na odstránenie podpory pre procesory i486. Bolo odstránených viac ako 13 riadkov kódu súvisiaceho s emuláciou jednotiek s pohyblivou rádovou čiarkou pre procesory bez FPU. Podpora pre procesory i486 bez hardvérových operácií CX8 (porovnanie a výmena 8 bajtov) a TSC (počítadlo cyklov CPU používané v plánovači úloh) bola odstránená, pretože bol odstránený aj emulačný kód pre tieto operácie.
    • Podpora procesorov AMD Geode používaných v počítači OLPC XO-1 bola ohlásená ako osirelá.
    • Pridaná podpora pre aktualizáciu implementácie TDX (Trusted Domain Extensions) od spoločnosti Intel, mechanizmu používaného na šifrovanie pamäte RAM hosťujúceho systému. TDX je implementovaný ako špeciálny softvérový runtime modul, ktorý BIOS počas bootovania prenáša z flash pamäte do pamäte RAM. Jadro teraz obsahuje možnosti správy tohto modulu a jeho nahradenia novšou verziou v spustenom systéme bez nutnosti reštartu.
    • Bol implementovaný nový plánovač alokácie zdrojov GPU (Fair GPU scheduler). Používa sa na určenie poradia, v akom sa práca odoslaná procesmi využívajúcimi GPU vykonáva na GPU. Namiesto použitia tradičného frontu FIDO pre požiadavky GPU nový plánovač využíva mechanizmy spravodlivej alokácie zdrojov založené na plánovači úloh Completely Fair Scheduler (CFS), ktorý používa plán spustenia s prechodným časom pre ďalší proces. Najvýraznejší účinok nového plánovača sa pozoruje počas paralelného vykonávania interaktívnych úloh, ktoré výrazne využívajú GPU. Na poslednú chvíľu pred vydaním jadra 7.2 bol plánovač Fair GPU deaktivovaný a starý plánovač FIFO bol vrátený do pôvodného stavu z dôvodu potreby ladenia regresie, ktorá spôsobovala zníženie výkonu a 100% využitie GPU pri spúšťaní určitých hier v Protone.
    • Zmeny v subsystéme eBPF: Pridaná možnosť pripojiť jeden program BPF k viacerým sledovacím bodom. Programy BPF pripojené k sledovacím bodom teraz môžu pristupovať k pamäti komponentov používateľského priestoru so správnym spracovaním nepridelených pamäťových stránok (chyby stránok). Systémové volanie bpf() teraz podporuje štandardné atribúty (log_buf, log_size, log_level a log_true_size), čo umožňuje jednotný prenos metadát naprieč všetkými príkazmi BPF, nielen BPF_PROG_LOAD, BPF_BTF_LOAD a BPF_MAP_CREATE. Obmedzenie na odovzdávanie maximálne 5 parametrov funkciám BPF bolo odstránené. Pridaná možnosť bezpečného prístupu k zdieľanej pamäti bpf_arena bez obáv z prístupu k neprideleným pamäťovým stránkam (chyby stránok). Bola implementovaná nová verzia štruktúry hash mapy BPF, ktorá umožňuje dynamickú zmenu veľkosti.
    • Generovanie výstupu „/proc/interrupts“ so štatistikami prerušení bolo optimalizované, štruktúry na ukladanie počítadiel prerušení boli modernizované a bolo pridané ukladanie do vyrovnávacej pamäte.
    • Generovanie súboru „/proc/filesystems“ používaného v libselinuxe bolo zrýchlené.
    • Plánovač úloh teraz podporuje vyvažovanie záťaže medzi jadrami CPU, pričom zohľadňuje stav internej vyrovnávacej pamäte procesora. Plánovač sa teraz pokúša zoskupiť procesy pomocou zdieľaných zdrojov, ako sú napríklad vlákna v rámci jedného procesu, aby zdieľali rovnakú vyrovnávaciu pamäť na vysokej úrovni, čím sa zlepšuje efektivita prístupu k údajom zvýšením pravdepodobnosti, že požadované údaje sa nájdu vo vyrovnávacej pamäti.
    • Mechanizmus SCHED_EXT, ktorý umožňuje použitie BPF na vytváranie plánovačov CPU, naďalej implementuje možnosť vytvárať vnorené plánovače (podplánovače), ktoré umožňujú každej kontrolnej skupine používať vlastný plánovač úloh.
    • Pokračovanie migrácie zmien z verzie Rust pre branchLinux, súvisiace s používaním Rustu ako druhého jazyka na vývoj ovládačov a modulov jadra (podpora Rustu nie je štandardne povolená a nezahŕňa Rust ako povinnú závislosť pri zostavovaní jadra). Podpora Rustu v jadre bola implementovaná pre architektúru s390. Súčasťou je balík „zerocopy“, ktorý poskytuje rýchle pamäťové primitívy pre kód v „nebezpečnom“ režime.
    • Minimálna verzia sady nástrojov LLVM potrebná na zostavenie jadra bola zvýšená na 17.0.1.
    • V minimalistickej knižnici jazyka C nolibc, dodávanej so zdrojovým kódom jadra Linux a poskytuje rámec pre základné systémové volania, podporujúci architektúry OpenRISC a 32-bitové PA-RISC.
    • Subsystém swap bol optimalizovaný na zlepšenie výkonu a zníženie spotreby pamäte v rámci samotného subsystému elimináciou réžie pri ukladaní statických metadát a zjednotením anonymnej a zdieľanej pamäte pri používaní zväzkov. Zníženie pamäte je pomerne významné; napríklad pripojenie 1 TB swapovacieho oddielu znižuje spotrebu pamäte približne o 512 MB.
    • Výkon mechanizmu vyradenia pamäte, ktorý vymaže alebo presunie pamäť do odkladacieho priestoru, aby sa uvoľnila pamäť, keď je systém pod záťažou, bol vylepšený. Pri určitých pracovných zaťaženiach, ako napríklad pri testovaní MongoDB pomocou YCSB (Yahoo! Cloud Serving Benchmark), sa pozorovalo zvýšenie výkonu až o 30 %.
    • Do systému zostavovania bol pridaný príkaz „make sbom“, ktorý generuje zoznamy SBOM (Software Bill Of Materials), ktoré odrážajú komponenty, knižnice a závislosti použité v aktuálnej zostave jadra, ako aj informácie o ich licenciách získané z hlavičiek SPDX v súboroch s kódom.
    • Implementácia nepomenovaných rúrok bola optimalizovaná pre spracovanie zámkov (operácie alokácie pamäte sú presunuté mimo rozsahu zámku), čo zvýšilo priepustnosť nepomenovaných rúrok o 21 – 48 % a znížilo latenciu o 17 – 33 %.
  • Virtualizácia a bezpečnosť
    • Alokátor slabov teraz podporuje použitie alokačných tokenov, implementovaných v kompilátore Clang 22. Tokeny umožňujú jedinečné identifikátory pre operácie alokácie pamäte a samostatnú alokáciu rôznych typov objektov, čo komplikuje zneužívanie zraniteľností pretečenia vyrovnávacej pamäte (vďaka oddeleniu nie je pretečenie vyrovnávacej pamäte v jednom type objektu ľahko zneužiteľné na poškodenie iných typov objektov).
    • Mechanizmus AF_ALG, zneužívaný v zraniteľnosti Copy Fail na úpravu údajov vo vyrovnávacej pamäti stránok, bol zastaraný a jeho odstránenie je naplánované na budúce vydanie. AF_ALG umožňuje hardvérové ​​akcelerátory pre kryptografické výpočty v rozhraní Crypto API jadra, ale používa sa v pomerne špecifických situáciách. V jadre 7.2 bola z AF_ALG odstránená podpora pre asynchrónny vstup/výstup, staršie ovládače a mechanizmus nulového kopírovania v implementáciách skcipher a aead. Zachované sú iba softvérové ​​implementácie kryptografických algoritmov a podpora pre hardvérové ​​kryptografické akcelerátory v rozhraní Crypto API jadra bola odstránená, pretože AF_ALG výrazne rozširuje povrch útoku, ale neposkytuje žiadny výkonnostný benefit v porovnaní s implementáciami kryptografie v používateľskom priestore. AF_ALG sa používal v sade nástrojov Cryptsetup, ale jeho podpora bola odstránená v nedávnom vydaní 2.8.7.
    • Mechanizmus IMA (Integrity Measurement Architecture), ktorý umožňuje externej službe overiť stav podsystémov jadra a zaistiť ich autenticitu, bol doplnený o podporu exportu interných tabuliek s výsledkami meraní do používateľského priestoru a ich mazania z vyrovnávacích pamätí jadra za účelom úspory pamäte.
    • V module Landlock, ktorý poskytuje neprivilegovaným programom prostriedky na obmedzenie používania objektov jadra Linux (hierarchie súborov, sieťové sockety, ioctl atď.), bola pridaná podpora pre riadenie prístupu k UDP socketom, ako aj možnosť selektívneho zakázania výstupu informácií o zámkoch objektov do protokolu, aby sa zabránilo zahlteniu protokolu irelevantnými informáciami.
    • Jadro bolo zastarané pre používanie funkcie strncpy(), ktorá kopíruje zadaný počet bajtov zo vstupného reťazca. Používanie strncpy() vytváralo riziko chýb spôsobených chýbajúcim nulovým znakom na konci reťazca alebo dodatočným doplnením nulami. Namiesto strncpy() sa odporúča používať funkcie strscpy() a strscpy_pad() na kopírovanie reťazcov ukončených nulou, ako aj strtomem_pad(), memcpy_and_pad() a memcpy() na kopírovanie reťazcov so známou pevnou veľkosťou. Práce na zastaraní používania strncpy() v jadre sa začali v roku 2020 a vyžadovali si 362 commitov od 70 vývojárov.
    • V hypervízore KVM Pridaná podpora pre rozšírenia Intel MBEC (Mode-Based Execution Control) a AMD GMET (Guest-Mode Execution Trap), ktoré umožňujú samostatné spracovanie práv na vykonávanie v jadre a používateľskom priestore v hosťujúcich systémoch v tabuľkách prekladu pamäte. Predtým rozšírenia virtualizácie hardvéru od spoločností Intel a AMD umožňovali označiť pamäťové stránky ako spustiteľné iba jedným bitom so softvérovým oddelením práv jadra a používateľského priestoru na úrovni hypervízora. Použitie MBEC a GMET eliminuje kontroly oprávnení na strane hypervízora a výrazne znižuje náročné prenosy riadenia z hosťujúceho systému do hypervízora VMexit.
  • Sieťový subsystém
    • Rozšírenie TCP-AO (TCP Authentication Option, RFC 5925) bolo migrované do novej kryptografickej knižnice libcrypto, čím sa zjednodušil kód a zlepšil jeho výkon. TCP-AO umožňuje overovanie hlavičiek TCP pomocou kódov MAC (Message Authentication Code) s využitím modernejších algoritmov HMAC-SHA-1-96 a AES-128-CMAC-96, čím nahrádza predtým dostupnú možnosť TCP-MD5, ktorá sa spoliehala na zastaraný algoritmus MD5.
    • Počet podporovaných podstreamov pre pripojenia Multipath TCP (MPTCP) sa zvýšil z 8 na 64.
    • Pokračovala práca na znížení používania globálneho zámku rtnl_lock v sieťovom zásobníku jadra.
    • Jadro odstránilo implementáciu protokolového zásobníka AppleTalk, ktorý sa v počítačoch Apple používal od roku 1985 a v 1990. rokoch bol nahradený... TCP/IPOkrem toho boli odstránené komponenty technológie prenosu dát ATM nesúvisiace s PPPoATM, ako aj sieťové rozhrania ARCnet založené na zberniciach ISA a PCMCIA, adaptéry Bluetooth s rozhraním PCMCIA, akcelerátory TLS Chelsea, kód na integráciu TLS so sockmap a podpora frekvenčných pásiem 5/10 MHz v bezdrôtovom zásobníku cfg80211/mac80211. Kvôli nevyriešeným problémom s blokovaním a nedostatku správcov bola odstránená špecifická implementácia zrýchlenia spracovania TLS založená na TCP Offload Engine (bežnejšia implementácia TLS offloadu zostáva zachovaná). Kód kompatibility s 32-bitovými x_tables na 64-bitových systémoch bol zakázaný a jeho odstránenie je naplánované.
    • Ovládač pppoe teraz podporuje mechanizmy GRO (Generic Receive Offload) a GSO (Generic Segmentation Offload) pre hardvérovú akceleráciu opätovného zostavovania a segmentácie paketov. Používanie GRO a GSO výrazne zvyšuje priepustnosť prichádzajúcej prevádzky. Napríklad na zariadeniach MediaTek MT7621 nakonfigurovaných s prekladačom adries sa maximálna priepustnosť zvýšila zo 130 Mbit/s na 630 Mbit/s.
  • Оборудование
    • Ovládač AMDGPU teraz obsahuje počiatočnú podporu pre technológiu HDMI 2.1 FRL (Fixed Rate Link), ktorá umožňuje prenos nekomprimovaného videa s rozlíšením 4K/120Hz a 8K/60Hz. Podpora HDMI 2.1 bola predtým v ovládačoch s otvoreným zdrojovým kódom nedostatočná kvôli licenčným požiadavkám HDMI Forum, ale spoločnosť AMD teraz zabezpečila podobnú implementáciu.
    • Ovládač i915 teraz podporuje nastavenie farby pozadia pre ovládač displeja. Bol implementovaný parameter pin_params.needs_low_address.
    • Pokračovala práca na ovládači Xe DRM (Direct Rendering Manager) pre GPU založené na architektúre Intel Xe, ktorá sa používa v grafických kartách radu Intel Arc a integrovaných grafických kartách, počnúc procesormi Tiger Lake. Bola pridaná počiatočná podpora pre platformu CRI (Crescent Island). Pre platformy dGPU Xe3p bol implementovaný systémový ovládač.
    • Ovládač Nouveau rieši problémy s grafickou kartou NVIDIA GA100.
    • Ovládač v3d bol aktualizovaný a teraz obsahuje možnosť spravovať spotrebu energie grafického procesora v3D na doskách Raspberry Pi.
    • Pokračovali sme v integrácii komponentov ovládača Nova pre grafické karty NVIDIA vybavené firmvérom GSP, ktorý sa používa od série NVIDIA GeForce RTX 2000 založenej na mikroarchitektúre Turing. Ovládač je napísaný v jazyku Rust. Bola pridaná podpora pre grafické karty NVIDIA série GA100, Hopper a Blackwell.
    • Pridaná podpora pre dosky ARM, SoC a zariadenia: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.

Zároveň Latinskoamerická nadácia pre slobodný softvér vytvorila verziu úplne slobodného jadra 7.2 - Linux-libre 7.2-gnu, vyčistené prvky firmvéru a ovládačov obsahujúce nevoľné komponenty alebo sekcie kódu s obmedzeným rozsahom výrobcom. Verzia 7.2 obsahuje čistenie blobov pre nové ovládače rt722-sdca a tac5xx2. Čistiaci kód pre ovládače amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 a mt792x bol aktualizovaný. Rozhrania pre načítavanie firmvéru boli upravené. Názvy blobov v súboroch devicetree (dts) pre čipy ARM boli vyčistené.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster