Vydanie jadra Linux 6.0

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie jadra Linux 6.0. Výrazná zmena čísla verzie je z estetických dôvodov a je formálnym krokom, ktorý má zmierniť nepohodlie spojené s hromadením veľkého množstva problémov v sérii (Linus žartoval, že dôvodom zmeny čísla pobočky bolo skôr to, že mu dochádzali prsty a prsty na nohách na počítanie čísel verzií) . Medzi najpozoruhodnejšie zmeny patrí podpora asynchrónneho zápisu do vyrovnávacej pamäte v XFS, ovládač bloku ublk, optimalizácia plánovača úloh, mechanizmus na overenie správnej činnosti jadra, podpora blokovej šifry ARIA.

Kľúčové inovácie v jadre 6.0:

  • Diskový subsystém, I/O a súborové systémy
    • Súborový systém XFS pridal podporu pre asynchrónne zápisy vo vyrovnávacej pamäti pomocou mechanizmu io_uring. Výkonnostné testy vykonané pomocou nástrojov fio (1 vlákno, veľkosť bloku 4 kB, 600 sekúnd, sekvenčný zápis) ukazujú nárast vstupných/výstupných operácií za sekundu (IOPS) zo 77 kB na 209 kB, rýchlosť prenosu dát z 314 MB/s na 854 MB/s, a pokles latencie z 9600ns na 120ns (80-krát).
    • Súborový systém Btrfs implementuje druhú verziu protokolu pre príkaz „send“, ktorý implementuje podporu pre ďalšie metadáta, odosielanie údajov vo väčších blokoch (viac ako 64 kB) a prenos rozsahov v komprimovanej forme. Výkon operácií priameho čítania sa výrazne zvýšil (až 3-krát) vďaka súčasnému čítaniu až 256 sektorov. Obmedzenie sporov o uzamknutie a zrýchlenie kontroly metadát znížením vyhradených metadát pre odložené prvky.
    • Do súborového systému ext4 boli pridané nové operácie ioctl EXT4_IOC_GETFSUUID a EXT4_IC_SETFSUUID na získanie alebo nastavenie UUID uloženého v superbloku.
    • Súborový systém F2FS ponúka režim nízkej spotreby pamäte, ktorý optimalizuje prevádzku na zariadeniach s malým množstvom pamäte RAM a umožňuje znížiť spotrebu pamäte za cenu zníženia výkonu.
    • Pridaná podpora pre autentifikáciu disku NVMe.
    • Server NFSv4 implementuje limit počtu aktívnych klientov, ktorý je nastavený ako 1024 platných klientov na každý gigabajt RAM v systéme.
    • Implementácia klienta CIFS zlepšila výkon v režime viackanálového prenosu.
    • Do podsystému sledovania udalostí vo fanotify FS bol pridaný nový príznak FAN_MARK_IGNORE na ignorovanie konkrétnych udalostí.
    • V Overlayfs FS, keď je namontovaný na vrchu FS s mapovaním ID užívateľa, je poskytnutá správna podpora pre zoznamy riadenia prístupu kompatibilné s POSIX.
    • Pridaný ovládač bloku ublk, ktorý presúva špecifickú logiku na stranu procesu na pozadí v užívateľskom priestore a využíva subsystém io_uring.
  • Pamäťové a systémové služby
    • Do subsystému DAMON (Data Access MONitor) pribudli nové funkcie, ktoré umožňujú nielen sledovať procesný prístup k RAM z užívateľského priestoru, ale aj ovplyvňovať správu pamäte. Predovšetkým bol navrhnutý nový modul „LRU_SORT“, ktorý poskytuje preskupenie zoznamov LRU (Najmenej naposledy použitých) na zvýšenie priority určitých pamäťových stránok.
    • Schopnosť vytvárať nové pamäťové oblasti bola implementovaná pomocou možností zbernice CXL (Compute Express Link), ktorá sa používa na organizáciu vysokorýchlostnej interakcie medzi CPU a pamäťovými zariadeniami. CXL vám umožňuje pripojiť nové pamäťové oblasti poskytované externými pamäťovými zariadeniami a použiť ich ako dodatočné zdroje fyzického adresného priestoru na rozšírenie systémovej pamäte s náhodným prístupom (DDR) alebo trvalej pamäte (PMEM).
    • Vyriešené problémy s výkonom procesorov AMD Zen spôsobené kódom pridaným pred 20 rokmi, aby sa vyriešil problém s hardvérom v niektorých čipových sadách (bola pridaná ďalšia inštrukcia WAIT na spomalenie procesora, takže čipová sada mala čas prejsť do stavu nečinnosti). Táto zmena viedla k zníženiu výkonu pri pracovnom zaťažení, ktoré sa často strieda medzi stavom nečinnosti a zaneprázdnenosti. Napríklad po vypnutí tohto riešenia sa priemerné skóre testu tbench zvýšilo z 32191 MB/s na 33805 MB/s.
    • Kód s heuristikou bol odstránený z plánovača úloh, čím sa zabezpečila migrácia procesov na najmenej zaťažené CPU, berúc do úvahy predpokladaný nárast spotreby energie. Vývojári dospeli k záveru, že heuristika nebola dostatočne užitočná a že bolo jednoduchšie ju odstrániť a migrovať procesy bez dodatočného vyhodnocovania vždy, keď by takáto migrácia mohla potenciálne viesť k nižšej spotrebe energie (napríklad, keď je cieľový procesor v nižšej energetickej vrstve). Vypnutie heuristiky viedlo k zníženiu spotreby energie pri vykonávaní intenzívnych úloh, napríklad pri teste dekódovania videa sa spotreba energie znížila o 5.6 %.
    • Rozdelenie úloh medzi jadrá CPU na veľkých systémoch bolo optimalizované, čím sa zlepšil výkon pre určité typy záťaže.
    • Asynchrónne I/O rozhranie io_uring ponúka nový príznak IORING_RECV_MULTISHOT, ktorý vám umožňuje použiť režim viacerých záberov so systémovým volaním recv() na vykonávanie viacerých operácií čítania z rovnakého sieťového soketu naraz. io_uring tiež podporuje sieťový prenos bez prechodného ukladania do vyrovnávacej pamäte (zero-copy).
    • Implementovaná schopnosť uviesť programy BPF pripojené k uprobe do stavu spánku. BPF tiež pridáva nový iterátor ksym pre prácu s tabuľkami symbolov jadra.
    • Zastarané rozhranie „efivars“ v sysfs, určené na prístup k zavádzacím premenným UEFI, bolo odstránené (virtuálny FS efivarfs sa teraz univerzálne používa na prístup k údajom EFI).
    • Nástroj perf má nové správy na analýzu konfliktov zámkov a času stráveného procesorom vykonávaním komponentov jadra.
    • Nastavenie CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 bolo odstránené, čo umožňovalo zostavenie jadra v režime optimalizácie "-O3". Poznamenávame, že experimenty s optimalizačnými režimami je možné vykonávať odovzdávaním príznakov počas zostavovania („make KCFLAGS=-O3“) a pridanie nastavenia do Kconfig vyžaduje opakovateľné profilovanie výkonu, čo ukazuje, že rozvinutie slučky používané v režime „-O3“ poskytuje výhoda v porovnaní s úrovňou optimalizácie „-O2“.
    • Bolo pridané rozhranie debugfs na získavanie informácií o činnosti jednotlivých „zmenšovačov pamäte“ (obslužné programy, ktoré sa volajú pri nedostatku pamäte a zbaľujú dátové štruktúry jadra, aby sa znížila ich spotreba pamäte).
    • Pre architektúry OpenRISC a LoongArch je implementovaná podpora pre zbernicu PCI.
    • Pre architektúru RISC-V bolo implementované rozšírenie „Zicbom“ na správu zariadení s DMA, ktoré nie je koherentné s vyrovnávacou pamäťou.
  • Virtualizácia a bezpečnosť
    • Bol pridaný overovací mechanizmus RV (Runtime Verification) na overenie správnej činnosti na vysoko spoľahlivých systémoch, ktoré zaručujú, že nedochádza k poruchám. Overenie sa vykonáva za behu pripájaním obslužných programov k bodom sledovania, ktoré kontrolujú skutočný priebeh vykonávania oproti vopred určenému referenčnému deterministickému modelu stroja, ktorý definuje očakávané správanie systému. Verifikácia pomocou modelu za behu je umiestnená ako ľahšia a ľahko implementovateľná metóda na potvrdenie správnosti vykonávania na kritických systémoch, ktorá dopĺňa klasické metódy overovania spoľahlivosti. Medzi výhody RV patrí možnosť prísnej verifikácie bez samostatnej implementácie celého systému v modelovacom jazyku, ako aj flexibilná reakcia na nepredvídané udalosti.
    • Integrované komponenty jadra na správu enkláv založené na technológii Intel SGX2 (Software Guard eXtensions), ktorá umožňuje aplikáciám spúšťať kód v izolovaných zašifrovaných oblastiach pamäte, ku ktorým má zvyšok systému obmedzený prístup. Technológia Intel SGX2 je podporovaná v čipoch Intel Ice Lake a Gemini Lake a od Intel SGX1 sa líši ďalšími pokynmi pre dynamickú správu pamäte enkláv.
    • Pre architektúru x86 bola implementovaná možnosť preniesť základ generátora pseudonáhodných čísel cez nastavenia zavádzača.
    • Modul SafeSetID LSM má teraz možnosť spravovať zmeny vykonané prostredníctvom volania setgroups(). SafeSetID umožňuje systémovým službám bezpečne spravovať používateľov bez zvyšovania privilégií (CAP_SETUID) a bez získania privilégií root.
    • Pridaná podpora pre blokovú šifru ARIA.
    • Modul riadenia bezpečnosti na báze BPF poskytuje možnosť pripojiť handlery k jednotlivým procesom a skupinám procesov (cgroups).
    • Bol pridaný mechanizmus s implementáciou watchdog na zisťovanie zablokovania hosťujúcich systémov na základe monitorovania aktivity vCPU.
  • Sieťový subsystém
    • Do subsystému BPF boli pridané obslužné programy na generovanie a kontrolu súborov cookie SYN. Pridaná je aj sada funkcií (kfunc) pre prístup a zmenu stavu pripojení.
    • Bezdrôtový stoh má pridanú podporu pre mechanizmus MLO (Multi-Link Operation) definovaný v špecifikácii WiFi 7 a umožňujúci zariadeniam súčasne prijímať a odosielať dáta pomocou rôznych frekvenčných pásiem a kanálov, napríklad na súčasné vytvorenie niekoľkých komunikačných kanálov medzi prístupový bod ku klientskemu zariadeniu.
    • Výkon protokolu TLS zabudovaného do jadra bol vylepšený.
    • Pridaná voľba príkazového riadku jadra "hostname=", ktorá umožňuje nastavenie názvu hostiteľa na začiatku procesu zavádzania, pred spustením komponentov používateľského priestoru.
  • Оборудование
    • Ovládač i915 (Intel) poskytuje podporu pre samostatné grafické karty Intel Arc (DG2/Alchemist) A750 a A770. Bola navrhnutá počiatočná implementácia podpory pre Intel Ponte Vecchio (Xe-HPC) a Meteor Lake GPU. Pokračujú práce na podpore platformy Intel Raptor Lake.
    • Ovládač amdgpu naďalej poskytuje podporu pre platformy AMD RDNA3 (RX 7000) a CDNA (Instinct).
    • Ovládač Nouveau prepracoval kód podpory pre zobrazovacie jednotky GPU NVIDIA nv50.
    • Pridaný nový ovládač logicvc DRM pre obrazovky LogiCVC.
    • Ovládač v3d (pre Broadcom Video Core GPU) podporuje dosky Raspberry Pi 4.
    • Do ovládača msm bola pridaná podpora pre GPU Qualcomm Adreno 619.
    • Do ovládača Panfrost bola pridaná podpora pre ARM Mali Valhall GPU.
    • Pridaná počiatočná podpora pre procesory Qualcomm Snapdragon 8cx Gen3 používané v notebookoch Lenovo ThinkPad X13s.
    • Pridané zvukové ovládače pre platformy AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake a Mediatek MT8186.
    • Pridaná podpora pre akcelerátory strojového učenia Intel Habana Gaudi 2.
    • Pridaná podpora pre ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Latinskoamerická nadácia pre slobodný softvér zároveň vytvorila verziu úplne slobodného jadra 6.0 - Linux-libre 6.0-gnu, zbavenú prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorých rozsah je limitované výrobcom. Nové vydanie zakazuje používanie blobov v ovládači CS35L41 HD-audio a ovládači UCSI pre mikrokontroléry STM32G0. Súbory DTS pre čipy Qualcomm a MediaTek boli vyčistené. Vypnutie blobov v ovládači MediaTek MT76 bolo prepracované. Aktualizovaný kód čistenia blob v ovládačoch a podsystémoch AMDGPU, Adreno, Tegra VIC, Netronome NFP a Habanalabs Gaudi2. Zastavilo sa čistenie ovládača VXGE, ktorý bol odstránený z jadra.

Zdroj: opennet.ru

Pridať komentár