Vydanie jadra Linux 5.14

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie linuxového jadra 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, I/O a súborové systémy
    • Pre skupiny cgroups bol implementovaný nový radič priority I/O, 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.
    • Súborový systém ext4 implementuje nový príkaz ioctl, EXT4_IOC_CHECKPOINT, ktorý vynúti vyprázdnenie všetkých čakajúcich transakcií z žurnálu a ich pridružených vyrovnávacích pamätí na disk a tiež prepíše oblasť používanú žurnálom v úložnom priestore. Zmena bola pripravená v rámci iniciatívy na zabránenie úniku informácií zo súborových systémov.
    • Pre Btrfs boli vykonané optimalizácie 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 vymazanie operácií zariadenia.
    • V XFS bola prepracovaná implementácia vyrovnávacej pamäte, ktorá bola prepnutá na prideľovanie pamäťových stránok v dávkovom režime. Vylepšená účinnosť vyrovnávacej pamäte.
    • F2FS pridáva možnosť pracovať v režime iba na čítanie a implementuje režim komprimovanej blokovej vyrovnávacej pamäte (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 na základe masky bola navrhnutá nová možnosť pripojenia nocompress.
    • V ovládači exFAT sa pracovalo na zlepšení kompatibility s niektorými úložiskami digitálnych fotoaparátov.
    • Pridané systémové volanie quotectl_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 vzťahuje.
    • Staré ovládače pre blokové zariadenia s rozhraním IDE boli z jadra odstránené a už dávno ich nahradil subsystém libata.
    • 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
    • Plánovač úloh implementuje nový režim plánovania SCHED_CORE, ktorý vám umožňuje kontrolovať, ktoré procesy môžu byť vykonávané 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 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 každý proces, ktorý sa stal zdrojom rozdeleného zámku byť nútený zastaviť na 20 ms namiesto ukončenia.
    • Ovládač šírky pásma cgroup CFS (CFS bandwidth controller), ktorý určuje, koľko času procesora možno prideliť každej cgroup, implementuje možnosť definovať časovo obmedzené limity, č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í načítanie 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 je implementovaná podpora veľkých pamäťových stránok (Transparent Huge-Pages) a možnosť využiť mechanizmus KFENCE na detekciu chýb pri práci s pamäťou.
    • Systémové volanie madvise(), ktoré poskytuje prostriedky na optimalizáciu správy pamäte procesu, pridalo príznaky MADV_POPULATE_READ a MADV_POPULATE_WRITE na generovanie „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. (predvolené nastavenie). Použitie príznakov môže byť užitočné na zníženie oneskorení pri vykonávaní programu v dôsledku proaktívneho vykonávania obsluhy „chyby stránky“ pre všetky nepridelené stránky naraz, bez čakania na skutočný prístup k nim.
    • Systém testovania jednotiek kunit pridal podporu pre spúšťanie testov v prostredí QEMU.
    • Boli pridané nové sledovače: „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í zo signálu časovača.
  • Virtualizácia a bezpečnosť
    • Systémové volanie memfd_secret() bolo pridané, aby sa vytvorila oblasť súkromnej pamäte v izolovanom adresnom priestore, viditeľná iba pre vlastný proces, neodráža sa pre ostatné procesy a nie je priamo prístupná pre jadro.
    • V systéme filtrovania systémových hovorov seccomp je možné pri presúvaní obslužných rutinov blokovania do užívateľského priestoru použiť jedinú 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 prerušenia obsluhy v užívateľskom priestore pri príchode signálu.
    • Pridaný nový mechanizmus na správu limitov prostriedkov v priestore názvov ID používateľov, 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 prostriedkov, 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ávacej pamäte, prístupom pred inicializáciou a používaním mimo aktuálneho kontextu.
    • Zariadenia na overenie ukazovateľa na platforme ARM64 je teraz možné nakonfigurovať samostatne pre jadro a uží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.
    • Linux v užívateľskom režime pridal podporu pre používanie ovládačov pre PCI zariadenia s virtuálnou PCI zbernicou, implementovanú ovládačom PCI-over-virtio.
    • Pre systémy x86 bola pridaná podpora pre paravirtualizované zariadenie virtio-iommu, čo umožňuje odosielanie požiadaviek IOMMU, ako sú 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 Zombieload, ktoré manipulujú s únikom informácií cez kanály tretích strán, ku ktorému dochádza počas činnosti mechanizmu TAA (TSX Asynchronous Abort).
  • Sieťový subsystém
    • Integrácia do jadra MPTCP (MultiPath TCP), rozšírenie protokolu TCP na organizáciu 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. Nové vydanie pridáva mechanizmus na nastavenie vlastných pravidiel hashovania návštevnosti pre IPv4 a IPv6 (politika viaccestného hashovania), vďaka čomu je možné z používateľského priestoru určiť, ktoré polia v paketoch, vrátane zapuzdrených, sa použijú pri výpočte hash, ktorý určuje výber cesty pre paket.
    • Do virtuálneho transportu virtio bola pridaná podpora soketov SOCK_SEQPACKET (usporiadaný 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í. . Nová verzia pridáva nástroje na prenos riadenia na iný socket v prípade zlyhania pri spracovaní požiadavky pôvodne vybraným socketom (rieši problém so stratou jednotlivých spojení pri reštarte služieb).
  • Оборудование
    • Ovládač amdgpu poskytuje podporu 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ú podporu 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 ASPM (Active State Power Management), ktorá bola 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. Najmä pomocou HMM môžete usporiadať zdieľaný adresný priestor medzi GPU a CPU, v ktorom má GPU prístup k hlavnej pamäti procesu.
    • Pridaná počiatočná podpora technológie AMD Smart Shift, ktorá dynamicky mení nastavenia výkonu CPU a GPU na notebookoch s čipovou súpravou AMD a grafickou kartou, aby sa zvýšil výkon pri hraní hier, úprave videa a vykresľovaní 3D.
    • Ovládač i915 pre grafické karty Intel obsahuje podporu pre čipy Intel Alderlake P.
    • Pridaný ovládač drm/hyperv pre virtuálny grafický adaptér Hyper-V.
    • Pridaná podpora pre počítač Raspberry Pi 400 all-in-one.
    • 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 bolo pridané rozhranie WMI na zmenu nastavení BIOSu cez sysfs /sys/class/firmware-attributes/.
    • Rozšírená podpora pre zariadenia s rozhraním USB4.
    • Pridaná podpora pre zvukové karty a kodeky 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 USB.

Zdroj: opennet.ru

Pridať komentár