Vydání jádra Linux 5.19

Po dvou měsících vývoje představil Linus Torvalds vydání linuxového jádra 5.19. Mezi nejpozoruhodnější změny patří podpora architektury procesoru LoongArch, integrace záplat „BIG TCP“, režim na vyžádání ve fscache, odstranění kódu pro podporu formátu a.out, možnost používat ZSTD pro kompresi firmwaru, rozhraní pro správa vyřazení paměti z uživatelského prostoru, zvýšení spolehlivosti a výkonu generátoru pseudonáhodných čísel, podpora Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) a ARM Rozšíření SME (Scalable Matrix Extension).

V oznámení Linus řekl, že příští vydání jádra bude mít s největší pravděpodobností číslo 6.0, protože větev 5.x nashromáždila dostatek vydání, aby změnila první číslo v čísle verze. Změna číslování se provádí z estetických důvodů a je formálním krokem, který zmírňuje nepohodlí způsobené nahromaděním velkého počtu čísel v sérii.

Linus také zmínil, že k vytvoření vydání použil notebook Apple založený na architektuře ARM64 (Apple Silicon) s linuxovým prostředím založeným na distribuci Asahi Linux. Není to Linusova primární pracovní stanice, ale použil platformu k otestování její vhodnosti pro práci s jádrem a k zajištění toho, že bude moci vytvářet verze jádra na cestách s lehkým notebookem po ruce. Před mnoha lety měl Linus zkušenosti s používáním zařízení Apple pro vývoj – kdysi používal PC založené na CPU ppc970 a notebook Macbook Air.

