Po dvoch mesiacoch vývoja Linus Torvalds predstavil uvoľnenie jadra Linux 5.14. Medzi najvýraznejšie zmeny patrí: nové systémové volania quotactl_fd() a memfd_secret(), odstránenie ovládačov ide a raw, nový kontrolér priorít vstup/výstup pre cgroup, režim plánovania úloh SCHED_CORE, infraštruktúra na vytváranie zavádzačov overených BPF programov.
Nová verzia obsahuje 15883 opráv od 2002 vývojárov, veľkosť patchu je 69 MB (zmeny zasiahli 12580 súborov, pridaných bolo 861501 riadkov kódu, odstránených 321654 riadkov). Asi 47% všetkých zmien vo verzii 5.14 je súvisiacich s ovládačmi zariadení, približne 14% zmien sa týka aktualizácie kódu, špecifického pre hardvérové architektúry, 13% súvisí so sieťovým zásobníkom, 3% s súborovými systémami a 3% s internými subsystémami jadra.
Hlavné novinky:
- Diskový subsystém, I/O a súborové systémy
- Pre cgroup bol implementovaný nový kontrolér priorizácie vstup/výstup — rq-qos, ktorý môže riadiť prioritu spracovania požiadaviek na blokové zariadenia, generovaných účastníkmi každej cgroup. Podpora nového priorizovaného kontroléra bola pridaná do plánovača vstup/výstup mq-deadline.
- V súborovom systéme ext4 bola implementovaná nová ioctl-príkaz EXT4_IOC_CHECKPOINT, ktorý núti zapisovať na disk všetky čakajúce transakcie z denníka a s nimi spojené buffery, ako aj prepísať oblasť denníka využívanú v úložisku. Zmena bola pripravená v rámci iniciatívy na prevenciu únikov informácií zo súborových systémov.
- V Btrfs boli vykonané optimalizácie výkonu: vylúčením nadbytočného denníkovania rozšírených atribútov počas vykonávania fsync sa výkon intenzívnych operácií s rozšírenými atribútmi zvýšil až o 17%. Okrem toho, pri vykonávaní operácií skracovania, ktoré nezasahujú do extents, bola vypnutá plná synchronizácia, čo skrátilo čas vykonávania operácie o 12%. Do sysfs bola pridaná konfigurácia na obmedzenie priepustnosti vstup/výstup pri kontrole FS. Boli pridané ioctl-výzvy na zrušenie operácií zmeny veľkosti a odstránenia zariadenia.
- V XFS bola prepracovaná implementácia vyrovnávacej pamäte, ktorá prešla na vyrovnávanie pamäti po stránkach v dávkovom režime. Zlepšila sa efektívnosť práce vyrovnávacej pamäte.
- Pridaná možnosť režimu len na čítanie v F2FS a implementovaný režim vyrovnávacej pamäte stlačených blokov (compress_cache) na zlepšenie výkonu náhodného čítania. Podpora kompresie súborov, ktoré sú zobrazené v pamäti pomocou operácie mmap(), bola realizovaná. Nová možnosť montáže nocompress bola navrhnutá na selektívne vypnutie kompresie súborov na základe vzoru.
- V ovládači exFAT bola vykonaná práca na zlepšení kompatibility s úložiskami niektorých digitálnych fotoaparátov.
- Pridaný systémový hovor quotactl_fd(), ktorý umožňuje spravovať kvóty nie prostredníctvom súboru špeciálneho zariadenia, ale prostredníctvom určenia súborového deskriptoru priradeného k súborovému systému, na ktorý sa kvóta vzťahuje.
- Zo systému bolo odstránené staré ovládače blokových zariadení s rozhraním IDE, ktorým už dávno nahradila subsystém libata.
- Zo systému bol odstránený ovládač 'raw', ktorý poskytoval nevyrovnávaný prístup k blokovým zariadeniam prostredníctvom rozhrania /dev/raw. Tento funkčnosť bola už dávno realizovaná v aplikáciách pomocou príkazu O_DIRECT.
- Pamäť a systémové služby
- V plánovači úloh bol zavedený nový režim plánovania SCHED_CORE, ktorý umožňuje spravovať, ktoré procesy môžu byť vykonávané spoločne na jednom jadre CPU. Každému procesu môže byť priradený cookie-identifikátor, ktorý určuje oblasť dôvery medzi procesmi (napríklad patriaci jednému používateľovi alebo kontajneru). Pri organizovaní vykonávania kódu môže plánovač zabezpečiť zdieľanie jedného jadra CPU iba pre procesy spojené s jedným vlastníkom, čo môže byť využité na blokovanie niektorých útokov triedy Spectre tým, že sa zabráni vykonávaniu dôveryhodných a nedôveryhodných úloh v jednom vlákne SMT (Hyper Threading).
- Pre cgroup bola implementovaná podpora operácie kill, ktorá umožňuje jednorazovo ukončiť všetky procesy priradené k skupine (odoslať SIGKILL) zápisom '1' do virtuálneho súboru cgroup.kill.
- Rozšírené možnosti týkajúce sa reakcie na zistenie roztrhnutých zámkov („split lock“), ktoré sa vyskytujú pri prístupe k nevyrovnaným údajom v pamäti v dôsledku toho, že pri vykonávaní atomárnej inštrukcie údaje prechádzajú dvoma líniami cache CPU. Takéto zámky vedú k značnému poklesu výkonu, a preto bola predtým poskytovaná možnosť núteného ukončenia aplikácie, ktorá zámok spôsobila. V novej verzii bol pridaný parameter príkazového riadku jadra „split_lock_detect=ratelimit:N“, ktorý umožňuje určiť systémový limit intenzity operácií zámkov za sekundu, po prekročení ktorého bude každý proces, ktorý sa stal zdrojom roztrhnutého zámku, namiesto ukončenia nútene zastavený na 20 ms.
- V cgroup regulátore priepustnosti CFS (CFS bandwidth controller), ktorý určuje, koľko procesorového času môže byť pridelené každej cgroup, bola implementovaná možnosť určenia limitov, obmedzených zadaným časom, čo umožňuje lepšie regulovať záťaže citlivé na oneskorenia. Napríklad nastavenie hodnoty cpu.cfs_quota_us na 50000 a cpu.cfs_period_us na 100000 umožní skupine procesov minúť každých 100 ms 50 ms CPU času.
- Pridaná základná infraštruktúra pre vytváranie načítavačov BPF programov, ktorá neskôr umožní povolenie načítania iba BPF programov, podpísaných spoľahlivým digitálnym kľúčom.
- Pridaná nová futex operácia FUTEX_LOCK_PI2, ktorá využíva monotónny časovač na výpočet časového limitu, ktorý zohľadňuje čas strávený systémom v spánkovom režime.
- Pre architektúru RISC-V bola implementovaná podpora veľkých stránok pamäte (Transparent Huge-Pages) a možnosť použitia mechanizmu KFENCE na zistenie chýb pri práci s pamäťou.
- Do systémového volání madvise(), které poskytuje prostředky pro optimalizaci správy paměti procesu, byly přidány příznaky MADV_POPULATE_READ a MADV_POPULATE_WRITE pro generování „page fault“ na všech stránkách paměti, odrážející se pro operace čtení nebo zápisu, bez skutečného provádění čtení nebo zápisu (prefault). Použití těchto příznaků může být užitečné pro snížení zpoždění během běhu programu, díky předběžnému provedení zpracovatele „page fault“ najednou pro všechny nedelegované stránky, aniž by se čekalo na skutečný přístup k nim.
- Do systému unit testování kunit byla přidána podpora spouštění testů v prostředí QEMU.
- Byly přidány nové traséry: „osnoise“ pro sledování zpoždění v aplikacích způsobených zpracováním přerušení a „timerlat“ pro zobrazení detailních informací o zpožděních při probuzení na základě signálu časovače.
- Virtualizácia a bezpečnosť
- Bylo přidáno systémové volání memfd_secret(), které umožňuje vytvořit soukromou oblast paměti v izolovaném adresním prostoru, viditelnou pouze pro vlastnický proces, neodrážející se v jiných procesech a přímo nedostupnou jádru.
- V systému filtrování systémových volání seccomp, při přenášení zpracovatelů blokování do uživatelského prostoru, byla poskytnuta možnost použití jedné atomární operace pro vytváření souborového deskriptoru pro izolovanou úlohu a jeho vracení během zpracování systémového volání. Navrhovaná operace řeší problémy s přerušením zpracovatele v uživatelském prostoru při obdržení signálu.
- Byl přidán nový mechanismus pro správu omezení zdrojů v prostoru názvů identifikátorů uživatelů, který váže jednotlivé počitadla rlimit na uživatele v ‚user namespace‘. Změna řeší problém s aplikací sdílených počitadla zdrojů při spuštění procesů jedním uživatelem v různých kontejnerech.
- V hypervizoru KVM pro systémy ARM64 byla přidána možnost použití v hostitelských systémech rozšíření MTE (MemTag, Memory Tagging Extension), které umožňuje přiřazení tagů k každé operaci alokace paměti a organizaci kontroly správnosti používání ukazatelů za účelem zablokování zneužití zranitelností, vyplývajících z přístupu k již uvolněným blokům paměti, přetečení zásobníku, pokusům o přístup před inicializací a použití mimo aktuální kontext.
- Prostredky platformy ARM64 na autentifikáciu ukazovateľov (Pointer Authentication) môžu teraz byť samostatne nastavené pre jadro a používateľský priestor. Technológia umožňuje využívať špecializované pokyny ARM64 na overovanie návratových adries pomocou digitálnych podpisov, ktoré sú uložené v nevyužitých horných bitoch samotného ukazovateľa.
- Do User-mode Linux bola pridaná podpora používania ovládačov pre PCI zariadenia s virtuálnou zbernicou PCI, implementovanou ovládačom PCI-over-virtio.
- Pre systémy x86 bola pridaná podpora paravirtualizovaného zariadenia virtio-iommu, ktoré umožňuje posielať IOMMU požiadavky, ako ATTACH, DETACH, MAP a UNMAP, cez transport virtio bez emulácie tabuliek stránok pamäte.
- Pre CPU Intel, počnúc rodinou Skylake až po Coffee Lake, je predvolene zakázané využívanie rozšírení Intel TSX (Transactional Synchronization Extensions), ktoré poskytujú prostriedky na zvýšenie výkonu viacvláknových aplikácií prostredníctvom dynamického vynechávania nadbytočných operácií synchronizácie. Rozšírenia sú zakázané kvôli možnosti uskutočnenia útokov Zombieload, manipulujúcich s únikom údajov prostredníctvom vedľajších kanálov, ku ktorému dochádza pri práci mechanizmu asynchrónneho prerušovania operácií (TAA, TSX Asynchronous Abort).
- Sieťový subsystém
- Pokračuje integrácia do jadra MPTCP (MultiPath TCP), rozšírenia protokolu TCP na organizovanie práce TCP spojenia s dodávkou paketov súčasne cez viacero trás prostredníctvom rôznych sieťových rozhraní, priradených k rôznym IP adresy. V novej verzii bol pridaný mechanizmus na definovanie vlastných politík hashovania prevádzky pre IPv4 a IPv6 (multipath hash policy), ktorý umožňuje z používateľského priestoru určiť, ktoré z polí v paketochn, vrátane zapuzdrených, budú použité pri výpočte hash, určujúceho výber cesty pre paket.
- Do virtuálneho transportu virtio bola pridaná podpora soketov SOCK_SEQPACKET (usporiadaný a spoľahlivý prenos datagramov).
- Možnosti mechanizmu soketů SO_REUSEPORT byly rozšířeny, což umožňuje více poslouchajícím soketům připojit se k jednomu portu pro příjem spojení s distribucí příchozích požadavků mezi všemi sokety připojenými přes SO_REUSEPORT, což usnadňuje vytváření vícerozměrných serverových aplikací. Nová verze přidala prostředky pro předání kontroly jinému soketu v případě selhání při zpracování požadavku zpočátku vybraným soketem (řeší problém se ztrátou jednotlivých spojení při restartování služeb).
- Zariadenie
- Ovladač amdgpu nyní podporuje nové řady GPU AMD Radeon RX 6000, vyvíjených pod kódovými názvy "Beige Goby" (Navi 24) a "Yellow Carp", a také byla zlepšena podpora GPU Aldebaran (gfx90a) a APU Van Gogh. Přidána možnost současného provozu s více panely eDP. Pro APU Renoir byla přidána podpora šifrovaných vyrovnávacích pamětí ve video paměti (TMZ, Trusted Memory Zone). Přidána podpora horkého odpojování grafických karet (hot-unplug). U GPU Radeon RX 6000 (Navi 2x) a starších GPU AMD je nyní ve výchozím nastavení aktivována podpora mechanismu úspory energie ASPM (Active State Power Management), který byl dříve povolen pouze pro GPU Navi 1x, Vega a Polaris.
- Byla přidána podpora sdílené virtuální paměti (SVM, shared virtual memory) pro čipy AMD na základě subsystému HMM (Heterogeneous memory management), který umožňuje používat zařízení s vlastními řídicími bloky paměti (MMU, memory management unit), jež mohou získat přístup k hlavní paměti. Mezi jinými výhodami může HMM uspořádat společný adresní prostor mezi GPU a CPU, ve kterém GPU může získat přístup k hlavní paměti procesu.
- Byla přidána počáteční podpora technologie AMD Smart Shift, která dynamicky mění parametry spotřeby energie CPU a GPU na noteboocích s čipovou sadou a grafickou kartou AMD, aby se zvýšila výkon při hraní her, editaci videa a 3D-renderování.
- V ovladači i915 pro grafické karty Intel byla přidána podpora čipů Intel Alderlake P.
- Byl přidán ovladač drm/hyperv pro virtuální grafický adaptér Hyper-V.
- Byla přidána podpora počítače All-in-One Raspberry Pi 400.
- Byl přidán ovladač dell-wmi-privacy pro podporu hardwarových vypínačů kamery a mikrofonu dodávaných v noteboocích Dell.
- Pro noteboocích Lenovo byl přidán WMI rozhraní pro změnu parametrů BIOS prostřednictvím sysfs /sys/class/firmware-attributes/.
- Rozšírená podpora zariadení s rozhraním USB4.
- Pridaná podpora zvukových kariet a kodekov AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 a Texas Instruments TAS2505. Zlepšená podpora zvuku na notebookoch HP a ASUS. Pridané opravy na zníženie oneskorení pred spustením zvuku na zariadeniach s rozhraním USB.
Zdroj: opennet.ru
