Linuxové jadro 5.14

Linuxové jadro 5.14

Po dvoch mesiacoch vývoja Linus Torvalds predložené vydanie jadra Linux 5.14. Medzi najpozoruhodnejšie zmeny patria nové systémové volania quotectl_fd() a memfd_secret(), odstránenie ovládačov ide a raw, nový radič priority I/O pre cgroup, režim plánovania úloh SCHED_CORE, infraštruktúra na vytváranie overených zavádzačov programov BPF.

Nová verzia obsahuje 15883 2002 opráv od 69 12580 vývojárov, veľkosť opravy je 861501 MB (zmeny sa dotkli 321654 47 súborov, pribudlo 5.14 14 riadkov kódu, vymazalo sa 13 3 riadkov). Približne 3 % všetkých zmien zavedených v XNUMX súvisí s ovládačmi zariadení, približne XNUMX % zmien súvisí s aktualizáciou kódu špecifického pre hardvérové ​​architektúry, XNUMX % súvisí so sieťovým zásobníkom, XNUMX % sa týka súborových systémov a XNUMX % súvisia s internými subsystémami jadra.

Hlavné inovácie:

  • diskový subsystém, vstupné/výstupné a súborové systémy:
    • pre cgroup implementovaná nový I/O prioritný radič - rq-qos, ktorý dokáže riadiť prioritu spracovania požiadaviek na blokovanie zariadení generovaných členmi každej cgroup. Do plánovača I/O mq-deadline bola pridaná nová podpora radiča priority;
    • na súborovom systéme ext4 implementovaná nový príkaz ioctl EXT4_IOC_CHECKPOINT, ktorý vynúti všetky čakajúce transakcie z protokolu a pridružených vyrovnávacích pamätí na disk a tiež prepíše oblasť používanú protokolom v úložnom priestore. Zmena bola pripravená v rámci iniciatívy na zabránenie úniku informácií zo súborových systémov;
    • v Btrfs predstavený Optimalizácia výkonu: Odstránením zbytočného protokolovania 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í orezania, ktoré neovplyvňujú rozsahy, je úplná synchronizácia zakázaná, čo skrátilo čas operácie o 12 %. Do sysfs bolo pridané nastavenie na obmedzenie I/O šírky pásma pri kontrole FS. Pridané volania ioctl na zrušenie zmeny veľkosti a vymazania operácií zariadenia;
    • v XFS prepracované implementácia vyrovnávacej pamäte, ktorá sa prenáša do prideľovania pamäťových stránok v dávkovom režime. Vylepšená účinnosť vyrovnávacej pamäte;
    • F2FS pridal možnosť pracovať v režime iba na čítanie a implementoval režim ukladania do vyrovnávacej pamäte komprimovaného bloku (compress_cache), aby sa zlepšil výkon náhodného čítania. Bola implementovaná podpora pre kompresiu súborov mapovaných do pamäte pomocou operácie mmap(). Na selektívne vypnutie kompresie súborov maskou bola navrhnutá nová možnosť pripojenia nocompress;
    • V ovládači exFAT sa pracovalo na zlepšení kompatibility s úložiskami niektorých digitálnych fotoaparátov;
    • pridané systémové volanie kvóta_fd(), ktorý vám umožňuje spravovať kvóty nie prostredníctvom špeciálneho súboru zariadenia, ale zadaním deskriptora súboru spojeného so súborovým systémom, pre ktorý sa kvóta uplatňuje;
    • Staré ovládače pre blokové zariadenia s rozhraním IDE boli z jadra odstránené, dlho ich nahradil subsystém libata. Podpora starých zariadení zostala zachovaná v plnom rozsahu, zmeny sa týkajú len možnosti používať staré ovládače, pri ktorých sa disky nazývali /dev/hd*, a nie /dev/sd*;
    • Z jadra bol odstránený „surový“ ovládač, ktorý poskytuje prístup k blokovým zariadeniam bez vyrovnávacej pamäte cez rozhranie /dev/raw. Táto funkcionalita je už dlho implementovaná v aplikáciách používajúcich príznak O_DIRECT;
  • pamäťové a systémové služby:
    • v plánovači úloh bol implementovaný nový režim plánovania SCHED_CORE, ktorý vám umožňuje kontrolovať, ktoré procesy môžu bežať spoločne na rovnakom jadre CPU. Každému procesu možno priradiť identifikátor súboru cookie, ktorý definuje rozsah dôveryhodnosti medzi procesmi (napríklad patriace rovnakému používateľovi alebo kontajneru). Pri organizovaní spúšťania kódu môže plánovač zabezpečiť, že jedno jadro CPU je zdieľané iba medzi procesmi priradenými k rovnakému vlastníkovi, čo možno použiť na blokovanie niektorých útokov Spectre tým, že zabráni spusteniu dôveryhodných a nedôveryhodných úloh na rovnakom vlákne SMT (Hyper Threading). ;
    • pre mechanizmus cgroup bola implementovaná podpora pre operáciu kill, ktorá vám umožňuje zabiť všetky procesy spojené so skupinou naraz (odoslať SIGKILL) zapísaním „1“ do virtuálneho súboru cgroup.kill;
    • rozšírené možnosti súvisiace s reakciou na detekciu rozdelených zámkov („rozdelených zámkov“), ktoré sa vyskytujú pri prístupe k nezarovnaným údajom v pamäti v dôsledku skutočnosti, že pri vykonávaní atómovej inštrukcie údaje prechádzajú dvoma riadkami vyrovnávacej pamäte CPU. Takéto blokovanie vedie k výraznému poklesu výkonu, takže predtým bolo možné násilne ukončiť aplikáciu, ktorá blokovanie spôsobila. Nové vydanie pridáva parameter príkazového riadka jadra „split_lock_detect=ratelimit:N“, ktorý vám umožňuje definovať celosystémový limit rýchlosti uzamykacích operácií za sekundu, po prekročení ktorého sa spustí každý proces, ktorý sa stal zdrojom rozdeleného zámku. byť nútený zastaviť na 20 ms namiesto ukončenia;
    • Regulátor šírky pásma cgroup CFS (CFS bandwidth controller), ktorý určuje, koľko času procesora možno prideliť každej cgroup, má schopnosť definovať limity obmedzené daným trvaním akcie, čo umožňuje lepšiu reguláciu záťaže citlivej na latenciu. Napríklad nastavenie cpu.cfs_quota_us na 50000 100000 a cpu.cfs_period_us na 100 50 umožní skupine procesov plytvať XNUMX ms času CPU každých XNUMX ms;
    • pridané počiatočná infraštruktúra na vytváranie zavádzačov programov BPF, ktorá ďalej umožní sťahovanie iba programov BPF podpísaných dôveryhodným digitálnym kľúčom;
    • pridaná nová futexová operácia FUTEX_LOCK_PI2, ktorá používa monotónny časovač na výpočet časového limitu, ktorý zohľadňuje čas strávený systémom v režime spánku;
    • pre architektúru RISC-V, podpora pre veľké pamäťové stránky (Transparent Huge-Pages) a možnosť používať KFENCE identifikovať chyby pri práci s pamäťou;
    • do systémového volania madvise(), ktoré poskytuje prostriedky na optimalizáciu správy pamäte procesov, pridané Príznaky MADV_POPULATE_READ a MADV_POPULATE_WRITE na vygenerovanie "chyby stránky" na všetkých pamäťových stránkach mapovaných na operácie čítania alebo zápisu bez vykonania skutočného čítania alebo zápisu (predbežná chyba). Použitie príznakov môže byť užitočné na zníženie oneskorení pri vykonávaní programu vďaka proaktívnemu vykonávaniu obsluhy „chyby stránky“ pre všetky nepridelené stránky naraz, bez čakania na skutočný prístup k nim;
    • v jednotkovom testovacom systéme kunit pridané podpora spúšťania testov v prostredí QEMU;
    • pridané nové indikátory: "osnoise" na sledovanie oneskorení aplikácií spôsobených manipuláciou s prerušením a " timerlat " na zobrazenie podrobných informácií o oneskoreniach pri prebudení signálom časovača;
  • virtualizácia a bezpečnosť:
    • dodal systémové volanie memfd_secret(), ktorý vám umožňuje vytvoriť súkromnú pamäťovú oblasť v izolovanom adresnom priestore, viditeľnú iba pre proces vlastníka, ktorá sa neodráža v iných procesoch a nie je priamo prístupná pre jadro;
    • v systéme filtrovania systémových volaní seccomp je možné pri presune manipulátorov zámkov do užívateľského priestoru použiť jednu atomickú operáciu na vytvorenie deskriptora súboru pre izolovanú úlohu a vrátiť ho pri spracovaní systémového volania. Navrhovaná operácia rieši problém s prerušením obsluhy v užívateľskom priestore pri príchode signálu;
    • dodal nový mechanizmus na správu obmedzovania prostriedkov v mennom priestore ID používateľa, ktorý spája jednotlivé počítadlá rlimit s používateľom v „priestore mien používateľov“. Zmena rieši problém s používaním spoločných počítadiel zdrojov, keď jeden používateľ spúšťa procesy v rôznych kontajneroch;
    • hypervízor KVM pre systémy ARM64 pridal možnosť používať rozšírenie MTE (MemTag, Memory Tagging Extension) v hosťujúcich systémoch, ktoré vám umožňuje viazať značky na každú operáciu prideľovania pamäte a organizovať kontrolu správneho použitia ukazovateľov na blokovanie využívania zraniteľnosti spôsobené prístupom k už uvoľneným blokom pamäte, pretečeniu vyrovnávacích pamätí, prístupom pred inicializáciou a používaním mimo aktuálneho kontextu;
    • Autentizáciu ukazovateľa, ktorú poskytuje platforma ARM64, je teraz možné nakonfigurovať samostatne pre jadro a používateľský priestor. Technológia umožňuje použiť špecializované inštrukcie ARM64 na overenie návratových adries pomocou digitálnych podpisov, ktoré sú uložené v nepoužitých horných bitoch samotného ukazovateľa;
    • v užívateľskom režime Linux pridané podpora používania ovládačov pre zariadenia PCI s virtuálnou zbernicou PCI, implementovaná ovládačom PCI-over-virtio;
    • pre systémy x86 pridaná podpora pre paravirtualizované zariadenie virtio-iommu, ktoré vám umožňuje odosielať požiadavky IOMMU, ako napríklad ATTACH, DETACH, MAP a UNMAP, cez transport virtio bez emulácie tabuliek stránok pamäte;
    • Pre procesory Intel, od rodiny Skylake po Coffee Lake, je štandardne zakázané používanie Intel TSX (Transactional Synchronization Extensions), ktoré poskytujú nástroje na zlepšenie výkonu viacvláknových aplikácií dynamickou elimináciou nepotrebných synchronizačných operácií. Rozšírenia sú zakázané kvôli možnosti útokov Zombieloadmanipulácia s únikom informácií cez kanály tretích strán, ku ktorému dochádza počas činnosti mechanizmu asynchrónneho prerušenia operácií (TAA, TSX Asynchronous Abort);
  • sieťový subsystém:
    • pokračujúcu integráciu do jadra MPTCP (MultiPath TCP), rozšírenie protokolu TCP na organizovanie prevádzky TCP spojenia s doručovaním paketov súčasne po niekoľkých trasách cez rôzne sieťové rozhrania spojené s rôznymi IP adresami. V novom čísle dodal mechanizmus na nastavenie vlastných pravidiel hashovania návštevnosti pre IPv4 a IPv6 (politika viaccestného hashovania), ktorý umožňuje z užívateľského priestoru určiť, ktoré polia v paketoch, vrátane zapuzdrených, sa použijú pri výpočte hashu, ktorý určuje výber cesty pre balík;
    • Podpora soketov bola pridaná do virtuálneho transportného virtio SOCK_SEQPACKET (riadny a spoľahlivý prenos datagramov);
    • Rozšírili sa možnosti mechanizmu soketov SO_REUSEPORT, ktorý umožňuje pripojiť sa k jednému portu naraz niekoľkým načúvajúcim soketom a prijímať spojenia s distribúciou prichádzajúcich požiadaviek súčasne na všetky sokety pripojené cez SO_REUSEPORT, čo zjednodušuje vytváranie viacvláknových serverových aplikácií. . V novej verzii pridané prostriedky na prenos riadenia na iný socket v prípade zlyhania pri spracovaní požiadavky pôvodne zvoleným socketom (rieši problém so stratou jednotlivých spojení pri reštarte služieb);
  • vybavenie:
    • v ovládači amdgpu implementovaná podpora pre novú sériu GPU AMD Radeon RX 6000 s kódovým označením „Beige Goby“ (Navi 24) a „Yellow Carp“, ako aj vylepšená podpora pre GPU Aldebaran (gfx90a) a Van Gogh APU. Pridaná možnosť súčasne pracovať s niekoľkými eDP panelmi. Pre APU Renoir bola implementovaná podpora pre prácu so šifrovanými vyrovnávacími pamäťami vo videopamäti (TMZ, Trusted Memory Zone). Pridaná podpora pre grafické karty odpojiteľné za chodu. Pre GPU Radeon RX 6000 (Navi 2x) a staršie GPU AMD je štandardne povolená podpora mechanizmu úspory energie ASPM (Active State Power Management), ktorý bol predtým povolený len pre GPU Navi 1x, Vega a Polaris;
    • pre čipy AMD pribudla podpora zdieľanej virtuálnej pamäte (SVM, shared virtual memory) na báze subsystému HMM (Heterogeneous memory management), ktorý umožňuje použitie zariadení s vlastnými jednotkami správy pamäte (MMU, memory management unit), ktorý má prístup k hlavnej pamäti. Vrátane použitia HMM môžete organizovať zdieľaný adresný priestor medzi GPU a CPU, v ktorom má GPU prístup k hlavnej pamäti procesu;
    • pridaná počiatočná technologická podpora AMD Smart Shift, ktorý dynamicky mení parametre spotreby energie CPU a GPU na notebookoch s čipovou sadou a grafickou kartou AMD na zvýšenie výkonu pri hraní hier, úprave videa a vykresľovaní 3D;
    • v ovládači i915 pre grafické karty Intel v cene podpora čipov Intel Alderlake P;
    • pridaný ovládač drm/hyperv pre virtuálny grafický adaptér Hyper-V;
    • dodal grafický ovládač simpledrm, ktorý na výstup používa framebuffer EFI-GOP alebo VESA, ktorý poskytuje firmvér UEFI alebo BIOS. Hlavným účelom ovládača je poskytnúť možnosti grafického výstupu počas počiatočných fáz zavádzania, skôr než je možné použiť úplný ovládač DRM. Ovládač možno použiť aj ako dočasné riešenie pre zariadenia, ktoré ešte nemajú natívne ovládače DRM;
    • pridané all-in-one počítačová podpora Raspberry Pi 400;
    • Pridaný ovládač dell-wmi-privacy na podporu hardvérových prepínačov kamery a mikrofónu, ktoré sú súčasťou notebookov Dell;
    • pre notebooky Lenovo dodal WMI rozhranie na zmenu parametrov BIOSu cez 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. Vylepšená podpora zvuku na notebookoch HP a ASUS. Pridané opravy na zníženie oneskorenia pred spustením prehrávania zvuku na zariadeniach s rozhraním USB.

Zdroj - opennet.ru.

Zdroj: linux.org.ru