Nová verze obsahuje 16401 2190 oprav od 16206 2127 vývojářů (v předchozím vydání bylo 90 13847 oprav od 1149456 349177 vývojářů), velikost opravy je 39 MB (změny se dotkly 5.19 21 souborů, bylo přidáno 11 4 3 řádků kódu, smazáno XNUMX XNUMX řádků). Přibližně XNUMX % všech změn zavedených v XNUMX se týká ovladačů zařízení, přibližně XNUMX % změn souvisí s aktualizací kódu specifického pro hardwarové architektury, XNUMX % se týká síťového zásobníku, XNUMX % se týká souborových systémů a XNUMX % souvisí s vnitřními subsystémy jádra.

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

  • Diskový subsystém, I/O a souborové systémy
    • Souborový systém EROFS (Enhanced Read-Only File System), určený pro použití na oddílech pouze pro čtení, byl převeden na subsystém fscache, který zajišťuje ukládání dat do mezipaměti. Tato změna výrazně zlepšila výkon systémů, ve kterých je velké množství kontejnerů spouštěno z obrazu založeného na EROFS.
    • Do subsystému fscache byl přidán režim čtení na vyžádání, který se používá k optimalizaci EROFS. Nový režim umožňuje organizovat ukládání do mezipaměti čtení z obrazů FS umístěných v místním systému. Na rozdíl od původně dostupného provozního režimu, který je zaměřen na ukládání dat přenášených prostřednictvím síťových souborových systémů do mezipaměti v místním souborovém systému, režim „na vyžádání“ deleguje funkce získávání dat a jejich zapisování do mezipaměti na samostatnou proces na pozadí běžící v uživatelském prostoru.
    • XFS poskytuje možnost ukládat miliardy rozšířených atributů v i-uzlu. Maximální počet oblastí pro jeden soubor byl zvýšen ze 4 miliard na 247. Byl implementován režim pro atomickou aktualizaci několika rozšířených atributů souboru najednou.
    • Souborový systém Btrfs má optimalizovanou práci se zámky, což umožnilo přibližně 7% nárůst výkonu při přímém zápisu v režimu nowait. Výkon operací v režimu NOCOW (bez kopírování při zápisu) je zvýšen přibližně o 3 %. Zatížení mezipaměti stránek při spuštění příkazu „odeslat“ bylo sníženo. Minimální velikost podstránek byla snížena z 64K na 4K (lze použít podstránky menší než stránky jádra). Byl proveden přechod z použití radixového stromu na algoritmus XArrays.
    • Na server NFS byl přidán režim pro rozšíření zachování stavu uzamčení nastaveného klientem, který přestal reagovat na požadavky. Nový režim umožňuje odložit vymazání zámku až o jeden den, pokud jiný klient nepožádá o konkurenční zámek. V normálním režimu je blokování zrušeno 90 sekund poté, co klient přestane reagovat.
    • Subsystém sledování událostí ve fanotify FS implementuje příznak FAN_MARK_EVICTABLE, pomocí kterého můžete zakázat připínání cílových i-uzlů v mezipaměti, například pro ignorování dílčích větví bez připínání jejich částí do mezipaměti.
    • Ovladač pro souborový systém FAT32 přidal podporu pro získávání informací o čase vytvoření souboru prostřednictvím systémového volání statx s implementací efektivnější a funkčnější verze stat(), která vrací rozšířené informace o souboru.
    • V ovladači exFAT byly provedeny významné optimalizace, které umožňují současné mazání skupiny sektorů, když je aktivní režim 'dirsync', namísto sekvenčního mazání sektor po sektoru. Snížením počtu požadavků na blok po optimalizaci vzrostl výkon při vytváření velkého počtu adresářů na SD kartě o více než 73-85% v závislosti na velikosti clusteru.
    • Jádro obsahuje první opravnou aktualizaci ovladače ntfs3. Od loňského října, kdy byl ntfs3 zahrnut do jádra 5.15, nebyl ovladač aktualizován a komunikace s vývojáři byla ztracena, ale vývojáři nyní obnovili publikování změn. Navrhované záplaty eliminovaly chyby vedoucí k únikům paměti a pádům, vyřešily problémy s prováděním xfstests, vyčistily nepoužívaný kód a opravily překlepy.
    • Pro OverlayFS byla implementována možnost mapování uživatelských ID připojených souborových systémů, která se používá ke spárování souborů konkrétního uživatele na připojeném cizím oddílu s jiným uživatelem na aktuálním systému.
  • Paměťové a systémové služby
    • Přidána počáteční podpora pro architekturu instrukční sady LoongArch používanou v procesorech Loongson 3 5000, která implementuje nový RISC ISA, podobný MIPS a RISC-V. Architektura LoongArch je k dispozici ve třech variantách: zkrácená 32bitová (LA32R), běžná 32bitová (LA32S) a 64bitová (LA64).
    • Byl odstraněn kód pro podporu formátu spustitelného souboru a.out, který byl ve verzi 5.1 zastaralý. Formát a.out je v systémech Linux již dlouho zastaralý a generování souborů a.out není podporováno moderními nástroji ve výchozích konfiguracích Linuxu. Zavaděč pro soubory a.out lze implementovat zcela v uživatelském prostoru.
    • Podpora možností spouštění specifických pro x86 byla ukončena: nosp, nosmap, nosmep, noexec a noclflush).
    • Podpora zastaralé architektury CPU h8300 (Renesas H8/300), která byla dlouho ponechána bez podpory, byla ukončena.
    • Rozšířené možnosti související s reakcí na detekci rozdělených zámků („split locks“), ke kterým dochází při přístupu k nezarovnaným datům v paměti kvůli skutečnosti, že při provádění atomické instrukce data překročí dvě řádky mezipaměti CPU. Takové blokády vedou k výraznému poklesu výkonu. Pokud dříve ve výchozím nastavení jádro vydávalo varování s informací o procesu, který blokování způsobil, nyní bude problematický proces dále zpomalen, aby se zachoval výkon zbytku systému.
    • Přidána podpora pro mechanismus IFS (In-Field Scan) implementovaný v procesorech Intel, který umožňuje spouštět nízkoúrovňové diagnostické testy CPU, které mohou identifikovat problémy, které nejsou detekovány standardními nástroji na základě kódů pro opravu chyb (ECC) nebo paritních bitů. . Prováděné testy jsou ve formě firmwaru ke stažení, navrženého podobně jako aktualizace mikrokódu. Výsledky testů jsou k dispozici prostřednictvím sysfs.
    • Přidána možnost vložit do jádra soubor bootconfig, který umožňuje kromě možností příkazového řádku určit parametry jádra prostřednictvím souboru nastavení. Vkládání se provádí pomocí volby sestavení 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Dříve se bootconfig určoval připojením k obrazu initrd. Integrace do jádra umožňuje použití bootconfigu v konfiguracích bez initrd.
    • Byla implementována možnost stahování firmwaru komprimovaného pomocí algoritmu Zstandard. Do sysfs byla přidána sada řídicích souborů /sys/class/firmware/*, které vám umožňují zahájit načítání firmwaru z uživatelského prostoru.
    • Asynchronní I/O rozhraní io_uring nabízí nový příznak IORING_RECVSEND_POLL_FIRST, který, když je nastaven, nejprve odešle síťovou operaci ke zpracování pomocí dotazování, což může ušetřit prostředky v situacích, kdy je přijatelné zpracování operace s určitým zpožděním. io_uring také přidal podporu pro systémové volání socket(), navrhl nové příznaky pro zjednodušení správy deskriptorů souborů, přidal režim „multi-shot“ pro přijímání několika připojení najednou ve volání accept() a přidal operace pro předávání NVMe. příkazy přímo do zařízení.
    • Architektura Xtensa poskytuje podporu pro ladicí nástroj KCSAN (Kernel Concurrency Sanitizer), který je navržen tak, aby dynamicky zjišťoval závodní podmínky v jádře. Také přidána podpora pro režim spánku a koprocesory.
    • Pro architekturu m68k (Motorola 68000) byl implementován virtuální stroj (simulátor platformy) založený na emulátoru Android Goldfish.
    • Pro architekturu AArch64 byla implementována podpora pro rozšíření Armv9-A SME (Scalable Matrix Extension).
    • Subsystém eBPF umožňuje ukládat typizované ukazatele v mapových strukturách a také přidává podporu pro dynamické ukazatele.
    • Je navržen nový proaktivní mechanismus zpětného získávání paměti, který podporuje řízení uživatelského prostoru pomocí souboru memory.reclaim. Zapsáním čísla do zadaného souboru se pokusíte odstranit odpovídající počet bajtů ze sady spojené s cgroup.
    • Vylepšená přesnost využití paměti při komprimaci dat v odkládacím oddílu pomocí mechanismu zswap.
    • Pro architekturu RISC-V je poskytována podpora pro spouštění 32bitových spustitelných souborů na 64bitových systémech, je přidán režim pro vazbu omezujících atributů na stránky paměti (například pro zakázání ukládání do mezipaměti) a je implementována funkce kexec_file_load(). .
    • Implementace podpory pro 32bitové systémy Armv4T a Armv5 je přizpůsobena pro použití v univerzálních multiplatformních sestavách jádra vhodných pro různé systémy ARM.
  • Virtualizace a bezpečnost
    • Subsystém EFI implementuje schopnost důvěrně přenášet tajné informace do hostovaných systémů, aniž by je prozradil hostitelskému systému. Údaje jsou poskytovány prostřednictvím adresáře security/coco v securityfs.
    • Režim ochrany proti uzamčení, který omezuje přístup uživatelů root k jádru a blokuje cesty obcházení UEFI Secure Boot, eliminoval mezeru, která umožňovala obejít ochranu manipulací s ladicím programem jádra.
    • Zahrnuty jsou záplaty zaměřené na zlepšení spolehlivosti a výkonu generátoru pseudonáhodných čísel.
    • Při sestavování pomocí Clang 15 je implementována podpora mechanismu pro randomizaci struktur jádra.
    • Mechanismus Landlock, který umožňuje omezit interakci skupiny procesů s vnějším prostředím, poskytuje podporu pro pravidla, která umožňují řídit provádění operací přejmenování souborů.
    • Subsystém IMA (Integrity Measurement Architecture) určený k ověřování integrity komponent operačního systému pomocí digitálních podpisů a hashů byl přepnut na použití modulu fs-verity pro ověřování souborů.
    • Logika akcí při deaktivaci neprivilegovaného přístupu k subsystému eBPF byla změněna - dříve byly zakázány všechny příkazy spojené se systémovým voláním bpf() a od verze 5.19 je ponechán přístup k příkazům, které nevedou k vytváření objektů . Toto chování vyžaduje privilegovaný proces k načtení programu BPF, ale pak mohou s programem interagovat neprivilegované procesy.
    • Přidána podpora pro rozšíření AMD SEV-SNP (Secure Nested Paging), které poskytuje bezpečnou práci s vnořenými tabulkami stránek paměti a chrání před útoky „undeSErVed“ a „SEVerity“ na procesory AMD EPYC, což umožňuje obejít AMD SEV (Secure Encrypted Virtualization). ) ochranný mechanismus.
    • Přidána podpora pro mechanismus Intel TDX (Trusted Domain Extensions), který umožňuje blokovat pokusy třetích stran o přístup k šifrované paměti virtuálních strojů.
    • Ovladač virtio-blk, používaný k emulaci blokových zařízení, přidal podporu pro I/O pomocí dotazování, což podle testů snížilo latenci asi o 10 %.
  • Síťový subsystém
    • Balíček obsahuje řadu BIG TCP patchů, které umožňují zvýšit maximální velikost paketu TCP paketu na 4 GB pro optimalizaci provozu vysokorychlostních interních sítí datových center. Podobného zvýšení velikosti paketu s 16bitovou velikostí pole hlavičky je dosaženo implementací „jumbo“ paketů, jejichž velikost v hlavičce IP je nastavena na 0 a skutečná velikost je přenášena v samostatném 32bitovém pole v samostatném připojeném záhlaví. Při testování výkonu zvýšilo nastavení velikosti paketu na 185 KB propustnost o 50 % a výrazně snížilo latenci přenosu dat.
    • Pokračovaly práce na integraci nástrojů do síťového zásobníku, aby bylo možné sledovat důvody zahazování paketů (kódy důvodů). Kód příčiny je odeslán, když se uvolní paměť spojená s paketem a umožňuje situace, jako je zahození paketu kvůli chybám v záhlaví, detekce falšování rp_filter, neplatný kontrolní součet, nedostatek paměti, spuštěná pravidla IPSec XFRM, neplatné pořadové číslo TCP atd.
    • Přidána podpora zpětného připojení MPTCP (MultiPath TCP) pro použití běžného TCP v situacích, kdy nelze použít určité funkce MPTCP. MPTCP je rozšířením protokolu TCP pro organizaci provozu TCP spojení s doručováním paketů současně po několika trasách přes různá síťová rozhraní spojená s různými IP adresami. Přidáno API pro řízení streamů MPTCP z uživatelského prostoru.
  • Оборудование
    • Bylo přidáno více než 420 400 řádků kódu souvisejících s ovladačem amdgpu, z nichž asi 22.5 21 řádků jsou automaticky generované soubory záhlaví pro data registru ASIC v ovladači GPU AMD a dalších 4 21 řádků poskytuje počáteční implementaci podpory pro AMD SoC13. Celková velikost ovladače pro GPU AMD přesáhla 3 miliony řádků kódu. Kromě SoC7000 obsahuje ovladač AMD podporu pro SMU XNUMX.x (System Management Unit), aktualizovanou podporu pro USB-C a GPUVM a přípravy pro podporu dalších generací platforem RDNAXNUMX (RX XNUMX) a CDNA (AMD Instinct). .
    • Ovladač i915 (Intel) má rozšířené možnosti týkající se správy napájení. Přidány identifikátory pro GPU Intel DG2 (Arc Alchemist) používané na laptopech, poskytnuta počáteční podpora pro platformu Intel Raptor Lake-P (RPL-P), přidány informace o grafických kartách Arctic Sound-M, implementováno ABI pro výpočetní motory, přidáno pro Karty DG2 podporují formát Tile4, pro systémy založené na mikroarchitektuře Haswell je implementována podpora DisplayPort HDR.
    • Ovladač Nouveau přešel na použití obslužné rutiny drm_gem_plane_helper_prepare_fb; na některé struktury a proměnné bylo aplikováno statické přidělování paměti. Pokud jde o použití modulů jádra open source společností NVIDIA v Nouveau, práce se zatím schází k identifikaci a odstranění chyb. V budoucnu se plánuje použití zveřejněného firmwaru ke zlepšení výkonu ovladače.
    • Přidán ovladač pro řadič NVMe používaný v počítačích Apple založený na čipu M1.

Ve stejné době latinskoamerická nadace pro svobodný software vytvořila verzi zcela svobodného jádra 5.19 - Linux-libre 5.19-gnu, zbavenou prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jehož rozsah je omezena výrobcem. Nová verze vyčistí ovladače pro pureLiFi X/XL/XC a TI AMx3 Wkup-M3 IPC. Aktualizovaný kód čištění blobu v Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu ovladače a subsystémy. Bylo implementováno zpracování souborů se stromem zařízení Qualcomm AArch64. Přidána podpora pro nové schéma pojmenování komponent Sound Open Firmware. Zastaveno čištění ovladače ATM Ambassador, který byl odstraněn z jádra. Správa čištění objektů blob v HDCP a Mellanox Core byla přesunuta do samostatných značek kconfig.

Zdroj: opennet.ru

Přidat komentář