Vydanie jadra Linux 6.3

Po dvoch mesiacoch vývoja Linus Torvalds vydal jadro Linux 6.3. Medzi najvýznamnejšie zmeny: vyčistenie zastaraných platforiem ARM a grafických ovládačov, pokračujúca integrácia podpory jazyka Rust, utilita hwnoise, podpora červeno-čiernych stromových štruktúr v BPF, režim BIG TCP pre IPv4, vstavaný benchmark Dhrystone, možnosť deaktivácie vykonávanie v memfd, podpora vytvárania ovládačov HID pomocou BPF, zmeny boli vykonané v Btrfs na zníženie fragmentácie skupín blokov.

Nová verzia prijala 15637 2055 opráv od 76 14296 vývojárov; veľkosť opravy - 1023183 MB (zmeny ovplyvnili 883103 súborov, 16843 riadkov kódu pridaných, 2178 riadkov odstránených). Pre porovnanie, v predchádzajúcej verzii bolo navrhnutých 62 opráv od 39 vývojárov; veľkosť opravy - 6.3 MB. Asi 15 % všetkých zmien zavedených v jadre 10 súvisí s ovládačmi zariadení, asi 5 % zmien súvisí s aktualizáciou kódu špecifického pre hardvérové ​​architektúry, 3 % súvisí so sieťovým zásobníkom, XNUMX % so súborovými systémami a XNUMX % do interných podsystémov jadra.

Kľúčové inovácie v jadre 6.3:

  • Pamäťové a systémové služby
    • Uskutočnilo sa výrazné vyčistenie kódu súvisiaceho so starými a nepoužívanými doskami ARM, čím sa zmenšila veľkosť zdrojových kódov jadra o 150 tisíc riadkov. Odstránených viac ako 40 starých platforiem ARM.
    • Implementovaná možnosť vytvárať ovládače pre vstupné zariadenia s rozhraním HID (Human Interface Device) implementované vo forme programov BPF.
    • Pokračovanie portovania ďalších funkcií z vetvy Rust-for-Linux súvisiacich s používaním Rustu ako druhého jazyka na vývoj ovládačov a modulov jadra. Podpora Rust nie je predvolene povolená a nevedie k tomu, že Rust je zahrnutý ako povinná závislosť zostavenia jadra. Funkcionalita ponúkaná v predchádzajúcich vydaniach bola rozšírená o podporu pre typy Arc (implementácia ukazovateľov s počtom referencií), ScopeGuard (vyčistenie, keď sa vykoná mimo rozsahu) a ForeignOwnable (poskytuje pohyb ukazovateľa medzi kódom C a Rust). . Odstránený modul 'požičať' z balíka 'alloc' (napíš 'Cow' a vlastnosť 'ToOwned'). Je potrebné poznamenať, že stav podpory pre Rust v jadre sa už blíži k tomu, aby sa do jadra začali akceptovať prvé moduly napísané v Ruste.
    • Používateľský režim Linux (bežiaci jadro ako používateľský proces) na systémoch x86-64 podporuje kód napísaný v jazyku Rust. Pridaná podpora pre zostavovanie Linuxu v užívateľskom režime pomocou clang s povolenou optimalizáciou času pripojenia (LTO).
    • Pridaný nástroj hwnoise na sledovanie oneskorení spôsobených správaním hardvéru. Odchýlky v dobe vykonávania operácií (jitter) sa zisťujú pri zakázanom spracovaní prerušení, ktoré presahujú jednu mikrosekundu za 10 minút výpočtov.
    • Bol pridaný modul jadra s implementáciou benchmarku Dhrystone, ktorý možno použiť na vyhodnotenie výkonu CPU v konfiguráciách bez komponentov používateľského priestoru (napríklad vo fáze portovania pre nové SoC, ktoré implementujú iba zavádzanie jadra).
    • Pridaná možnosť príkazového riadka jadra "cgroup.memory=nobpf" na zakázanie účtovania spotreby pamäte pre programy BPF, čo môže byť užitočné pre systémy s izolovanými kontajnermi.
    • Pre BPF programy sa navrhuje implementácia červeno-čiernej stromovej dátovej štruktúry, ktorá používa kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) namiesto pridania nového typu mapovania.
    • V mechanizme reštartovateľných sekvencií (rseq, reštartovateľné sekvencie) bola pridaná možnosť odovzdávať procesom identifikátory paralelného vykonávania (ID súbežnej mapy pamäte) identifikované číslom CPU. Rseq poskytuje prostriedky na rýchle atómové vykonávanie operácií, ktoré sa po prerušení iným vláknom vyčistia a zopakujú.
    • Procesory ARM podporujú inštrukcie SME 2 (Scalable Matrix Extension).
    • Pre architektúry s390x a RISC-V RV64 je implementovaná podpora pre mechanizmus „BPF trampoline“, ktorý umožňuje minimalizovať réžiu pri prenose hovorov medzi programom kernel a BPF.
    • Na systémoch s procesormi založenými na architektúre RISC-V bolo implementované použitie inštrukcií "ZBB" na urýchlenie operácií reťazcov.
    • Pre systémy založené na architektúre inštrukčnej sady LoongArch (používa sa v procesoroch Loongson 3 5000 a implementuje sa nový RISC ISA podobný MIPS a RISC-V), podpora randomizácie adresného priestoru jadra (KASLR), premiestnenie jadra v pamäti (premiestnenie ), zarážka hardvérových bodov a mechanizmus ksondy.
    • Mechanizmus DAMOS (Data Access Monitoring-based Operations Schemes), ktorý vám umožňuje uvoľniť pamäť na základe frekvencie prístupu do pamäte, podporuje filtre na vylúčenie určitých oblastí pamäte zo spracovania v DAMOS.
    • Minimálna štandardná knižnica C Nolibc implementuje podporu pre architektúru s390 a inštrukčnú sadu Arm Thumb1 (okrem podpory pre ARM, AArch64, i386, x86_64, RISC-V a MIPS).
    • Objtool bol optimalizovaný tak, aby zrýchlil zostavovanie jadra a znížil špičkovú spotrebu pamäte počas zostavovania (pri zostavovaní jadra v režime „allyesconfig“ nie sú problémy s núteným ukončením procesov na systémoch s 32 GB RAM).
    • Bola ukončená podpora zostavovania jadra kompilátorom Intel ICC, ktorý bol dlhodobo nefunkčný a nikto neprejavil želanie ho opraviť.
  • Diskový subsystém, I/O a súborové systémy
    • tmpfs podporuje mapovanie ID užívateľa pripojeného súborového systému, ktoré sa používa na mapovanie súborov konkrétneho užívateľa na pripojenom cudzom oddiele na iného užívateľa na aktuálnom systéme.
    • V Btrfs sa kvôli zníženiu fragmentácie skupín blokov pri prideľovaní blokov delia rozsahy podľa veľkosti, t.j. akákoľvek skupina blokov je teraz obmedzená na malé (do 128 KB), stredné (do 8 MB) a veľké rozsahy. Implementácia raid56 bola prerobená. Prepracovaný kód na kontrolu kontrolných súčtov. Boli vykonané optimalizácie výkonu, aby sa operácia odosielania zrýchlila až 10-krát pomocou vyrovnávacej pamäte utime pre adresáre a vykonávaním príkazov iba v prípade potreby. 10x rýchlejšie operácie fiemap vynechaním kontrol spätných odkazov pre zdieľané dáta (snímky). Operácie s metadátami sú zrýchlené o XNUMX % vďaka optimalizácii vyhľadávania kľúčov v štruktúrach b-stromov.
    • Vylepšený výkon ext4 FS tým, že umožňuje viacerým procesom súčasne vykonávať priame I/O operácie do vopred pridelených blokov pomocou zdieľaných zámkov inode namiesto exkluzívnych zámkov.
    • Vo f2fs sa pracovalo na zlepšení čitateľnosti kódu. Opravené dôležité problémy súvisiace s atómovým zápisom a novou vyrovnávacou pamäťou rozsahu.
    • EROFS (Enhanced Read-Only File System), navrhnutý na použitie na oddieloch len na čítanie, implementuje schopnosť viazať operácie dekompresie komprimovaných súborov na CPU, aby sa znížilo oneskorenie prístupu k údajom.
    • BFQ I/O plánovač pridal podporu pre pokročilé rotujúce diskové jednotky, ako sú tie, ktoré používajú viacero samostatne riadených jednotiek (Multi Actuator).
    • Do implementácie klienta a servera NFS bola pridaná podpora pre šifrovanie údajov pomocou algoritmu AES-SHA2.
    • Subsystém FUSE (Filesystems In User Space) pridal podporu pre mechanizmus rozšírenia dotazu, ktorý vám umožňuje vložiť do dotazu ďalšie informácie. Na základe tejto vlastnosti je implementované doplnenie skupinových identifikátorov do požiadavky FS, ktoré sú potrebné na zohľadnenie prístupových práv pri vytváraní objektov vo FS (create, mkdir, symbolický odkaz, mknod).
  • Virtualizácia a bezpečnosť
    • Hypervízor KVM pre systémy x86 pridáva podporu pre rozšírené hyperhovory Hyper-V a poskytuje im preposielanie do obsluhy bežiacej v hostiteľskom prostredí používateľského priestoru. Zmena umožnila implementovať podporu pre vnorené spúšťanie hypervízora Hyper-V.
    • KVM uľahčuje obmedzenie prístupu hosťujúceho systému k udalostiam PMU (Performance Monitor Unit) súvisiacim s meraním výkonu.
    • Mechanizmus memfd, ktorý vám umožňuje identifikovať pamäťovú oblasť prostredníctvom deskriptora súboru odovzdávaného medzi procesmi, bola pridaná možnosť vytvárať oblasti, v ktorých je spustenie kódu zakázané (nespustiteľný memfd) a nie je možné nastaviť práva na spustenie budúcnosti.
    • Bola pridaná nová operácia PR_SET_MDWE prctl na blokovanie pokusov o zahrnutie prístupových práv do pamäte, ktoré umožňujú zápis aj spustenie súčasne.
    • Predvolene pridaná a povolená ochrana proti útokom triedy Spectre, implementovaná na základe automatického režimu IBRS (Enhanced Indirect Branch Restricted Speculation) navrhnutého v procesoroch AMD Zen 4, ktorý umožňuje adaptívne povoliť a zakázať špekulatívne vykonávanie pokynov počas prerušenia spracovanie, systémové volania a prepínanie kontextu. Navrhovaná ochrana má za následok nižšiu réžiu v porovnaní s ochranou Retpoline.
    • Rieši chybu zabezpečenia, ktorá by mohla obísť ochranu pred útokmi Spectre v2 pri použití technológie simultánneho multithreadingu (SMT alebo Hyper-Threading) a spôsobenú zakázaním STIBP (Single Thread Indirect Branch Predictors) pri výbere režimu ochrany IBRS.
    • Pre systémy založené na ARM64 bol pridaný nový cieľ zostavenia „virtconfig“, ktorý po zvolení aktivuje iba minimálnu sadu komponentov jadra potrebných na spustenie vo virtualizačných systémoch.
    • Pridaná podpora pre filtrovanie systémových hovorov pomocou mechanizmu seccomp pre architektúru m68k.
    • Pridaná podpora pre zariadenia CRB TPM2 (Command Response Buffer) vstavané v procesoroch AMD Ryzen založené na technológii Microsoft Pluton.
  • Sieťový subsystém
    • Bolo pridané rozhranie netlink na konfiguráciu podvrstvy PLCA (Physical Layer Collision Avoidance), definovanej v špecifikácii IEEE 802.3cg-2019 a používanej v 802.3cg (10Base-T1S) ethernetových sieťach optimalizovaných na pripojenie zariadení IoT a priemyselných systémov. Použitie PLCA zlepšuje výkon v sieťach Ethernet so zdieľanými médiami.
    • Podpora rozhrania API „bezdrôtových rozšírení“ na správu bezdrôtových rozhraní WiFi 7 (802.11be) bola ukončená, pretože toto rozhranie API nepokrýva všetky potrebné nastavenia. Pri pokuse o použitie rozhrania API „bezdrôtových rozšírení“, ktoré je naďalej podporované ako emulovaná vrstva, sa teraz na väčšine súčasných zariadení zobrazí upozornenie.
    • Pripravila sa podrobná dokumentácia k netlink API (pre vývojárov jadra a pre vývojárov aplikácií v užívateľskom priestore). Nástroj ynl-gen-c bol implementovaný na generovanie C-kódu na základe špecifikácií YAML protokolu Netlink.
    • Do sieťových soketov bola pridaná podpora pre možnosť IP_LOCAL_PORT_RANGE, aby sa zjednodušila konfigurácia odchádzajúcich pripojení prostredníctvom prekladačov adries bez použitia SNAT. Pri použití rovnakej adresy IP na viacerých hostiteľoch umožňuje IP_LOCAL_PORT_RANGE každému hostiteľovi používať svoj vlastný rozsah odchádzajúcich sieťových portov a na bráne posielať pakety na základe čísel portov.
    • Pre MPTCP (MultiPath TCP) je implementovaná schopnosť spracovať zmiešané toky, ktoré používajú protokoly IPv4 a IPv6. MPTCP je rozšírenie protokolu TCP na organizovanie prevádzky TCP spojenia s doručovaním paketov súčasne niekoľkými cestami cez rôzne sieťové rozhrania viazané na rôzne IP adresy.
    • Pre IPv4 je implementovaná možnosť využitia BIG TCP rozšírenia, ktoré umožňuje zvýšiť maximálnu veľkosť TCP paketu až na 4 GB pre optimalizáciu prevádzky vysokorýchlostných interných sietí dátových centier. Toto zvýšenie veľkosti paketu so 16-bitovým poľom hlavičky sa dosahuje implementáciou „jumbo“ paketov, ktoré majú veľkosť hlavičky IP nastavenú na 0 a skutočnú veľkosť prenášanú v samostatnom 32-bitovom poli v samostatnej pripojenej hlavičke.
    • Bol pridaný nový parameter sysctl default_rps_mask, prostredníctvom ktorého môžete nastaviť predvolenú konfiguráciu RPS (Receive Packet Steering), ktorá je zodpovedná za distribúciu spracovania prichádzajúcej prevádzky medzi jadrá CPU na úrovni obsluhy prerušení.
    • Ukončená podpora pre disciplíny zaraďovania do frontu na obmedzenie prevádzky CBQ (trieda založená na triedach), ATM (virtuálne okruhy ATM), dsmark (značka diferencovanej služby), tcindex (index riadenia prevádzky) a RSVP (protokol rezervácie zdrojov). Od týchto disciplín sa už dlho upustilo a nikto nebol ochotný v ich podpore pokračovať.
  • Оборудование
    • Odstránené všetky grafické ovládače založené na DRI1: i810 (staré integrované grafické karty Intel 8xx), mga (GPU Matrox), r128 (GPU ATI Rage 128 vrátane kariet Rage Fury, XPERT 99 a XPERT 128), savage (GPU S3 Savage), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) a via (VIA IGP), ktoré boli v roku 2016 zastarané a v Mesa nie sú podporované od roku 2012.
    • Odstránené zastarané ovládače framebuffer (fbdev) omap1, s3c2410, tmiofb a w100fb.
    • Bol pridaný ovládač DRM pre VPU (Versatile Processing Unit) integrovanú do procesorov Intel Meteor Lake (14. generácia), ktorý je určený na urýchlenie operácií počítačového videnia a strojového učenia. Ovládač je implementovaný pomocou subsystému „accel“, zameraného na poskytovanie podpory pre výpočtové akcelerátory, ktoré môžu byť dodávané ako vo forme samostatných ASIC, tak aj ako IP bloky vo vnútri SoC a GPU.
    • Ovládač i915 (Intel) rozširuje podporu pre diskrétne grafické karty Intel Arc (DG2/Alchemist), poskytuje predbežnú podporu pre GPU Meteor Lake a zahŕňa podporu pre GPU Intel Xe HP 4tile.
    • Ovládač amdgpu pridáva podporu technológie AdaptiveSync a možnosť používať Secure Display s viacerými displejmi. Aktualizovaná podpora pre DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.xa DP 2.1.
    • Pridaná podpora pre platformy SM8350, SM8450 SM8550, SDM845 a SC8280XP do ovládača msm (GPU Qualcomm Adreno).
    • Ovládač Nouveau zrušil podporu pre staré hovory ioctl.
    • Do ovládača etnaviv bola pridaná experimentálna podpora pre NPU VerSilicon (VeriSilicon Neural Network Processor).
    • Bol implementovaný ovládač pata_parport pre IDE disky pripojené cez paralelný port. Pridaný ovládač umožnil odstrániť starý ovládač PARIDE z jadra a aktualizovať subsystém ATA. Obmedzením nového ovládača je nemožnosť súčasného pripojenia tlačiarne a disku cez paralelný port.
    • Pridaný ovládač ath12k pre bezdrôtové karty založené na čipoch Qualcomm s podporou Wi-Fi 7. Pridaná podpora pre bezdrôtové karty založené na čipoch RealTek RTL8188EU.
    • Pridaná podpora pre 46 dosiek založených na architektúre ARM64, vrátane Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD a tiež zariadenia založené na SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 a SDM632, TV box Rockchips RK3128, RV1126 Vision, RK3588, RK3568, RK3566,AM3588RK3328,AM3 a 642 KAM654 68/AM69 / AMXNUMX).

Latinskoamerická nadácia pre slobodný softvér zároveň vytvorila variant úplne bezplatného jadra 6.3 - Linux-libre 6.3-gnu, zbavený prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorých rozsah je obmedzený výrobca. Vo vydaní 6.3 boli bloby vyčistené v nových ovládačoch ath12k, aw88395 a peb2466, ako aj v nových súboroch stromu zariadení pre zariadenia qcom založené na AArch64. Aktualizovaný kód čistenia blob v ovládačoch a podsystémoch amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, ako aj v ovládačoch pre karty DVB so softvérovým dekódovaním a v predkompilovaných súboroch BPF. Zastavené vyčistenie ovládačov mga, r128, tm6000, cpia2 a r8188eu, keď boli odstránené z jadra. Vylepšené čistenie blob ovládača i915.

Zdroj: opennet.ru

Pridať komentár