Vydání jádra Linux 7.2

Po dvou měsících vývoje vydal Linus Torvalds jádro. Linux 7.2. Mezi nejvýznamnější změny patří: mechanismus streamování dat USB4STREAM, optimalizace výkonu btrfs, xfs a ext4, pokračující odstraňování kódu pro podporu CPU i486, možnost vytvářet vnořené plánovače SCHED_EXT, snížená spotřeba paměti ve swapovém subsystému, zrychlené nepojmenované kanály, podpora rozšíření Intel MBEC a AMD GMET v KVM, odstranění protokolu AppleTalk, počáteční podpora HDMI 2.1 FRL v ovladači AMDGPU.

Hlavní nové funkce v jádře 7.2 (1, 2, 3):

  • Diskový subsystém, I/O a souborové systémy
    • V mechanismu iomap bylo odstraněno dodatečné volání funkce memset pro již dokončené iterace ve funkci iomap_iter(), které při vysoké intenzitě I/O na rychlých NVMe discích zvyšovalo počet vstupně/výstupních operací za sekundu (IOPS) o 5 % v testech provedených s použitím souborových systémů ext4 a xfs.
    • XFS byl prohlášen za stabilní pro podporu zónovaných úložných zařízení (rozdělování skupin bloků nebo sektorů do zón, do kterých je povoleno pouze postupné přidávání dat, aktualizace celé skupiny bloků).
    • Btrfs nyní ve výchozím nastavení podporuje velká folia, což snižuje režijní náklady a zlepšuje výkon během intenzivního sekvenčního I/O operací. Byla přidána experimentální podpora pro obrovská folia (až 2 MB). Byl přidán nový příkaz ioctl, GET_CSUMS, pro načítání informací o kontrolním součtu v uživatelském prostoru, například pro utilitu mkfs a optimalizaci deduplikace. Výkon sekvenčního zápisu se zvýšil o 15 % a výkon přímého I/O operací o 59 %.
    • Mechanismus „rychlého potvrzení“ souborového systému Ext4 byl výrazně přepracován, aby se eliminovaly konflikty a zablokování. Byl přidán export statistik snapshotů inode prostřednictvím /proc/fs/ext4/*/fc_info. Výkon výpočtu haše adresářů byl optimalizován (téměř zdvojnásobení rychlosti pro názvy o délce 255 znaků, o 27 % pro názvy o délce 64 znaků a o 11 % pro názvy o délce 32 znaků).
    • F2FS nyní podporuje vracení chyb pomocí funkce fserror, což umožňuje monitorovat problémy se souborovým systémem z uživatelského prostoru. Čas strávený zpracováním přerušení byl zkrácen.
    • Do Device Mapperu (DM) byl přidán nový obslužný program dm-inlinecrypt pro transparentní šifrování a dešifrování blokových zařízení pomocí hardwarových zařízení s funkcí inline šifrování.
    • Byla poskytnuta dokumentace o přidávání nových souborových systémů do jádra.
    • V NFS byla výchozí velikost bloku zvýšena na 4 MB na systémech s alespoň 16 GB RAM (velikost bloku můžete ručně změnit pomocí /proc/fs/nfsd/max_block_size). Byla přidána podpora pro delegaci adresářů, která umožňuje provádět operace s daným adresářem po určitou dobu bez kontroly změn stavu. server.
    • SMB server nyní podporuje soubory uložené v komprimované podobě a také kompresi dat během přenosu po síti.
    • Nová implementace NTFS (ntfsplus) přidává podporu pro symbolické odkazy. Windows a je zajištěno správné zpracování mnoha typů poškození metadat.
    • Backend fscache pro ukládání dat EROFS (Enhanced Read-Only File System) do mezipaměti, který byl před dvěma lety zastaralý, byl odstraněn.
    • Ceph FS nyní podporuje ruční resetování klientských relací.
    • Souborový systém 9P byl optimalizován pro zlepšení výkonu v situacích, jako je sestavování projektů.
    • Do systémového volání file_getattr() byly přidány příznaky pro načítání informací o citlivosti na velká a malá písmena v souborovém systému. Příznak FS_XFLAG_CASEFOLD označuje, že kontrola názvů souborů se provádí bez rozlišování velkých a malých písmen, a příznak FS_XFLAG_CASENONPRESERVING označuje, že informace o velkých a malých písmenech se při vytváření nových názvů souborů nezachovávají. Tyto příznaky lze použít v NFS klientech, kteří nerozlišují velká a malá písmena.
    • Do systémového volání openat2() byl přidán příznak O_EMPTYPATH, který umožňuje předat cestu k prázdnému souboru. V tomto případě je cesta k otevíranému souboru určena na základě předaného deskriptoru souboru.
    • Do systémového volání openat2() byl přidán příznak OPENAT2_REGULAR, který umožňuje otevírání pouze běžných souborů (pokud se pokusíte o otevření speciálního souboru, jako je socket, roura nebo zařízení, bude vrácena chyba EFTYPE).
  • Paměťové a systémové služby
    • Pro streamování dat mezi počítači připojenými přes porty USB4 byl implementován mechanismus USB4STREAM. Bylo přidáno zařízení /dev/tbstreamX, které umožňuje číst a zapisovat data pomocí standardních funkcí read() a write(), podobně jako při čtení a zápisu souborů. Například na jednom hostiteli můžete odesílat informace pomocí příkazu „echo hello > /dev/tbstream0“ a na jiném je číst pomocí příkazu „cat /dev/tbstream0“. Mechanismus USB4STREAM lze kombinovat s možností navázat síťové připojení pomocí kabelu USB4 (thunderbolt_net) nebo jej použít samostatně pro přenos dat mezi aplikacemi, které nepodporují síťové sockety.
    • Byla zahrnuta druhá série změn, která odstraňuje podporu pro procesory i486. Bylo odstraněno více než 13 řádků kódu souvisejících s emulací jednotek s plovoucí desetinnou čárkou pro procesory bez FPU. Podpora pro procesory i486 bez hardwarových operací CX8 (porovnání a výměna 8 bajtů) a TSC (čítač cyklů CPU používaný v plánovači úloh) byla odstraněna, protože byl odstraněn i emulační kód pro tyto operace.
    • Podpora procesorů AMD Geode používaných v počítači OLPC XO-1 byla oznámena jako osiřelá.
    • Přidána podpora pro aktualizaci implementace Intel TDX (Trusted Domain Extensions), mechanismu používaného k šifrování paměti RAM hostovaného systému. TDX je implementován jako speciální softwarový běhový modul, který je během bootování přenášen z flash paměti do RAM systémem BIOS. Jádro nyní obsahuje možnosti pro správu tohoto modulu a jeho nahrazení novější verzí v běžícím systému bez nutnosti restartu.
    • Byl implementován nový plánovač alokace zdrojů GPU (Fair GPU scheduler). Slouží k určení pořadí, ve kterém se práce odeslaná procesy využívajícími GPU provádí na GPU. Namísto použití tradiční fronty FIDO pro požadavky GPU nový plánovač využívá mechanismy spravedlivé alokace zdrojů založené na plánovači úloh Completely Fair Scheduler (CFS), který používá plán spuštění s časem přechodu pro další proces. Nejvýraznější efekt nového plánovače je pozorován při paralelním provádění interaktivních úloh, které silně využívají GPU. Na poslední chvíli před vydáním jádra 7.2 byl plánovač Fair GPU deaktivován a starý plánovač FIFO byl vrácen zpět z důvodu potřeby ladění regrese, která způsobovala snížení výkonu a 100% využití GPU při spouštění určitých her v Protonu.
    • Změny v subsystému eBPF: Přidána možnost připojit jeden BPF program k více sledovacím bodům. BPF programy připojené k sledovacím bodům nyní mohou přistupovat k paměti komponent uživatelského prostoru se správným zpracováním nepřidělených paměťových stránek (chyby stránek). Systémové volání bpf() nyní podporuje standardní atributy (log_buf, log_size, log_level a log_true_size), což umožňuje jednotný přenos metadat napříč všemi příkazy BPF, nejen BPF_PROG_LOAD, BPF_BTF_LOAD a BPF_MAP_CREATE. Bylo odstraněno omezení předávání maximálně 5 parametrů funkcím BPF. Přidána možnost bezpečného přístupu ke sdílené paměti bpf_arena bez obav z přístupu k nepřiděleným paměťovým stránkám (chyby stránek). Byla implementována nová verze struktury hash mapy BPF, která umožňuje dynamickou změnu velikosti.
    • Generování výstupu "/proc/interrupts" se statistikami přerušení bylo optimalizováno, struktury pro ukládání čítačů přerušení byly modernizovány a bylo přidáno ukládání do mezipaměti.
    • Generování souboru „/proc/filesystems“ používaného v libselinuxu bylo zrychleno.
    • Plánovač úloh nyní podporuje vyvažování zátěže mezi jádry CPU s ohledem na stav interní mezipaměti procesoru. Plánovač se nyní pokouší seskupit procesy pomocí sdílených zdrojů, jako jsou vlákna v rámci jednoho procesu, aby sdílely stejnou vysokoúrovňovou mezipaměť, což zlepšuje efektivitu přístupu k datům zvýšením pravděpodobnosti, že požadovaná data budou v mezipaměti nalezena.
    • Mechanismus SCHED_EXT, který umožňuje použití BPF k vytváření plánovačů úloh CPU, nadále implementuje možnost vytvářet vnořené plánovače (podplánovače), které umožňují každé kontrolní skupině používat svůj vlastní plánovač úloh.
    • Pokračování migrace změn z verze Rust for branchLinux, související s použitím Rustu jako druhého jazyka pro vývoj ovladačů a modulů jádra (podpora Rustu není ve výchozím nastavení povolena a nezahrnuje Rust jako povinnou závislost při sestavení jádra). Podpora Rustu v jádře byla implementována pro architekturu s390. Je zahrnut balíček „zerocopy“, který poskytuje rychlé paměťové primitiva pro kód v „nebezpečném“ režimu.
    • Minimální verze sady nástrojů LLVM potřebná k sestavení jádra byla zvýšena na 17.0.1.
    • V minimalistické knihovně jazyka C nolibc, dodávané se zdrojovým kódem jádra Linux a poskytuje rámec pro základní systémová volání s podporou architektur OpenRISC a 32bitové PA-RISC.
    • Subsystém swap byl optimalizován pro zlepšení výkonu a snížení spotřeby paměti v rámci samotného subsystému eliminací režie při ukládání statických metadat a sjednocením anonymní a sdílené paměti při použití svazků. Snížení paměti je poměrně významné; například připojení 1TB swapovacího oddílu snižuje spotřebu paměti přibližně o 512 MB.
    • Byl vylepšen výkon mechanismu vyklizení paměti, který maže nebo přesouvá paměť do odkládacího prostoru, aby se uvolnila paměť, když je systém pod zátěží. Při určitých pracovních zátěžích, například při testování MongoDB pomocí YCSB (Yahoo! Cloud Serving Benchmark), bylo pozorováno zvýšení výkonu až o 30 %.
    • Do systému sestavení byl přidán příkaz „make sbom“, který generuje seznamy SBOM (Software Bill Of Materials), které odrážejí komponenty, knihovny a závislosti použité v aktuálním sestavení jádra, a také informace o jejich licencích získané ze záhlaví SPDX v souborech kódu.
    • Implementace nepojmenovaných kanálů byla optimalizována pro práci se zámky (operace alokace paměti jsou přesunuty mimo rozsah zámku), což zvýšilo propustnost nepojmenovaných kanálů o 21–48 % a snížilo latenci o 17–33 %.
  • Virtualizace a bezpečnost
    • Alokátor slabů nyní podporuje použití alokačních tokenů, implementovaných v kompilátoru Clang 22. Tokeny umožňují jedinečné identifikátory pro operace alokace paměti a oddělenou alokaci různých typů objektů, což komplikuje zneužívání zranitelností typu přetečení vyrovnávací paměti (díky oddělení nelze přetečení vyrovnávací paměti v jednom typu objektu snadno zneužít k poškození jiných typů objektů).
    • Mechanismus AF_ALG, zneužívaný ve zranitelnosti Copy Fail k úpravě dat v mezipaměti stránek, byl zastaralý a jeho odstranění je plánováno v budoucí verzi. AF_ALG umožňuje hardwarové akcelerátory pro kryptografické výpočty v Crypto API jádra, ale používá se v poměrně specifických situacích. V jádře 7.2 byla z AF_ALG odstraněna podpora pro asynchronní I/O, starší ovladače a mechanismus nulového kopírování v implementacích skcipher a aead. Zachovány jsou pouze softwarové implementace kryptografických algoritmů a podpora pro hardwarové kryptografické akcelerátory v Crypto API jádra byla odstraněna, protože AF_ALG výrazně rozšiřuje oblast útoku, ale neposkytuje žádné výhody ve výkonu ve srovnání s implementacemi kryptografie v uživatelském prostoru. AF_ALG byl použit v sadě nástrojů Cryptsetup, ale jeho podpora byla odstraněna v nedávné verzi 2.8.7.
    • Mechanismus IMA (Integrity Measurement Architecture), který umožňuje externí službě ověřovat stav subsystémů jádra a zajišťovat jejich autenticitu, byl doplněn o podporu exportu interních tabulek s výsledky měření do uživatelského prostoru a jejich mazání z vyrovnávacích pamětí jádra pro úsporu paměti.
    • V modulu Landlock, který poskytuje programům bez privilegií prostředky k omezení používání objektů jádra Linux (hierarchie souborů, síťové sockety, ioctl atd.), byla přidána podpora pro řízení přístupu k UDP socketům a také možnost selektivně zakázat výstup informací o zámku objektů do protokolu, aby se zabránilo jeho zahlcení irelevantními informacemi.
    • Jádro již nepoužívá funkci strncpy(), která kopíruje zadaný počet bajtů ze vstupního řetězce. Používání strncpy() s sebou neslo riziko chyb způsobených chybějícím nulovým znakem na konci řetězce nebo dodatečným doplněním nulami. Místo strncpy() se doporučuje používat funkce strscpy() a strscpy_pad() pro kopírování řetězců zakončených nulou a také strtomem_pad(), memcpy_and_pad() a memcpy() pro kopírování řetězců o známé pevné délce. Práce na ukončení používání strncpy() v jádře začala v roce 2020 a vyžadovala 362 commitů od 70 vývojářů.
    • V hypervisoru KVM Přidána podpora pro rozšíření Intel MBEC (Mode-Based Execution Control) a AMD GMET (Guest-Mode Execution Trap), která umožňují oddělenou správu práv ke spuštění v jádru a uživatelském prostoru v hostovaných systémech v tabulkách překladu paměti. Dříve rozšíření virtualizace hardwaru Intel a AMD umožňovala označovat stránky paměti jako spustitelné pouze jedním bitem se softwarovým oddělením práv jádra a uživatelského prostoru na úrovni hypervizoru. Použití MBEC a GMET eliminuje kontroly oprávnění na straně hypervizoru a výrazně snižuje náročné přenosy řízení z hostovaného systému do hypervizoru VMexit.
  • Síťový subsystém
    • Rozšíření TCP-AO (TCP Authentication Option, RFC 5925) bylo migrováno do nové kryptografické knihovny libcrypto, což zjednodušuje kód a zlepšuje jeho výkon. TCP-AO umožňuje ověřování hlaviček TCP pomocí kódů MAC (Message Authentication Code) s využitím modernějších algoritmů HMAC-SHA-1-96 a AES-128-CMAC-96 a nahrazuje tak dříve dostupnou možnost TCP-MD5, která se spoléhala na zastaralý algoritmus MD5.
    • Počet podporovaných dílčích streamů pro připojení Multipath TCP (MPTCP) byl zvýšen z 8 na 64.
    • Pokračovaly práce na omezení používání globálního zámku rtnl_lock v síťovém zásobníku jádra.
    • Jádro odstranilo implementaci protokolového stacku AppleTalk, který se v počítačích Apple používal od roku 1985 a v 1990. letech byl nahrazen... TCP/IPKromě toho byly odstraněny komponenty technologie přenosu dat ATM nesouvisející s PPPoATM, stejně jako síťová rozhraní ARCnet založená na sběrnicích ISA a PCMCIA, adaptéry Bluetooth s rozhraním PCMCIA, akcelerátory TLS Chelsea, kód pro integraci TLS se sockmap a podpora frekvenčních pásem 5/10 MHz v bezdrátovém stacku cfg80211/mac80211. Vzhledem k nevyřešeným problémům s blokováním a nedostatku správců byla odstraněna specifická implementace akcelerace zpracování TLS založená na TCP Offload Engine (běžnější implementace TLS offloadu je zachována). Kód kompatibility s 32bitovými x_tables na 64bitových systémech byl zakázán a je plánováno jeho odstranění.
    • Ovladač pppoe nyní podporuje mechanismy GRO (Generic Receive Offload) a GSO (Generic Segmentation Offload) pro hardwarovou akceleraci opětovného sestavování a segmentace paketů. Použití GRO a GSO výrazně zvyšuje propustnost příchozího provozu. Například na zařízeních MediaTek MT7621 konfigurovaných s překladačem adres se maximální propustnost zvýšila ze 130 Mbit/s na 630 Mbit/s.
  • Оборудование
    • Ovladač AMDGPU nyní obsahuje počáteční podporu pro technologii HDMI 2.1 FRL (Fixed Rate Link), která umožňuje přenos nekomprimovaného videa v rozlišení 4K/120Hz a 8K/60Hz. Podpora HDMI 2.1 byla dříve v ovladačích s otevřeným zdrojovým kódem nedosažitelná kvůli licenčním požadavkům HDMI Forum, ale společnost AMD nyní zajistila podobnou implementaci.
    • Ovladač i915 nyní podporuje nastavení barvy pozadí pro řadič displeje. Byl implementován parametr pin_params.needs_low_address.
    • Pokračovaly práce na ovladači Xe DRM (Direct Rendering Manager) pro GPU založené na architektuře Intel Xe, která se používá v grafických kartách řady Intel Arc a integrovaných grafických kartách, počínaje procesory Tiger Lake. Byla přidána počáteční podpora pro platformu CRI (Crescent Island). Pro platformy dGPU Xe3p byl implementován systémový řadič.
    • Ovladač Nouveau řeší problémy s grafickou kartou NVIDIA GA100.
    • Ovladač v3d byl aktualizován a nyní umožňuje spravovat spotřebu energie grafického procesoru v3D na deskách Raspberry Pi.
    • Pokračovali jsme v integraci komponent ovladačů Nova pro grafické karty NVIDIA vybavené firmwarem GSP používaným od řady NVIDIA GeForce RTX 2000 založené na mikroarchitektuře Turing. Ovladač je napsán v Rustu. Byla přidána podpora pro grafické karty NVIDIA řady GA100, Hopper a Blackwell.
    • Přidána podpora pro desky ARM, SoC a zařízení: 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á nadace pro svobodný software vytvořila verzi zcela svobodného jádra 7.2 - Linux-libre 7.2-gnu, očištěno od prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo sekce kódu s omezeným rozsahem výrobce. Verze 7.2 obsahuje čištění blobů pro nové ovladače rt722-sdca a tac5xx2. Byl aktualizován čisticí kód pro ovladače amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 a mt792x. Byla upravena rozhraní pro načítání firmwaru. Byly vyčištěny názvy blobů v souborech devicetree (dts) pro čipy ARM.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster