Vydání jádra Linux 5.14

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

Nová verze zahrnuje 15883 oprav od 2002 vývojářů, velikost patche je 69 MB (změny se dotkly 12580 souborů, přidáno 861501 řádků kódu, odstraněno 321654 řádků). Přibližně 47 % všech dodaných změn ve verzi 5.14 se týká ovladačů zařízení, přibližně 14 % změn souvisí s aktualizací kódu specifického pro hardwarové architektury, 13 % souvisí se síťovým zásobníkem, 3 % s file systémy a 3 % s vnitřními subsystémy jádra.

Hlavní novinky:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • Pro cgroup byl realizován nový řadič priorizace vstup/výstup — rq-qos, který může řídit prioritu zpracování požadavků na bloková zařízení generovaných členy každé cgroup. Podpora nového řadiče priority byla přidána do plánovače vstup/výstup mq-deadline.
    • V souborovém systému ext4 byla zavedena nová ioctl příkaz EXT4_IOC_CHECKPOINT, která povinně zapisuje na disk všechny čekající transakce z deníku a s nimi spojené buffery, a také přepisuje oblast používanou deníkem ve skladu. Změna byla připravena v rámci iniciativy na zabránění únikům informací ze souborových systémů.
    • V Btrfs byly provedeny optimalizace výkonu: vyloučením nadbytečného zaznamenávání rozšířených atributů při vykonávání fsync se výkon intenzivních operací s rozšířenými atributy zvýšil až o 17 %. Dále bylo při provádění operací ořezávání, které se netýkají extentů, vypnuto provádění úplné synchronizace, což zkrátilo dobu vykonání operace o 12 %. Do sysfs byla přidána konfigurace pro omezení propustnosti vstup/výstup při kontrole 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ího cache, která byla převedena na alokaci paměťových stránek v dávkovém režimu. Byla zvýšena účinnost práce cache.
    • Ve F2FS byla přidána možnost provozu v režimu pouze pro čtení a implementován režim ukládání do vyrovnávací paměti komprimovaných bloků (compress_cache) pro zlepšení výkonu náhodného čtení. Byla zavedená podpora komprese souborů odražených do paměti pomocí operace mmap(). Pro selektivní vypnutí komprese souborů podle masky byla navržena nová montážní volba nocompress.
    • V ovladači exFAT byly provedeny úpravy pro zlepšení kompatibility se skladovacími zařízeními některých digitálních kamer.
    • Byl přidán systémový hovor quotactl_fd(), který umožňuje spravovat kvóty nikoli prostřednictvím souboru speciálního zařízení, ale prostřednictvím specifikace popisovače souboru, který souvisí s file systémem, pro který se kvóta používá.
    • Z jádra byly odstraněny staré ovladače pro bloková zařízení s rozhraním IDE, které již dávno nahradila podsystém libata.
    • Z jádra byl odstraněn ovladač „raw“, který poskytoval nebufrovaný přístup k blokovým zařízením prostřednictvím rozhraní /dev/raw. Uvedená funkčnost je již dlouho implementována v aplikacích pomocí příznaku O_DIRECT.
  • Paměť a systémové služby
    • V plánovači úloh byl zaveden nový režim plánování SCHED_CORE, který umožňuje řízení toho, které procesy mohou být prováděny společně 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 patřící 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 spojené s jedním vlastníkem, což může být použito k blokování některých útoků třídy Spectre tím, že se zabrání provádění důvěryhodných a nedůvěryhodných úloh ve stejném vláknu SMT (Hyper Threading).
    • Pro cgroup byla implementována podpora operace kill, která umožňuje jednorázově ukončit všechny procesy vázané na skupinu (odeslat SIGKILL) zápisem „1“ do virtuálního souboru cgroup.kill.
    • Byly rozšířeny možnosti spojené s reakcí na detekci rozdělených zámků („split lock“), které vznikají při přístupu k nevyrovnaným datům v paměti, protože při provádění atomární instrukce data zasahují do dvou cache řádků CPU. Tyto zámky vedou k výraznému poklesu výkonu, proto dříve byla k dispozici možnost nuceného ukončení aplikace, která zámek způsobila. V nové verzi byl přidán parametr příkazové řádky jádra „split_lock_detect=ratelimit:N“, který umožňuje určit systémový limit intenzity operací zámku za sekundu, po jehož překročení bude jakýkoli proces, který je zdrojem rozděleného zámku, místo ukončení nuceně zastaven na 20 ms.
    • V řadiči propustnosti cgroup CFS (CFS bandwidth controller), který určuje, kolik procesorového času může být přiděleno každé cgroup, byla implementována možnost definice limitů, omezených stanovenou dobou trvání, což umožňuje lépe regulovat zátěže citlivé 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ů trávit každých 100 ms 50 ms procesorového času.
    • Byla přidána počáteční infrastruktura pro vytváření zavaděčů BPF programů, která v budoucnu umožní nahrává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 dobu strávenou 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 využití mechanismu KFENCE pro odhalování chyb při práci s pamětí.
    • Do systémového volání madvise() 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, které jsou zrcadleny pro operace čtení nebo zápisu, aniž by došlo ke skutečnému čtení nebo zápisu (prefault). Použití těchto příznaků může být užitečné pro snížení latence při práci programu, díky proaktivnímu provádění handleru "page fault" najednou pro všechny nealokované stránky, aniž by čekal na skutečný přístup k nim.
    • Do systému unit-testování kunit byla přidána podpora spuštění testů v prostředí QEMU.
    • Byly přidány nové traséry: "osnoise" pro sledování latencí v aplikacích způsobených zpracováním přerušení a "timerlat" pro výstup podrobných informací o latencích při probuzení dle signálu časovače.
  • Virtualizace a bezpečnost
    • Bylo přidáno systémové volání memfd_secret(), které umožňuje vytvořit privátní paměťovou oblast v izolovaném adresním prostoru, viditelnou jen pro proces vlastníka, nezrcadlenou do jiných procesů a přímo nedostupnou jádru.
    • V systému filtrování systémových volání seccomp, při přenosu obslužných routine do uživatelského prostoru, byla poskytnuta možnost použití jedné atomické operace k vytvoření souborového deskriptoru pro izolovaný úkol a jeho vrácení při zpracování systémového volání. Navržená operace vyřeší problém s přerušením obslužné routine v uživatelském prostoru při přijetí signálu.
    • Byl přidán nový mechanismus pro řízení omezení prostředků v prostoru jmen identifikátorů uživatelů, který váže jednotlivé počitadla rlimit k uživateli v "user namespace". Tato změna řeší problém s použitím sdílených počitadla prostředků při spouštění procesů jedním uživatelem v různých kontejnerech.
    • V hypervisoru 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řadit tagy k každé operaci alokace paměti a organizovat kontrolu správnosti používání ukazatelů, aby se zabránilo zneužití zranitelností, které jsou způsobeny přístupem k již uvolněným blokům paměti, přetečením bufferu, přístupem před inicializací a použitím mimo aktuální kontext.
    • Nástroje platformy ARM64 pro autentizaci ukazatelů (Pointer Authentication) mohou nyní být nastaveny samostatně pro jádro a uživatelský prostor. Technologie umožňuje využití specializovaných instrukcí ARM64 pro kontrolu adres návratu pomocí digitálních podpisů, které jsou uloženy v nevyužitých horních bitech samotného ukazatele.
    • Do User-mode Linux byla přidána podpora pro použití ovladačů k PCI zařízením s virtuální sběrnicí PCI, která je realizována ovladačem PCI-over-virtio.
    • Pro systémy x86 byla přidána podpora paravirtualizovaného zařízení virtio-iommu, které umožňuje odesílat IOMMU dotazy, jako je ATTACH, DETACH, MAP a UNMAP, přes transport virtio bez emulace paměťových stránek.
    • Pro CPU Intel, počínaje rodinou Skylake a konče Coffee Lake, je ve výchozím nastavení zakázáno používání rozšíření Intel TSX (Transactional Synchronization Extensions), které poskytují prostředky na zlepšení výkonu vícetenvovaných aplikací díky dynamickému vyloučení zbytečných synchronizačních operací. Rozšíření jsou zakázána kvůli možnosti provádění útoků Zombieload, které manipulují s úniky informací přes boční kanály, které vznikají při práci mechanismu asynchronního přerušení operací (TAA, TSX Asynchronous Abort).
  • Síťová subsystém
    • Pokračuje integrace rozšíření protokolu TCP MPTCP (MultiPath TCP) do jádra pro organizaci TCP připojení s doručováním paketů současně několika různými trasami prostřednictvím různých síťových rozhraní, připojených k různým. IP adresy. V novém vydání byla přidána možnost nastavit vlastní politiky hashování provozu pro IPv4 a IPv6 (multipath hash policy), které umožňují z uživatelského prostoru definovat, které z polí v paketech, včetně zanořených, budou použity při výpočtu hash, určujícím výběr cesty pro paket.
    • Do virtuálního transportu virtio byla přidána podpora soketů SOCK_SEQPACKET (uspořádaný a spolehlivý přenos datagramů).
    • Byly rozšířeny možnosti mechanismu soketů SO_REUSEPORT, který umožňuje několika odposlouchávajícím soketům připojit se k jednomu portu pro přijímání spojení s rozdělením přicházejících dotazů mezi všemi připojenými sokety přes SO_REUSEPORT, což usnadňuje vytváření vícetenvovaných serverových aplikací. V nové verzi byly přidány prostředky pro předání řízení jinému soketu v případě selhání při zpracování dotazu původně vybraným soketem (řeší problém ztráty jednotlivých spojení při restartování služeb).
  • Hardware
    • Ovladač amdgpu nyní podporuje nové série GPU AMD Radeon RX 6000, vyvíjené pod kódovými názvy „Beige Goby“ (Navi 24) a „Yellow Carp“, a také vylepšenou podporu GPU Aldebaran (gfx90a) a APU Van Gogh. Byla přidána možnost současného připojení více panelů eDP. Pro APU Renoir byla zavedena podpora pro práci se šifrovanými buffery ve video paměti (TMZ, Trusted Memory Zone). Přidána podpora pro hot-unplug grafických karet. U GPU Radeon RX 6000 (Navi 2x) a starších GPU AMD je nyní ve výchozím nastavení povolena podpora mechanismu úspory energie ASPM (Active State Power Management), který byl dříve aktivován pouze pro GPU Navi 1x, Vega a Polaris.
    • Byla přidána podpora sdílené virtuální paměti (SVM, shared virtual memory) na bázi pod systému HMM (Heterogeneous memory management) pro čipy AMD, což umožňuje použití zařízení s vlastními bloky řízení paměti (MMU, memory management unit), které mohou přistupovat k hlavní paměti. Pomocí HMM je také možné uspořádat společný adresní prostor mezi GPU a CPU, ve kterém má GPU 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 čipsetem a grafickou kartou AMD, aby se zvýšila výkonnost při hraní her, úpravě videa a 3D renderingu.
    • V ovladači i915 pro grafické karty Intel byla povolena 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 pro počítač typu 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 úpravu nastavení BIOSu přes sysfs /sys/class/firmware-attributes/.
    • Byla rozšířena podpora zařízení s rozhraním USB4.
    • Byla přidána podpora pro zvukové karty a codec AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 a Texas Instruments TAS2505. Byla vylepšena podpora zvuku na noteboocích HP a ASUS. Byly přidány patche pro snížení latencí před začátkem přehrávání zvuku na zařízeních s rozhraním USB.

Zdroj: opennet.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