Vydání jádra Linux 5.17

Po dvou měsících vývoje představil Linus Torvalds vydání linuxového jádra 5.17. Mezi nejpozoruhodnější změny patří nový systém řízení výkonu pro procesory AMD, schopnost rekurzivně mapovat uživatelská ID v souborových systémech, podpora přenosných kompilovaných programů BPF, přechod generátoru pseudonáhodných čísel na algoritmus BLAKE2s, nástroj RTLA pro analýzu provádění v reálném čase, nový backend fscache pro ukládání síťových souborových systémů do mezipaměti, možnost připojovat jména k anonymním operacím mmap.

Nová verze obsahuje 14203 1995 oprav od 37 11366 vývojářů, velikost opravy je 506043 MB (změny se dotkly 250954 44 souborů, bylo přidáno 5.17 16 řádků kódu, smazáno 15 4 řádků). Přibližně 4 % všech změn zavedených v XNUMX souvisí s ovladači 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.17:

  • Diskový subsystém, I/O a souborové systémy
    • Implementována možnost vnořeného mapování ID uživatelů připojených souborových systémů, sloužící k porovná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. Přidaná funkce umožňuje rekurzivně používat mapování nad systémy souborů, pro které je mapování již aplikováno.
    • Subsystém fscache, používaný k organizaci ukládání do mezipaměti v místním souborovém systému dat přenášených prostřednictvím síťových souborových systémů, byl zcela přepsán. Nová implementace se vyznačuje výrazným zjednodušením kódu a nahrazením složitých operací plánování a sledování stavů objektů jednoduššími mechanismy. Podpora pro nový fscache je implementována v systému souborů CIFS.
    • Subsystém sledování událostí ve fanotify FS implementuje nový typ události FAN_RENAME, který vám umožňuje okamžitě zachytit operaci přejmenování souborů nebo adresářů (dříve se ke zpracování přejmenování používaly dvě samostatné události FAN_MOVED_FROM a FAN_MOVED_TO).
    • Souborový systém Btrfs má optimalizované protokolování a operace fsync pro velké adresáře, implementované pouze kopírováním indexových klíčů a snížením množství protokolovaných metadat. Byla poskytnuta podpora pro indexování a vyhledávání podle velikosti záznamů volného místa, což snížilo latenci o přibližně 30 % a zkrátilo dobu vyhledávání. Povoleno přerušit operace defragmentace. Možnost přidávat zařízení při balancování mezi disky je zakázána, tzn. při připojování souborového systému s volbou skip_balance.
    • Byla navržena nová syntaxe pro připojení souborového systému Ceph, která řeší stávající problémy spojené s vazbou na IP adresy. Kromě IP adres můžete nyní k identifikaci serveru použít i identifikátor clusteru (FSID): mount -t ceph [chráněno e-mailem]_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • Souborový systém Ext4 se přesunul na nové rozhraní API pro připojení, které odděluje kroky analýzy možností připojení a konfigurace superbloku. Zrušili jsme podporu pro možnosti připojení lazytime a nolazytime, které byly přidány jako dočasná změna, aby se usnadnil přechod util-linux na používání příznaku MS_LAZYTIME. Přidána podpora pro nastavení a čtení štítků ve FS (ioctl FS_IOC_GETFSLABEL a FS_IOC_SETFSLABEL).
    • NFSv4 přidal podporu pro práci v souborových systémech nerozlišujících velká a malá písmena v názvech souborů a adresářů. NFSv4.1+ přidává podporu pro definování agregovaných relací (trunkování).
  • Paměťové a systémové služby
    • Přidán ovladač amd-pstate pro zajištění dynamického řízení frekvence pro optimální výkon. Ovladač podporuje procesory AMD a APU počínaje generací Zen 2, vyvinutou společně s Valve a je zaměřena na zlepšení účinnosti hospodaření s energií. Pro adaptivní změny frekvence se používá mechanismus CPPC (Collaborative Processor Performance Control), který umožňuje přesněji měnit indikátory (není omezen na tři úrovně výkonu) a rychleji reagovat na změny stavu než dříve používaný P-stav založený na ACPI. ovladače (CPUFreq).
    • Subsystém eBPF nabízí obslužnou rutinu bpf_loop(), která poskytuje alternativní způsob organizace smyček v programech eBPF, rychlejší a jednodušší pro ověření ověřovatelem.
    • Na úrovni jádra je implementován mechanismus CO-RE (Compile Once - Run Everywhere), který umožňuje zkompilovat kód programů eBPF pouze jednou a použít speciální univerzální zavaděč, který přizpůsobí načítaný program aktuálnímu jádru a typům BTF. (Formát typu BPF).
    • Oblasti soukromé anonymní paměti (přidělované přes malloc) je možné přiřadit jména, což může zjednodušit ladění a optimalizaci spotřeby paměti v aplikacích. Jména se přidělují přes prctl s příznakem PR_SET_VMA_ANON_NAME a zobrazují se v /proc/pid/maps a /proc/pid/smaps ve tvaru "[anon: ]“.
    • Plánovač úloh poskytuje v /proc/PID/sched sledování a zobrazování času stráveného procesy ve stavu nuceného klidu, což se používá například ke snížení zátěže při přehřátí procesoru.
    • Přidán modul gpio-sim, určený pro simulaci čipů GPIO pro testování.
    • Do příkazu "perf ftrace" byl přidán dílčí příkaz "latency" pro generování histogramů s informacemi o latenci.
    • Přidána sada nástrojů „RTLA“ pro analýzu práce v reálném čase. Zahrnuje nástroje jako osnoise (určuje vliv operačního systému na provedení úlohy) a timerlat (mění zpoždění související s časovačem).
    • Druhá série záplat byla integrována s implementací konceptu stránkových folií, která se podobají složeným stránkám, ale mají vylepšenou sémantiku a jasnější organizaci práce. Použití svazků umožňuje urychlit správu paměti v některých subsystémech jádra. Navrhované opravy dokončily převod mezipaměti stránek na použití svazků a přidaly počáteční podporu pro svazky v systému souborů XFS.
    • Přidán režim sestavení „make mod2noconfig“, který generuje konfiguraci, která shromažďuje všechny zakázané podsystémy ve formě modulů jádra.
    • Požadavky na verzi LLVM/Clang, kterou lze použít k sestavení jádra, byly zvýšeny. Build nyní vyžaduje vydání alespoň LLVM 11.
  • Virtualizace a bezpečnost
    • Je navržena aktualizovaná implementace generátoru pseudonáhodných čísel RDRAND, zodpovědného za provoz zařízení /dev/random a /dev/urandom, pozoruhodná pro přechod na používání hašovací funkce BLAKE2s místo SHA1 pro operace míšení entropie. Tato změna zlepšila zabezpečení generátoru pseudonáhodných čísel odstraněním problematického algoritmu SHA1 a odstraněním přepisování inicializačního vektoru RNG. Vzhledem k tomu, že algoritmus BLAKE2s je ve výkonu lepší než SHA1, mělo jeho použití také pozitivní vliv na výkon.
    • Přidána ochrana proti zranitelnostem v procesorech způsobeným spekulativním prováděním instrukcí po operacích nepodmíněného skoku vpřed. Problém nastává z důvodu preemptivního zpracování instrukcí bezprostředně následujících po instrukci větve v paměti (SLS, Straight Line Speculation). Povolení ochrany vyžaduje sestavení s aktuálně testovacím vydáním GCC 12.
    • Přidán mechanismus pro sledování počítání referencí (refcount, reference-count), jehož cílem je snížit počet chyb v počítání referencí, které vedou k přístupu do paměti po jejím uvolnění. Mechanismus je v současné době omezen na síťový subsystém, ale v budoucnu jej lze přizpůsobit dalším částem jádra.
    • Byly implementovány rozšířené kontroly nových záznamů v tabulce stránek paměti procesu, které umožňují detekovat určité typy poškození a zastavit systém a blokovat útoky v rané fázi.
    • Přidána možnost rozbalovat moduly jádra přímo samotným jádrem, a nikoli obslužnou rutinou v uživatelském prostoru, což umožňuje pomocí modulu LoadPin LSM zajistit, aby moduly jádra byly načteny do paměti z ověřeného úložného zařízení.
    • Poskytnutá sestava s příznakem "-Wcast-function-type", který umožňuje upozornění na přetypování ukazatelů funkcí na nekompatibilní typ.
    • Přidán ovladač virtuálního hostitele pvUSB pro hypervizor Xen, který poskytuje přístup k zařízením USB předávaným hostujícím systémům (umožňuje hostujícím systémům přístup k fyzickým zařízením USB přiřazeným hostujícímu systému).
    • Byl přidán modul, který umožňuje interakci přes Wi-Fi se subsystémem IME (Intel Management Engine), který je dodáván ve většině moderních základních desek s procesory Intel a je implementován jako samostatný mikroprocesor, který pracuje nezávisle na CPU.
    • Pro architekturu ARM64 byla implementována podpora 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.
    • U 32bitových ARM systémů přibyla možnost využít mechanismus KFENCE pro detekci chyb při práci s pamětí.
    • Hypervizor KVM přidává podporu pro instrukce AMX (Advanced Matrix Extensions) implementované v připravovaných serverových procesorech Intel Xeon Scalable.
  • Síťový subsystém
    • Přidána podpora pro přesun operací souvisejících s řízením provozu na stranu síťových zařízení.
    • Přidána možnost používat protokol MCTP (Management Component Transport Protocol) přes sériová zařízení. MCTP lze použít ke komunikaci mezi řídicími jednotkami a jejich přidruženými zařízeními (hostitelské procesory, periferní zařízení atd.).
    • TCP stack byl optimalizován, například pro zlepšení výkonu recvmsg volání, bylo implementováno zpožděné uvolňování soketových bufferů.
    • Na úrovni oprávnění CAP_NET_RAW je povoleno nastavení režimů SO_PRIORITY a SO_MARK pomocí funkce setsockopt.
    • Pro IPv4 mohou být raw sokety svázány s nelokálními IP adresami pomocí voleb IP_FREEBIND a IP_TRANSPARENT.
    • Přidán sysctl arp_missed_max pro konfiguraci prahového počtu selhání během kontroly monitoru ARP, po které je síťové rozhraní uvedeno do deaktivovaného stavu.
    • Poskytuje možnost konfigurovat samostatné hodnoty sysctl min_pmtu a mtu_expires ​​pro síťové jmenné prostory.
    • Do rozhraní ethtool API přidána možnost nastavit a určit velikost vyrovnávacích pamětí pro příchozí a odchozí pakety.
    • Netfilter přidal podporu pro filtrování tranzitního provozu pppoe v síťovém mostě.
    • Modul ksmbd, který implementuje souborový server využívající protokol SMB3, přidal podporu pro výměnu klíčů, povolil síťový port 445 pro smbdirect a přidal podporu pro parametr „smb2 max credit“.
  • Оборудование
    • Do subsystému drm (Direct Renderering Manager) a ovladače i915 byla přidána podpora obrazovek pro zobrazování důvěrných informací, například některé notebooky jsou vybaveny obrazovkami s vestavěným důvěrným režimem prohlížení, což ztěžuje prohlížení zvenčí . Přidané změny umožňují připojit specializované ovladače pro takové obrazovky a ovládat důvěrné režimy procházení nastavením vlastností v běžných ovladačích KMS.
    • Ovladač amdgpu obsahuje podporu technologie ladění STB (Smart Trace Buffer) pro všechny GPU AMD, které ji podporují. STB usnadňuje analýzu poruch a identifikaci zdroje problémů tím, že do speciální vyrovnávací paměti ukládá informace o funkcích prováděných před posledním selháním.
    • Ovladač i915 přidává podporu pro čipy Intel Raptor Lake S a standardně povoluje podporu grafického subsystému čipů Intel Alder Lake P. Přes rozhraní VESA DPCD je možné ovládat podsvícení obrazovky.
    • V ovladačích fbcon/fbdev byla vrácena podpora pro hardwarovou akceleraci rolování v konzoli.
    • Pokračující integrace změn na podporu čipů Apple M1. Implementována možnost používat ovladač simpledrm na systémech s čipem Apple M1 pro výstup přes framebuffer poskytovaný firmwarem.
    • Přidána podpora pro ARM SoС, zařízení a desky Snapdragon 7c, 845 a 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek (MT8183 Acer Chromebook 314), Mediatek MT7986a/b (používaný ve směrovačích Wi-Fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI, NMXP i.320s , Aspeed AST8/AST8, Engicam i.Core STM2500MP2600, Allwinner Tanix TX32, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t1/t6 MacBook Pro 6000/6001.
    • Přidána podpora pro procesory ARM Cortex-M55 a Cortex-M33.
    • Přidána podpora pro zařízení založená na CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Přidána podpora pro StarFive JH7100 SoC založené na architektuře RISC-V.
    • Přidán ovladač lenovo-yogabook-wmi pro ovládání podsvícení klávesnice a přístup k různým senzorům v Lenovo Yoga Book.
    • Přidán ovladač asus_wmi_sensors pro přístup k senzorům používaným na základních deskách Asus X370, X470, B450, B550 a X399 založených na procesorech AMD Ryzen.
    • Přidán ovladač x86-android-tablets pro tablety x86 dodávané s platformou Android.
    • Přidána podpora pro dotykové obrazovky TrekStor SurfTab duo W1 a elektronické pero pro tablety Chuwi Hi10 Plus a Pro.
    • Ovladače pro SoC Tegra 20/30 přidaly podporu pro správu napájení a napětí. Umožňuje bootování na starších 32bitových Tegra SoC zařízeních, jako jsou ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 a Pad TF300TG.
    • Přidány ovladače pro průmyslové počítače Siemens.
    • Přidána podpora pro Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA a Team Source Display TSTST.043015 LCD
    • Přidána podpora pro zvukové systémy a kodeky AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, systémy Intel využívající NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320x3AD. Problémy s Tegra194 HD-audio byly vyřešeny. Přidána podpora HDA pro kodeky CS35L41. Vylepšená podpora zvukových systémů pro notebooky Lenovo a HP a také základní desky Gigabyte.

Zdroj: opennet.ru

Přidat komentář