Jádro Linux 5.14

Jádro Linux 5.14

Po dvou měsících vývoje Linus Torvalds představil vydání jádra Linux 5.14. Mezi nejvýznamnější změny patří: nové systémové volání quotactl_fd() a memfd_secret(), odstranění ovladačů ide a raw, nový řadič priorit vstupu/výstupu pro cgroup, plánovací režim úloh SCHED_CORE, infrastruktura pro vytváření zavaděčů ověřených BPF programů.

Do nové verze bylo zařazeno 15883 oprav od 2002 vývojářů, velikost patche je 69 MB (změny zasáhly 12580 souborů, přidáno 861501 řádků kódu, odstraněno 321654 řádků). Přibližně 47% všech změn v 5.14 se týká ovladačů zařízení, asi 14% změn souvisí s aktualizací kódu specifického pro hardwarové architektury, 13% souvisí s network stack, 3% s souborovými systémy a 3% s interními subsystémy jádra.

Hlavní novinky:

  • diskový subsystém, vstup/výstup a souborové systémy:
    • pro cgroup realizováno nový řadič priorit vstupu/výstupu — rq-qos, který může spravovat prioritu zpracování požadavků k blokovým zařízením generovaných členy každé cgroup. Podpora nového prioritního řadiče byla přidána do plánovače I/O mq-deadline;
    • ve souborovém systému ext4 byla implementována nový ioctl příkaz EXT4_IOC_CHECKPOINT, který nuceně zapisuje na disk všechny čekající transakce z deníku a s nimi spojené buffery, a také přepisuje oblast používající deník ve skladu. Změna byla připravena v rámci iniciativy na prevenci úniků informací ze souborových systémů;
    • v Btrfs byly provedeny optimalizace výkonu: vyloučením nadbytečného journalingu rozšířených atributů během vykonávání fsync se výkon intenzivních operací s rozšířenými atributy zvýšil až o 17%. Navíc byla při provádění zkracovacích operací, které se netýkají extents, deaktivována plná synchronizace, což zkrátilo dobu provádění operace o 12%. Do sysfs byla přidána možnost omezit propustnost I/O během kontroly FS. Byly přidány ioctl volání pro zrušení operací změny velikosti a odstranění zařízení;
    • v XFS byla přepracována implementace vyrovnávací paměti, která byla převedena na alokaci paměťových stránek v dávkovém režimu. Zlepšena efektivita práce vyrovnávací paměti;
    • V F2FS byla přidána možnost provozu pouze pro čtení a implementován režim ukládání do mezipaměti komprimovaných bloků (compress_cache) pro zvýšení výkonu náhodného čtení. Byla implementována podpora komprese souborů odrážejících se v paměti pomocí operace mmap(). Pro selektivní vypnutí komprese souborů podle masky byla nabídnuta nová možnost připojení nocompress;
    • V ovladači exFAT byla provedena práce na zlepšení kompatibility se zařízeními některých digitálních fotoaparátů;
    • Byl přidán systémový volání quotactl_fd(), které umožňuje spravovat kvóty nikoli prostřednictvím souboru speciálního zařízení, ale prostřednictvím odkazu na souborový deskriptor spojený se souborovým systémem, na který se kvóta vztahuje;
    • Ze systému byly odstraněny staré ovladače pro bloková zařízení s rozhraním IDE, které již byly dávno nahrazeny subsystémem libata. Podpora starých zařízení byla zachována v plném rozsahu, změny se týkají pouze možnosti použití starých ovladačů, u kterých byly úložiště označena jako /dev/hd*, nikoli /dev/sd*;
    • Ze systému byl odstraněn ovladač „raw“, který poskytoval nebufferovaný přístup k blokovým zařízením prostřednictvím rozhraní /dev/raw. Tato funkčnost je již dlouho realizována v aplikacích pomocí příznaku O_DIRECT;
  • Paměť a systémové služby:
    • V plánovači úloh byl implementován nový režim plánování SCHED_CORE, který umožňuje řídit, které procesy mohou společně běžet na jednom jádru CPU. Každému procesu může být přidělen cookie identifikátor, který určuje oblast důvěry mezi procesy (například příslušnost jednomu uživateli nebo kontejneru). Při organizaci provádění kódu může plánovač zajistit sdílení jednoho jádra CPU pouze pro procesy související s jedním vlastníkem, což může být používáno k blokování některých útoků třídy Spectre tím, že se zabrání vykonávání důvěryhodných a nedůvěryhodných úloh ve stejném vlákně SMT (Hyper Threading);
    • Pro mechanismus cgroup byla implementována podpora operace kill, která umožňuje najednou ukončit všechny procesy přidružené ke skupině (odeslat SIGKILL) prostřednictvím zápisu „1“ do virtuálního souboru cgroup.kill;
    • Byly rozšířeny možnosti reakce na detekci rozdělených zámků („split lock“), které nastávají při přístupu k nevyrovnaným datům v paměti, když při provádění atomární instrukce data překročí dvě cache linie CPU. Tyto zámky vedou k výraznému poklesu výkonu, proto byla dříve poskytována možnost vynuceného ukončení aplikace, která zámek vyvolala. V nové verzi byla přidána volba příkazového řádku jádra „split_lock_detect=ratelimit:N“, která umožňuje nastavit systémový limit na intenzitu operací zámků za sekundu, po jehož překročení bude jakýkoli proces, který se stal zdrojem rozděleného zámku, namísto ukončení vynuceně zastaven na 20 ms.
    • V ovladači CFS pro cgroup byla implementována možnost stanovení limitů, které jsou omezené zadaným časem, což umožňuje lepší regulaci zátěží citlivých na zpoždění. Například nastavení hodnoty cpu.cfs_quota_us na 50000 a cpu.cfs_period_us na 100000 umožní skupině procesů strávit každých 100 ms 50 ms času CPU.
    • byla přidána Základní infrastruktura pro vytváření načítačů BPF programů, která v budoucnu umožní načítání pouze BPF programů podepsaných důvěryhodným digitálním klíčem.
    • Byla přidána nová futex operace FUTEX_LOCK_PI2, která používá monotónní časovač pro výpočet časového limitu, který zohledňuje čas strávený systémem v režimu spánku.
    • Pro architekturu RISC-V byla implementována podpora velkých paměťových stránek (Transparent Huge-Pages) a možnost použití mechanismu KFENCE k detekci chyb při práci s paměťmi.
    • Ve systémovém volání madvise(), které poskytuje prostředky pro optimalizaci správy paměti procesu, byly přidány byly přidány příznaky MADV_POPULATE_READ a MADV_POPULATE_WRITE pro generování "page fault" ve všech stránkách paměti, které jsou reflektovány pro operace čtení nebo zápisu, aniž by bylo skutečně provedeno čtení nebo zápis (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 proaktivnímu provedení zpracovatele "page fault" najednou pro všechny nealokované stránky, aniž by se čekalo na skutečný přístup k nim.
    • v systému unit-testování kunit byla přidána podpora spuštění testů v prostředí QEMU;
    • byly přidány nové trasovače: „osnoise“ pro sledování zpoždění v aplikacích způsobených zpracováním přerušení a „timerlat“ pro zobrazení podrobných informací o zpožděních při probuzení na základě signálu časovače;
  • virtualizace a zabezpečení:
    • přidán systémový hovor memfd_secret(), který umožňuje vytvořit soukromou oblast paměti v izolovaném adresním prostoru, viditelnou pouze procesem-vlastníkem, neodrážející se v jiných procesech a přímo nedostupnou pro jádro;
    • v systému filtrace systémových volání seccomp při výstupu blokovacích handlerů do uživatelského prostoru byla poskytnuta možnost použití jedné atomární operace pro vytvoření souborového deskriptoru pro izolovanou úlohu a jeho vrácení při zpracování systémového volání. Navrhovaná operace řeší problém s přerušením handleru v uživatelském prostoru při přijetí signálu;
    • přidán nový mechanismus pro správu omezení zdrojů v prostoru jmen identifikátorů uživatelů, který spojuje jednotlivé počítadla rlimit s uživatelem v „user namespace“. Změna řeší problém se používáním sdílených počítadel 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žívání v hostitelských systémech rozšíření MTE (MemTag, Memory Tagging Extension), které umožňuje přiřadit tagy k každé operaci alokace paměti a organizovat kontrolu správnosti použití ukazatelů k blokování využívání zranitelností způsobených přístupem k již uvolněným blokům paměti, přetečením bufferu, přístupy před inicializací a používáním mimo aktuální kontext;
    • prostředky poskytované platformou ARM64 pro autentizaci ukazatelů (Pointer Authentication) nyní mohou být odděleně nastaveny pro jádro a uživatelský prostor. Technologie umožňuje používat specializované instrukce ARM64 pro kontrolu adres návratů pomocí digitálních podpisů, které jsou uloženy v nepoužívaných horních bitech samotného ukazatele;
    • v User-mode Linux byla přidána podpora použití ovladačů k PCI zařízením s virtuální sběrnicí PCI, realizovanou ovladačem PCI-over-virtio;
    • Pro systémy x86 byla přidána podpora para-virtualizovaného zařízení virtio-iommu, umožňující odesílat IOMMU požadavky, jako jsou ATTACH, DETACH, MAP a UNMAP, přes transport virtio bez emulace tabulek stránek paměti;
    • Pro procesory Intel, počínaje rodinou Skylake a konče Coffee Lake, je výchozí hodnotou zakázáno používání rozšíření Intel TSX (Transactional Synchronization Extensions), která poskytují prostředky pro zvýšení výkonu vícerozměrných aplikací prostřednictvím dynamického vyloučení nadbytečných synchronizačních operací. Rozšíření jsou deaktivována kvůli možnosti provádění útoků Zombieload, manipulujících s únikem informací prostřednictvím bočních kanálů, vznikajících při práci mechanismu asynchronních přerušeních operací (TAA, TSX Asynchronous Abort);
  • síťová subsystém:
    • byla pokračována integrace do jádra MPTCP (MultiPath TCP), rozšíření protokolu TCP pro zajištění fungování TCP spojení s doručováním paketů současně přes několik tras prostřednictvím různých síťových rozhraní, připojených k různým IP adresám. V novém vydání přidán mechanismus pro definování vlastních politik hashování provozu pro IPv4 a IPv6 (multipath hash policy), umožňující z uživatelského prostoru určit, které z polí v paketech, včetně zapouzdřených, budou použity při výpočtu hash, určující výběr cesty pro paket;
    • do virtuálního transportu virtio přidána podpora soketů SOCK_SEQPACKET (uspořádaný a spolehlivý přenos datagramů);
    • rozšířena funkčnost mechanismu soketů SO_REUSEPORT, který umožňuje několika naslouchajícím soketům současně se připojit k jednomu portu pro příjem spojení s rozdělením příchozích požadavků současně mezi všemi připojenými přes SO_REUSEPORT sokety, což usnadňuje vytváření vícerozměrných serverových aplikací. V nové verzi byly přidány prostředky pro předávání řízení jinému soketu v případě selhání zpracování požadavku původně vybraným soketem (řeší problém s ztrátou jednotlivých spojení při restartu služeb);
  • hardware:
    • v ovladači amdgpu byla implementována podpora nových sérií GPU AMD Radeon RX 6000 vyvíjených pod kódovými názvy „Beige Goby“ (Navi 24) a „Yellow Carp“, a také byla vylepšena podpora GPU Aldebaran (gfx90a) a APU Van Gogh. Přidána možnost současného provozu s několika panely eDP. Pro APU Renoir byla implementována podpora pro práci se zašifrovanými vyrovnávacími pamětmi ve video paměti (TMZ, Trusted Memory Zone). Přidána podpora pro horké odpojení grafických karet (hot-unplug). Pro GPU Radeon RX 6000 (Navi 2x) a starší GPU AMD je výchozí podporována funkce úspory energie ASPM (Active State Power Management), která byla dříve aktivována pouze pro GPU Navi 1x, Vega a Polaris;
    • pro čipy AMD byla přidána podpora sdílené virtuální paměti (SVM, shared virtual memory) na bázi subsystému HMM (Heterogeneous memory management), která umožňuje využití zařízení s vlastními bloky řízení paměti (MMU, memory management unit), které mohou přistupovat k hlavní paměti. Včetně toho umožňuje HMM organizovat společný adresní prostor mezi GPU a CPU, ve kterém GPU může přistupovat 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 čipsetem a grafickou kartou AMD pro zvýšení výkonu při hraní her, editaci videa a 3D renderování;
    • v ovladači i915 pro grafické karty Intel je zahrnuta podpora čipů Intel Alderlake P;
    • byl přidán ovladač drm/hyperv pro virtuální grafický adaptér Hyper-V;
    • přidán grafický ovladač simpledrm, využívající pro výstup framebuffer EFI-GOP nebo VESA, poskytovaný firmwarovou UEFI nebo BIOSem. Hlavním účelem ovladače je poskytnout možnosti grafického výstupu v počátečních fázích spuštění, než se stane možné využití plnohodnotného DRM ovladače. Ovladač lze také použít jako dočasné řešení pro hardware, pro který dosud nejsou k dispozici nativní DRM ovladače;
    • byla přidána podpora počítače typu all-in-one Raspberry Pi 400;
    • byl přidán ovladač dell-wmi-privacy pro podporu dodávaných v noteboocích Dell hardwarových vypínačů kamer a mikrofonů;
    • pro noteboocích Lenovo přidán WMI rozhraní pro změnu nastavení BIOSu prostřednictvím sysfs /sys/class/firmware-attributes/;
    • byla rozšířena podpora zařízení s rozhraním USB4;
    • byla přidána podpora zvukových karet a kodeků AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 a Texas Instruments TAS2505. Vylepšená podpora zvuku na noteboocích HP a ASUS. Byly přidány záplaty pro snížení latence před spuštěním zvuku na zařízeních s USB rozhraním.

Zdroj – opennet.ru.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster