Vydanie jadra Linux 5.3

Po dvoch mesiacoch vývoja Linus Torvalds predložené vydanie jadra Linux 5.3. Medzi najvýznamnejšie zmeny patrí podpora grafických procesorov AMD Navi, procesorov Zhaoxi a technológie správy napájania Intel Speed ​​​​Select, možnosť používať pokyny umwait na čakanie bez použitia cyklov,
režim „utilization clamping“, ktorý zvyšuje interaktivitu pre asymetrické CPU, systémové volanie pidfd_open, možnosť používať adresy IPv4 z podsiete 0.0.0.0/8, možnosť hardvérovej akcelerácie nftables, podpora HDR v subsystéme DRM, integrácia ACRN hypervízor.

В oznámenie V novom vydaní Linus pripomenul všetkým vývojárom hlavné pravidlo vývoja jadra – zachovanie rovnakého správania pre komponenty používateľského priestoru. Zmeny v jadre by v žiadnom prípade nemali narušiť už spustené aplikácie alebo viesť k regresii na úrovni používateľa. V tomto prípade môže porušenie správania spôsobiť nielen zmenu v ABI, odstránenie zastaraného kódu alebo výskyt chýb, ale aj nepriamy vplyv užitočných vylepšení, ktoré fungujú správne. Ako názorný príklad tam bol vyradené užitočný optimalizácia v kóde Ext4, ktorý znižuje počet prístupov k jednotke zakázaním predbežného čítania tabuľky inodov pre malé I/O požiadavky.

Optimalizácia viedla k tomu, že v dôsledku zníženia aktivity disku sa entropia pre generátor náhodných čísel getrandom() začala hromadiť pomalšie a v niektorých konfiguráciách bolo za určitých okolností možné pozorovať zamrznutie počas načítavania, kým sa nevytvorila zásoba entropie. naplnené. Keďže optimalizácia je skutočne užitočná, medzi vývojármi sa rozprúdila diskusia, v ktorej bolo navrhnuté problém vyriešiť vypnutím predvoleného blokovacieho režimu volania getrandom() a pridaním voliteľného príznaku na čakanie na entropiu, ale takáto zmena by ovplyvnila kvalitu náhodných čísel v počiatočnej fáze načítania.

Nová verzia obsahuje 15794 1974 opráv od XNUMX XNUMX vývojárov,
veľkosť opravy - 92 MB (zmeny ovplyvnili 13986 súborov, bolo pridaných 258419 riadkov kódu,
599137 odstránených riadkov). Asi 39 % zo všetkých prezentovaných v 5.3
zmeny sa týkajú ovládačov zariadení, približne 12 % zmien
postoj k aktualizácii kódu špecifického pre hardvérové ​​architektúry, 11 %
súvisiaci so sieťovým zásobníkom, 3 % so súborovými systémami a 3 % s internými
podsystémy jadra.

Hlavné inovácie:

  • Pamäťové a systémové služby
    • Pokračujúci vývoj funkcie „pidfd“ na pomoc pri zvládaní situácií opätovného použitia PID (pidfd je spojený s konkrétnym procesom a nemení sa, zatiaľ čo PID môže byť spojený s iným procesom po ukončení súčasného procesu spojeného s týmto PID). Predtým bol pridaný do jadra
      Systémové volanie pidfd_send_signal() a príznak CLONE_PIDFD vo volaní clone() na získanie pidfd na použitie v idfd_send_signal(). Použitie clone() s príznakom CLONE_PIDFD by mohlo spôsobiť problémy so správcami služieb alebo so systémom núteného ukončenia platformy Android s nedostatkom pamäte. V tomto prípade sa na spustenie používa volanie fork() alebo clone() bez CLONE_PIDFD.

      Jadro 5.3 zaviedlo systémové volanie pidfd_open(), čo vám umožňuje získať kontrolovateľný pidfd pre ľubovoľný existujúci proces, ktorý nebol vytvorený volaním clone() s príznakom CLONE_PIDFD. Tiež bola pridaná podpora pre pidfd polling pomocou poll() a epoll(), čo umožňuje manažérom procesov sledovať ukončenie ľubovoľných procesov bez strachu z rasovej podmienky, ak je PID priradené novému procesu. Mechanizmus oznamovania, že proces spojený s pidfd bol ukončený, je rovnaký ako oznamovanie ukončenia jeho podriadeného procesu;

    • Do plánovača úloh bola pridaná podpora mechanizmu pripínania záťaže (Použitie upínania), čo vám umožní dodržiavať minimálne alebo maximálne frekvenčné rozsahy v závislosti od úloh aktívnych na CPU. Prezentovaný mechanizmus zrýchľuje úlohy, ktoré priamo ovplyvňujú kvalitu používateľského zážitku tým, že tieto úlohy spúšťajú aspoň na spodnej hranici „požadovanej“ frekvencie. Úlohy s nízkou prioritou, ktoré neovplyvňujú prácu používateľa, sa spúšťajú pomocou hornej hranice „povolenej“ frekvencie. Limity sa nastavujú prostredníctvom atribútov sched_uclamp_util_min a sched_uclamp_util_max v systémovom volaní sched_setattr().
    • Pridaná podpora pre technológiu energetického manažmentu Intel Speed ​​​​Select, dostupné na vybraných serveroch s procesormi Intel Xeon. Táto technológia vám umožňuje nastaviť výkon a priepustnosť oddielov pre rôzne jadrá CPU, čo vám umožňuje uprednostniť výkon pre úlohy vykonávané na určitých jadrách, čím sa obetuje výkon na iných jadrách;
    • Procesy v užívateľskom priestore udelené možnosť krátkeho čakania bez použitia slučiek pomocou inštrukcie umwait. Táto inštrukcia spolu s inštrukciami umonitor a tpause bude ponúkaná v nadchádzajúcich čipoch Intel "Tremont" a umožní implementáciu oneskorení, ktoré sú energeticky efektívne a neovplyvňujú výkon iných vlákien pri používaní Hyper Threading;
    • Pre architektúru RISC-V bola pridaná podpora pre veľké pamäťové stránky;
    • Mechanizmus sledovania kprobes pridal možnosť dereferencovania ukazovateľov jadra na užívateľský priestor, čo možno použiť napríklad na vyhodnotenie obsahu štruktúr odovzdaných do systémových volaní. Pridaná bola aj možnosť inštalovať kontroly vo fáze zavádzania.
    • Do konfiguračného súboru bola pridaná možnosť PREEMPT_RT pre prevádzku v reálnom čase. Samotný kód na podporu režimu v reálnom čase ešte nebol pridaný do jadra, ale vzhľad možnosti je dobrým znamením, že dlhodobá epická integrácia Záplaty Realtime-Preempt sa blížia k dokončeniu;
    • Pridané systémové volanie clone3() s implementáciou rozšíriteľnejšej verzie rozhrania clone(), ktorá umožňuje špecifikovať väčší počet príznakov;
    • Pridaný obslužný program bpf_send_signal(), umožňujúci programom BPF posielať signály ľubovoľným procesom;
    • Pre udalosti perf v prostredí hypervízora KVM bol pridaný nový mechanizmus filtrovania udalostí, ktorý umožňuje administrátorovi určiť typy udalostí, ktoré sú povolené alebo nie sú povolené na monitorovanie na strane hosťujúceho systému;
    • Do mechanizmu overovania aplikácie eBPF bola pridaná možnosť spracovávať programy pomocou slučiek, ak je vykonávanie cyklu obmedzené a nemôže viesť k prekročeniu limitu maximálneho počtu inštrukcií;
  • Diskový subsystém, I/O a súborové systémy
    • Súborový systém XFS teraz podporuje viacvláknové vynechanie inode (napríklad pri kontrole kvót). Boli pridané nové ioctls BULKSTAT a INUMBERS, ktoré poskytujú prístup k funkciám, ktoré sa objavili v piatom vydaní formátu FS, ako je napríklad čas narodenia inódu a možnosť nastaviť parametre BULKSTAT a INUMBERS pre každú AG skupinu (Allocation Groups);
    • V Ext4 pridaná podpora prázdne miesta v adresároch (neprepojené bloky).
      Spracovanie zabezpečené príznak „i“ (nezmeniteľný) pre otvorené súbory (zápis je zakázaný v situácii, ak bol príznak nastavený v čase, keď už bol súbor otvorený);

    • Btrfs poskytuje definíciu rýchlej implementácie crc32c na všetkých architektúrach;
    • V CIFS bol kód pre podporu smbdirect odstránený ako experimentálny vývoj. SMB3 pridal možnosť používať kryptografické algoritmy v režime GCM. Pridaná nová možnosť pripojenia na extrahovanie parametrov režimu z položiek ACE (Access Control Entry). Optimalizovaný výkon volania open();
    • Pridaná možnosť do F2FS na obmedzenie zberača odpadu pri spustení v režime checkpoint=disable. Pridaný ioctl na odstránenie rozsahov blokov z F2FS, čo umožňuje priebežné úpravy veľkosti oddielov. Pridaná možnosť umiestniť swapový súbor do F2FS na poskytovanie priamych I/O. Pridaná podpora pre pripnutie súboru a pridelenie blokov pre podobné súbory pre všetkých používateľov;
    • Pridaná podpora pre asynchrónne operácie sendmsg() a recvmsg() do rozhrania pre asynchrónny vstup/výstup io_uring;
    • Do súborového systému UBIFS bola pridaná podpora pre kompresiu pomocou algoritmu zstd a možnosť overiť podpísané obrázky FS;
    • Ceph FS teraz podporuje bezpečnostné štítky SELinux pre súbory;
    • Pre NFSv4 bola implementovaná nová možnosť pripojenia „nconnect=“, ktorá určuje počet pripojení vytvorených so serverom. Premávka medzi týmito spojmi bude distribuovaná pomocou vyrovnávania záťaže. Okrem toho server NFSv4 teraz vytvára adresár /proc/fs/nfsd/clients s informáciami o aktuálnych klientoch, vrátane informácií o súboroch, ktoré otvorili;
  • Virtualizácia a bezpečnosť
    • Jadro obsahuje hypervízor pre vstavané zariadenia ACRN, ktorý je napísaný s ohľadom na pripravenosť na úlohy v reálnom čase a vhodnosť na použitie v kritických systémoch. ACRN poskytuje minimálnu réžiu, zaručuje nízku latenciu a primeranú odozvu pri interakcii so zariadením. Podporuje virtualizáciu CPU zdrojov, I/O, sieťového subsystému, grafických a zvukových operácií. ACRN možno použiť na spustenie viacerých izolovaných virtuálnych strojov v elektronických riadiacich jednotkách, prístrojových doskách, automobilových informačných systémoch, spotrebiteľských zariadeniach internetu vecí a iných vstavaných technológiách;
    • V užívateľskom režime Linux dodal Režim cestovania v čase, ktorý vám umožňuje spomaliť alebo zrýchliť čas vo virtuálnom prostredí UML, aby sa uľahčilo ladenie kódu súvisiaceho s časom. Okrem toho bol pridaný parameter
      time-travel-start, ktorý umožňuje spustenie systémových hodín od určeného okamihu vo formáte epochy;

    • Boli pridané nové možnosti príkazového riadka jadra „init_on_alloc“ a „init_on_free“, keď je špecifikované, nulovanie alokovaných a uvoľnených pamäťových oblastí je povolené (vyplnenie nulami pre malloc a free), čo umožňuje zvýšiť bezpečnosť vďaka dodatočnej inicializácii réžia;
    • Pridaný nový ovládač virtio-iommu s implementáciou paravirtualizovaného zariadenia, ktoré vám umožňuje odosielať požiadavky IOMMU, ako sú ATTACH, DETACH, MAP a UNMAP, cez virtio transport bez emulácie tabuliek stránok pamäte;
    • Pridaný nový ovládač virtio-pmem, predstavujúce prístup k úložným zariadeniam mapovaným do fyzického adresného priestoru, ako sú NVDIMM;
    • Implementovaná možnosť pripojiť kryptografické kľúče k užívateľskému alebo sieťovému mennému priestoru (kľúče sa stanú nedostupnými mimo zvoleného menného priestoru), ako aj chrániť kľúče pomocou ACL;
    • Do krypto subsystému pridané podpora veľmi rýchleho nekryptografického hašovacieho algoritmu xxhash, ktorého rýchlosť závisí od výkonu pamäte;
  • Sieťový subsystém
    • Povolené spracovanie adries IPv4 v rozsahu 0.0.0.0/8, ktorý bol predtým nedostupný na použitie. Predstavenie tejto podsiete dovolí distribuovať ďalších 16 miliónov IPv4 adries;
    • V Netfilter pre nftables pridané podpora mechanizmov hardvérovej akcelerácie pre filtrovanie paketov pomocou pridaných ovládačov Flow Block API. Na strane sieťových adaptérov je možné umiestniť celé tabuľky pravidiel so všetkými reťazcami. Povolenie sa vykonáva naviazaním príznaku NFT_TABLE_F_HW na tabuľku. Podporuje jednoduché metadáta protokolu Layer 3 a Layer 4, akcie prijatia/odmietnutia, mapovanie podľa IP a sieťových portov odosielateľa/prijímača a typu protokolu;
    • Pridané vstavaná podpora sledovania pripojení pre sieťové mosty, ktorá nevyžaduje použitie emulačnej vrstvy br_netfilter;
    • V nf_tables pridané implementovaná je aj podpora pre modul SYNPROXY, ktorý replikuje podobnú funkcionalitu z iptables a možnosť kontroly pravidiel pre jednotlivé možnosti v hlavičke IPv4;
    • Pridaná možnosť pripojiť programy BPF k systémovým volaniam setsockopt() a getsockopt(), čo vám napríklad umožňuje pripojiť k týmto volaniam vlastné obslužné programy prístupu. Okrem toho bol pridaný nový call point (hák), pomocou ktorého môžete zorganizovať volanie do programu BPF raz za každý RTT interval (spiatočný čas, čas pingu);
    • Pre IPv4 a IPv6 dodal nový mechanizmus na ukladanie údajov smerovania smerovania zameraný na zvýšenie škálovateľnosti smerovacích tabuliek. Testy ukázali, že pri použití nového systému sa do jadra načítala sada 743 tisíc ciest len ​​za 4.3 sekundy;
    • Pre Bluetooth implementovaná funkcionalita potrebná na podporu LE pingu;
  • Оборудование
    • Pridané podpora pre procesory kompatibilné s x86 spoločnosti Zhaoxín, vyvinutý ako výsledok spoločného projektu medzi VIA Technologies a šanghajským magistrátom. Rodina CPU ZX je postavená na architektúre x86-64 Isaiah a pokračuje vo vývoji technológie VIA Centaur;
    • Subsystém DRM (Direct Rendering Manager), ako aj grafické ovládače amdgpu a i915, pridali podporu pre analýzu, spracovanie a odosielanie metadát HDR (vysoký dynamický rozsah) cez port HDMI, čo umožňuje použitie panelov a obrazoviek HDR schopných zobrazenie ďalších rozsahov jasu;
    • Ovládač amdgpu pridal počiatočnú podporu pre AMD NAVI GPU (RX5700), ktorá zahŕňa základný ovládač, kód interakcie obrazovky (DCN2), GFX a výpočtovú podporu (GFX10),
      SDMA 5 (System DMA0), správa napájania a multimediálne kodéry/dekodéry (VCN2). amdgpu tiež zlepšuje podporu pre karty založené na GPU Vega12 a Vega20, pre ktoré boli pridané ďalšie možnosti správy pamäte a napájania;

    • Pridaná podpora pre karty založené na GPU VegaM do ovládača amdkfd (pre diskrétne GPU, ako napríklad Fiji, Tonga, Polaris);
    • V ovládači DRM pre grafické karty Intel pre čipy Icelake implementovaná nový viacsegmentový režim gama korekcie. Pridaná možnosť výstupu cez DisplayPort vo formáte YCbCr4:2:0. Pridaný nový firmvér GuC pre SKL, BXT, KBL, GLK a ICL. Bola implementovaná možnosť vypnúť napájanie obrazovky v asynchrónnom režime. Pridané podpora ukladania a obnovy kontextu vykresľovania pre čipy Ironlake (gen5) a gen4 (Broadwater - Cantiga), ktorá umožňuje obnoviť stav GPU z používateľského priestoru pri prechode z jednej dávkovej operácie na druhú;
    • Ovládač Nouveau poskytuje detekciu čipsetu NVIDIA Turing TU116;
    • Rozšírili sa možnosti ovládača DRM/KMS pre akcelerátory obrazovky ARM Komeda (Mali D71), podpora pre škálovanie, rozdelenie/zlúčenie vrstiev, rotácia, odložený zápis, AFBC, SMMU a formáty kódovania farieb Y0L2, P010, YUV420_8/10BIT bol pridaný;
    • Ovládač MSM pridáva podporu pre sériu A540 GPU Adreno používanú v procesoroch Qualcomm, ako aj podporu pre radič MSM8998 DSI pre Snapdragon 835;
    • Pridané ovládače pre LCD panely Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 a VXT VL050-8048NT-C01;

    • Pridané ovládač na aktiváciu nástrojov na zrýchlenie dekódovania
      videá dostupné v Amlogic Meson SoC;

    • Objavil sa ovládač v3d (pre Broadcom Video Core V GPU používaný v Raspberry Pi). podpora odosielanie výpočtových shaderov;
    • Pridané ovládač pre klávesnice a trackpady SPI používané v moderných modeloch notebookov Apple MacBook a MacBookPro;
    • Pridané dodatočná ochrana pre volania ioctl spojené s disketovým ovládačom a samotný ovládač je označený ako neudržiavaný
      („osirelý“), čo znamená ukončenie jeho testovania. Ovládač je stále uložený v jadre, ale jeho správna činnosť nie je zaručená. Ovládač sa považuje za zastaraný, pretože je ťažké nájsť pracovné vybavenie na jeho testovanie - všetky súčasné externé disky spravidla používajú rozhranie USB.

    • Pridané ovládač cpufreq pre dosky Raspberry Pi, ktorý umožňuje dynamicky riadiť zmeny frekvencie procesora;
    • Pridaná podpora pre nové ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) a Amlogic G12B (4x Cortex-A73 + A2), ako aj dosky:
      • Purizmus Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • TV box Hugsun X99 (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Zároveň Latinskoamerická nadácia pre slobodný softvér tvorené
voľba úplne bezplatné jadro 5.3 - Linux-libre 5.3-gnu, zbavený prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorých rozsah je obmedzený výrobcom. V novom vydaní je načítanie blobu zakázané v ovládačoch qcom, hdcp drm, allegro-dvt a meson-vdec.
Aktualizovaný kód čistenia blob v ovládačoch a podsystémoch amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, ovládač zvuku pre skylake, ako aj v dokumentácii k mikrokódu.

Zdroj: opennet.ru

Pridať komentár