Po dvou měsících vývoje představil Linus Torvalds vydání jádra Linux 6.0. Změna čísla verze byla provedena z estetických důvodů a jde o formální krok, který odstraňuje nepohodlí z nahromadění velkého počtu vydání v sérii (Linus si z této změny čísla větve ještě tropil žerty, že důvodem je, že mu docházejí prsty na rukou a nohou pro počítání verzí). Mezi nejvýraznější změny patří: podpora asynchronního vyrovnávacího zápisu v XFS, blokový ovladač ublk, optimalizace plánovače úloh, mechanismus ověřování správného fungování jádra a podpora blokového šifrování ARIA.
Hlavní novinky v jádře 6.0:
- Diskový subsystém, vstup/výstup a souborové systémy
- Do souborového systému XFS byla přidána podpora asynchronního vyrovnávacího zápisu s využitím mechanismu io_uring. Výkonové testy provedené pomocí nástroje fio (1 vlákno, velikost bloku 4 kB, 600 sekund, sekvenční zápis) ukazují nárůst počtu operací vstupu/výstupu za sekundu (IOPS) z 77k na 209k, rychlosti přenosu dat – z 314 MB/s na 854 MB/s, a pokles latencí z 9600 ns na 120 ns (80krát).
- Ve souborovém systému Btrfs byla implementována druhá verze protokolu pro příkaz „send“, která implementuje podporu dalších metadat, odesílání dat ve větších blocích (více než 64K) a přenos extents v komprimované podobě. Výrazně (až 3krát) byla zvýšena výkonnost operací přímého čtení (direct read) díky současnému čtení až 256 sektorů. Byly sníženy blokovací konflikty a zrychlena kontrola metadat skrze zkrácení rezervovaných metadat pro odložené prvky.
- Do souborového systému ext4 byly přidány nové ioctl operace EXT4_IOC_GETFSUUID a EXT4_IC_SETFSUUID pro extrakci nebo nastavení UUID identifikátoru, uloženého v superbloku.
- V souborovém systému F2FS byl navržen režim nízké spotřeby paměti, který optimalizuje provoz na zařízeních s malým objemem RAM a umožňuje snížit spotřebu paměti na úkor snížení výkonu.
- Byla přidána podpora ověřování disku NVMe.
- V serveru V NFSv4 byl implementován limit pro počet aktivních klientů, který se nastavuje na 1024 povolených klientů na každý gigabyte operační paměti v systému.
- V implementaci CIFS klienta byla zvýšena výkonnost v režimu vícenásobného přenosu.
- Do subsystému sledování událostí v FS fanotify byl přidán nový příznak FAN_MARK_IGNORE pro ignorování specifických událostí.
- Ve FS Overlayfs, při montáži nad FS s mapováním identifikátorů uživatelů, byla zajištěna správná podpora POSIX-kompatibilních seznamů řízení přístupu.
- Byl přidán blokový ovladač ublk, který přesunuje specifickou logiku na stranu pozadí procesu ve prostoru uživatele a využívá subsystém io_uring.
- Paměť a systémové služby
- Do subsystému DAMON (Data Access MONitor) byly přidány nové funkce, které umožňují nejen sledovat přístup procesů k operační paměti ze prostoru uživatele, ale také ovlivňovat řízení paměti. Konkrétně byl navržen nový modul „LRU_SORT“, který zajišťuje přeorganizaci seznamů LRU (Least Recently Used) pro zvýšení priority určitých stránek paměti.
- Byla implementována možnost vytváření nových paměťových regionů pomocí schopností sběrnice CXL (Compute Express Link), používané pro zajištění vysokorychlostní komunikace CPU s paměťovými zařízeními. CXL umožňuje připojování nových paměťových regionů poskytovaných externími paměťovými zařízeními a jejich použití jako dodatečných zdrojů fyzického adresního prostoru pro rozšíření systémové operační paměti (DDR) nebo trvalé paměti (PMEM).
- Byly vyřešeny problémy s výkonem systémů na procesorech AMD Zen, způsobené kódem přidaným před 20 lety pro obcházení hardwarového problému v některých čipsetech (byla přidána dodatečná instrukce WAIT, která zpomalovala procesor, aby čipset stihl přejít do stavu nečinnosti). Změna vedla k poklesu výkonu při zátěžích, kdy se často střídají stavy nečinnosti (idle) a aktivity (busy). Například po zrušení obcházejícího manévru se průměrné ukazatele testu tbench zvýšily z 32191 MB/s na 33805 MB/s.
- Z plánovače úloh byl odstraněn kód s heuristikou, který zajišťoval migraci procesů na méně vytížené CPU s ohledem na předpokládaný zisk v energetické spotřebě. Vývojáři dospěli k závěru, že heuristika nepřináší potřebný užitek a je jednodušší procesy přesouvat bez dalších hodnocení pokaždé, když takový přesun může potenciálně vést ke snížení spotřeby energie (například když cílové CPU je na úrovni s nižší spotřebou energie). Vypnutí heuristiky vedlo ke snížení energetické spotřeby při vykonávání intenzivních úloh, například v testu s dekódováním videa se spotřeba snížila o 5,6%.
- Byla provedena optimalizace rozdělení úloh mezi jádra CPU na velkých systémech, která umožnila zvýšení výkonu při některých typech zátěže.
- V rozhraní pro asynchronní vstup/výstup io_uring byl navržen nový příznak IORING_RECV_MULTISHOT, který umožňuje používat režim „multi-shot“ se systémovým voláním recv() pro provedení více operací čtení najednou z jednoho síťového socketu. V io_uring byla také implementována podpora síťového přenosu bez mezilehlého vyrovnávání (zero-copy).
- Byla implementována možnost převodu programů BPF, připojených k uprobe, do stavu spánku. Do BPF byl také přidán nový iterátor ksym pro práci s tabulkami symbolů jádra.
- Bylo odstraněno zastaralé rozhraní „efivars“ v sysfs, určené pro přístup k bootovacím proměnným UEFI (pro přístup k datům EFI se nyní všude používá virtuální FS efivarfs).
- V nástroji perf byly implementovány nové zprávy pro analýzu blokovacích konfliktů a času, který CPU stráví prováděním komponent jádra.
- Byla odstraněna konfigurace CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, která umožňovala kompilaci jádra v režimu optimalizace „-O3“. Bylo poznamenáno, že experimenty s optimalizačními režimy mohou být prováděny prostřednictvím předávání příznaků při kompilaci („make KCFLAGS=-O3“), a pro přidání nastavení do Kconfig je třeba zajistit opakovatelné profilování výkonnosti, které ukazuje, že provádění cyklů v režimu „-O3“ přináší výhodu ve srovnání s úrovní optimalizace „-O2“.
- Byl přidán debugfs interface pro získání informací o provozu jednotlivých „memory shrinker“ (ručně spouštěné procesy při nedostatku paměti, které zabalení datových struktur jádra s cílem snížit jejich spotřebu paměti).
- Pro architektury OpenRISC a LoongArch byla implementována podpora sběrnice PCI.
- Pro architekturu RISC-V byla zavedena rozšíření „Zicbom“ pro řízení zařízení s DMA, které není koherentní s cache.
- Virtualizace a bezpečnost
- Byl přidán mechanismus ověřování RV (Runtime Verification) pro kontrolu správnosti fungování v rámci vysoce spolehlivých systémů, zajišťující absenci selhání. Ověření se provádí za běhu připojením zpracovatelů k sledovacím bodům, které porovnávají skutečný průběh provádění s předem definovaným referenčním deterministickým modelem automatu určujícím očekávané chování systému. Ověření s modelem během běhu je prezentováno jako lehčí a jednodušší způsob potvrzení správnosti provádění v kritických systémech, který doplňuje klasické metody ověřování spolehlivosti. Mezi výhody RV patří možnost zajistit přísné ověření bez nutnosti samostatného provedení celého systému v modelovacím jazyce a flexibilní reakce na nečekané události.
- Byly integrovány komponenty jádra pro řízení enclaves na bázi technologie Intel SGX2 (Software Guard eXtensions), která umožňuje aplikacím vykonávat kód v izolovaných šifrovaných oblastech paměti, k nimž má zbytek systému omezený přístup. Technologie Intel SGX2 je podporována v čipech Intel Ice Lake a Gemini Lake a liší se od Intel SGX1 dodatečnými instrukcemi pro dynamické řízení paměti enclaves.
- Pro architekturu x86 byla implementována možnost předání semínka pro generátor pseudonáhodných čísel prostřednictvím nastavení bootloaderu.
- Do LSM modulu SafeSetID byla přidána možnost řízení změn prováděných prostřednictvím volání setgroups(). SafeSetID umožňuje systémovým službám bezpečně spravovat uživatele bez zvyšování oprávnění (CAP_SETUID) a bez získání práv uživatele root.
- Byla přidána podpora blokového šifru ARIA.
- V modulu pro správu bezpečnosti založeném na BPF byla zavedena možnost připojení zpracovatelů k jednotlivým procesům a skupinám procesů (cgroup).
- Byl přidán mechanismus s implementací watchdog pro detekci visících hostitelských systémů na základě monitorování aktivity vCPU.
- Síťová subsystém
- Do subsystému BPF byly přidány obslužné rutiny pro generování a ověřování SYN cookies. Také byla přidána sada funkcí (kfunc) pro přístup a změnu stavu spojení.
- Do bezdrátového zásobníku byla přidána podpora mechanismu MLO (Multi-Link Operation), definovaného ve specifikaci WiFi 7, který umožňuje zařízením současně přijímat a odesílat data pomocí různých frekvenčních pásem a kanálů, například pro současné nastavení několika komunikačních kanálů mezi přístupovým bodem a klientským zařízením.
- Byla zvýšena výkonnost implementace protokolu TLS zabudovaného v jádře.
- Byl přidán parametr příkazového řádku jádra „hostname=“, který umožňuje nastavit název hostitele v rané fázi spuštění, ještě předtím, než se spustí komponenty uživatelského prostoru.
- Hardware
- V ovladači i915 (Intel) byla zajištěna podpora diskrétních grafických karet Intel Arc (DG2/Alchemist) A750 a A770. Byla navržena počáteční implementace podpory GPU Intel Ponte Vecchio (Xe-HPC) a Meteor Lake. Pokračuje práce na podpoře platformy Intel Raptor Lake.
- V ovladači amdgpu pokračuje práce na zajištění podpory platforem AMD RDNA3 (RX 7000) a CDNA (Instinct).
- V ovladači Nouveau byl přepracován kód podpory displejových engineů GPU NVIDIA nv50.
- Byl přidán nový DRM ovladač logicvc pro obrazovky LogiCVC.
- V ovladači v3d (pro GPU Broadcom Video Core) byla implementována podpora desek Raspberry Pi 4.
- V ovladači msm byla přidána podpora GPU Qualcomm Adreno 619.
- V ovladači Panfrost byla přidána podpora GPU ARM Mali Valhall.
- Byla přidána počáteční podpora procesorů Qualcomm Snapdragon 8cx Gen3, používaných v noteboocích Lenovo ThinkPad X13s.
- Byly přidány zvukové ovladače pro platformy AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake a Mediatek MT8186.
- Byla přidána podpora akcelerátorů systémů strojového učení Intel Habana Gaudi 2.
- Byla přidána podpora ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.
Současně latinskoamerická Nadace pro svobodný software vytvořila verzi plně svobodného jádra 6.0 — Linux-libre 6.0-gnu, očištěného od prvků firmwaru a ovladačů, které obsahují nesvobodné komponenty nebo úseky kódu, jejichž použití je omezeno výrobcem. V nové verzi bylo zakázáno používání blobů v ovladači CS35L41 HD-audio a ovladači s rozhraním UCSI pro mikrokontroléry STM32G0. Bylo provedeno čištění dts-souborů pro čipy Qualcomm a MediaTek. Ovladač MediaTek MT76 měl přepracováno zakázání blobů. Kód čištění blobů v ovladačích a subsystémech AMDGPU, Adreno, Tegra VIC, Netronome NFP a Habanalabs Gaudi2 byl aktualizován. Čištění ovladače VXGE, odstraněného z jádra, bylo přerušeno.
Zdroj: opennet.ru
