Vydání jádra Linux 6.0

Po dvou měsících vývoje představil Linus Torvalds vydání linuxového jádra 6.0. Výrazná změna čísla verze je z estetických důvodů a jde o formální krok, který má zmírnit nepohodlí při hromadění velkého množství problémů v sérii (Linus vtipkoval, že důvodem změny čísla větve bylo spíše to, že mu docházely prsty a prsty pro počítání čísel verzí) . Mezi nejpozoruhodnější změny patří podpora asynchronního vyrovnávací paměti v XFS, ovladač bloku ublk, optimalizace plánovače úloh, mechanismus pro ověřování správné činnosti jádra, podpora blokové šifry ARIA.

Klíčové inovace v jádře 6.0:

  • Diskový subsystém, I/O a souborové systémy
    • Systém souborů XFS přidal podporu pro asynchronní vyrovnávací paměti pomocí mechanismu io_uring. Výkonnostní testy provedené pomocí nástrojů fio (1 vlákno, velikost bloku 4 kB, 600 sekund, sekvenční zápis) ukazují nárůst vstupních/výstupních operací za sekundu (IOPS) ze 77 kB na 209 kB, rychlost přenosu dat z 314 MB/s na 854 MB/s, a pokles latence z 9600ns na 120ns (80krát).
    • Souborový systém Btrfs implementuje druhou verzi protokolu pro příkaz „odeslat“, který implementuje podporu dalších metadat, odesílání dat ve větších blocích (více než 64 kB) a přenos rozsahů v komprimované podobě. Výkon operací přímého čtení byl výrazně zvýšen (až 3x) díky současnému čtení až 256 sektorů. Omezení sporů o zamykání a zrychlení kontroly metadat snížením rezervovaných metadat pro odložené prvky.
    • Do souborového systému ext4 byly přidány nové operace ioctl EXT4_IOC_GETFSUUID a EXT4_IC_SETFSUUID pro načtení nebo nastavení UUID uloženého v superbloku.
    • Souborový systém F2FS nabízí režim nízké spotřeby paměti, který optimalizuje provoz na zařízeních s malým množstvím paměti RAM a umožňuje snížit spotřebu paměti za cenu snížení výkonu.
    • Přidána podpora pro ověřování disku NVMe.
    • Server NFSv4 implementuje limit počtu aktivních klientů, který je nastaven jako 1024 platných klientů na každý gigabajt paměti RAM v systému.
    • Implementace klienta CIFS zlepšila výkon v režimu vícekanálového přenosu.
    • Do subsystému sledování událostí ve fanotify FS byl přidán nový příznak FAN_MARK_IGNORE pro ignorování konkrétních událostí.
    • V Overlayfs FS, když je namontován na FS s mapováním ID uživatele, je poskytována správná podpora pro seznamy řízení přístupu vyhovující POSIX.
    • Přidán ovladač bloku ublk, který přesouvá specifickou logiku na stranu procesu na pozadí v uživatelském prostoru a používá subsystém io_uring.
  • Paměťové a systémové služby
    • Do subsystému DAMON (Data Access MONitor) byly přidány nové funkce, které umožňují nejen sledovat procesní přístup k RAM z uživatelského prostoru, ale také ovlivňovat správu paměti. Konkrétně byl navržen nový modul „LRU_SORT“, který zajišťuje přeskupení seznamů LRU (nejméně nedávno použitých) za účelem zvýšení priority určitých stránek paměti.
    • Schopnost vytvářet nové oblasti paměti byla implementována pomocí schopností sběrnice CXL (Compute Express Link), která se používá k organizaci vysokorychlostní interakce mezi CPU a paměťovými zařízeními. CXL umožňuje připojit nové paměťové oblasti poskytované externími paměťovými zařízeními a použít je jako další zdroje fyzického adresního prostoru pro rozšíření systémové paměti s náhodným přístupem (DDR) nebo trvalé paměti (PMEM).
    • Vyřešeny problémy s výkonem u procesorů AMD Zen způsobené kódem přidaným před 20 lety, aby se vyřešil problém s hardwarem v některých čipových sadách (byla přidána další instrukce WAIT pro zpomalení procesoru, takže čipová sada měla čas přejít do klidového stavu). Změna vedla ke snížení výkonu při pracovní zátěži, která často střídá stavy nečinnosti a zaneprázdnění. Například po deaktivaci tohoto řešení se průměrné skóre testu tbench zvýšilo z 32191 MB/s na 33805 MB/s.
    • Z plánovače úloh byl odstraněn kód s heuristikou, což zajišťuje migraci procesů na nejméně zatěžované CPU, s přihlédnutím k předpokládanému nárůstu spotřeby energie. Vývojáři dospěli k závěru, že heuristika není dostatečně užitečná a že bylo snazší ji odstranit a migrovat procesy bez dalšího vyhodnocování, kdykoli by taková migrace mohla potenciálně vést k nižší spotřebě energie (například když je cílový procesor v nižší energetické vrstvě). Vypnutí heuristiky vedlo ke snížení spotřeby při provádění intenzivních úkolů, například v testu dekódování videa se spotřeba snížila o 5.6 %.
    • Distribuce úloh mezi jádry CPU na velkých systémech byla optimalizována, což zlepšilo výkon pro určité typy zátěže.
    • Asynchronní I/O rozhraní io_uring nabízí nový příznak IORING_RECV_MULTISHOT, který vám umožňuje používat režim vícenásobných snímků se systémovým voláním recv() k provádění více operací čtení ze stejného síťového soketu najednou. io_uring také podporuje síťový přenos bez přechodného ukládání do vyrovnávací paměti (zero-copy).
    • Implementována možnost uvést programy BPF připojené k uprobe do stavu spánku. BPF také přidává nový iterátor ksym pro práci s tabulkami symbolů jádra.
    • Zastaralé rozhraní „efivars“ v sysfs, určené pro přístup k zaváděcím proměnným UEFI, bylo odstraněno (virtuální FS efivarfs se nyní univerzálně používá pro přístup k datům EFI).
    • Obslužný program perf má nové zprávy pro analýzu konfliktů zámků a času stráveného procesorem spouštěním komponent jádra.
    • Nastavení CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 bylo odstraněno, což umožňovalo sestavení jádra v režimu optimalizace "-O3". Je třeba poznamenat, že experimenty s optimalizačními režimy lze provádět předáváním příznaků během sestavování („make KCFLAGS=-O3“) a přidání nastavení do Kconfig vyžaduje opakovatelné profilování výkonu, což ukazuje, že rozvinutí smyčky používané v režimu „-O3“ poskytuje výhoda v porovnání s úrovní optimalizace „-O2“.
    • Bylo přidáno rozhraní debugfs pro získávání informací o činnosti jednotlivých „smršťovačů paměti“ (obslužné rutiny volané při nedostatku paměti a sbalení datových struktur jádra, aby se snížila jejich spotřeba paměti).
    • Pro architektury OpenRISC a LoongArch je implementována podpora sběrnice PCI.
    • Pro architekturu RISC-V bylo implementováno rozšíření „Zicbom“ pro správu zařízení s DMA, které není koherentní s mezipamětí.
  • Virtualizace a bezpečnost
    • Byl přidán ověřovací mechanismus RV (Runtime Verification) pro ověření správného fungování na vysoce spolehlivých systémech, které zaručují, že nedojde k selhání. Ověření se provádí za běhu připojením obslužných programů ke trasovacím bodům, které kontrolují skutečný průběh provádění oproti předem určenému referenčnímu deterministickému modelu stroje, který definuje očekávané chování systému. Verifikace pomocí modelu za běhu je umístěna jako lehčí a snadno implementovatelná metoda pro potvrzení správnosti provádění na kritických systémech, která doplňuje klasické metody ověřování spolehlivosti. Mezi výhody RV patří schopnost zajistit přísné ověření bez samostatné implementace celého systému v modelovacím jazyce a také flexibilní reakce na nepředvídané události.
    • Integrované komponenty jádra pro správu enkláv založené na technologii Intel SGX2 (Software Guard eXtensions), která aplikacím umožňuje spouštět kód v izolovaných zašifrovaných oblastech paměti, ke kterým má zbytek systému omezený přístup. Technologie Intel SGX2 je podporována v čipech Intel Ice Lake a Gemini Lake a od Intel SGX1 se liší dalšími pokyny pro dynamickou správu paměti enkláv.
    • Pro architekturu x86 byla implementována možnost přenést seed pro generátor pseudonáhodných čísel prostřednictvím nastavení bootloaderu.
    • Modul SafeSetID LSM má nyní možnost spravovat změny provedené prostřednictvím volání setgroups(). SafeSetID umožňuje systémovým službám bezpečně spravovat uživatele bez eskalace oprávnění (CAP_SETUID) a bez získání oprávnění root.
    • Přidána podpora pro blokovou šifru ARIA.
    • Modul správy zabezpečení na bázi BPF poskytuje možnost připojit handlery k jednotlivým procesům a skupinám procesů (cgroups).
    • Byl přidán mechanismus s implementací watchdog pro detekci zablokování hostovaných systémů na základě sledování aktivity vCPU.
  • Síťový subsystém
    • Do subsystému BPF byly přidány handlery pro generování a kontrolu SYN cookies. Přidána je také sada funkcí (kfunc) pro přístup a změnu stavu připojení.
    • Bezdrátový stack má přidanou podporu pro mechanismus MLO (Multi-Link Operation) definovaný ve specifikaci WiFi 7 a 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 současně vytvořit několik komunikačních kanálů mezi přístupový bod ke klientskému zařízení.
    • Výkon protokolu TLS zabudovaného do jádra byl vylepšen.
    • Byla přidána volba příkazového řádku jádra "hostname=", která umožňuje nastavení názvu hostitele na začátku procesu zavádění, před spuštěním komponent uživatelského prostoru.
  • Оборудование
    • Ovladač i915 (Intel) poskytuje podporu pro samostatné grafické karty Intel Arc (DG2/Alchemist) A750 a A770. Byla navržena počáteční implementace podpory pro Intel Ponte Vecchio (Xe-HPC) a GPU Meteor Lake. Pokračují práce na podpoře platformy Intel Raptor Lake.
    • Ovladač amdgpu nadále poskytuje podporu pro platformy AMD RDNA3 (RX 7000) a CDNA (Instinct).
    • Ovladač Nouveau přepracoval kód podpory pro zobrazovací jednotky GPU NVIDIA nv50.
    • Přidán nový ovladač logicvc DRM pro obrazovky LogiCVC.
    • Ovladač v3d (pro Broadcom Video Core GPU) podporuje desky Raspberry Pi 4.
    • Do ovladače msm přidána podpora pro Qualcomm Adreno 619 GPU.
    • Do ovladače Panfrost přidána podpora pro ARM Mali Valhall GPU.
    • Přidána počáteční podpora pro procesory Qualcomm Snapdragon 8cx Gen3 používané v noteboocích Lenovo ThinkPad X13s.
    • Přidány ovladače zvuku pro platformy AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake a Mediatek MT8186.
    • Přidána podpora pro akcelerátory strojového učení Intel Habana Gaudi 2.
    • Přidána podpora pro ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Latinskoamerická nadace pro svobodný software zároveň vytvořila verzi zcela svobodného jádra 6.0 - Linux-libre 6.0-gnu, zbavenou prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jehož rozsah je omezena výrobcem. Nová verze zakazuje použití blobů v CS35L41 HD-audio ovladači a UCSI ovladači pro mikrokontroléry STM32G0. Soubory DTS pro čipy Qualcomm a MediaTek byly vyčištěny. Vypínání objektů BLOB v ovladači MediaTek MT76 bylo přepracováno. Aktualizovaný kód čištění objektů blob v ovladačích a podsystémech AMDGPU, Adreno, Tegra VIC, Netronome NFP a Habanalabs Gaudi2. Zastavilo se čištění ovladače VXGE, který byl odstraněn z jádra.

Zdroj: opennet.ru

Přidat komentář