Vydanie jadra Linux 5.15

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie linuxového jadra 5.15. Pozoruhodné zmeny zahŕňajú: nový ovládač NTFS s podporou zápisu, modul ksmbd s implementáciou servera SMB, subsystém DAMON na monitorovanie prístupu do pamäte, primitívy uzamykania v reálnom čase, podpora fs-verity v Btrfs, systémové volanie process_mrelease pre pamäť systému odozvy na hladovanie, modul vzdialenej certifikácie dm-ima.

Nová verzia obsahuje 13499 1888 opráv od 42 10895 vývojárov, veľkosť záplaty je 632522 MB (zmeny sa dotkli 299966 45 súborov, bolo pridaných 5.15 14 riadkov kódu, zmazaných 14 6 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 % súvisí so súborovými systémami a XNUMX % súvisia s internými subsystémami jadra.

Hlavné inovácie:

  • Diskový subsystém, I/O a súborové systémy
    • Jadro prijalo novú implementáciu súborového systému NTFS, ktorú otvoril Paragon Software. Nový ovládač dokáže pracovať v režime zápisu a podporuje všetky funkcie aktuálnej verzie NTFS 3.1 vrátane rozšírených atribútov súborov, prístupových zoznamov (ACL), režimu kompresie údajov, efektívnej práce s prázdnymi miestami v súboroch (riedkych) a prehrávania zmien z log na obnovenie integrity po zlyhaniach.
    • Súborový systém Btrfs podporuje mechanizmus fs-verity, ktorý sa používa na transparentnú kontrolu integrity a autentickosti jednotlivých súborov pomocou kryptografických hashov alebo kľúčov spojených so súbormi, uložených v oblasti metadát. Predtým bola fs-verity dostupná len pre súborové systémy Ext4 a F2fs.

      Btrfs tiež pridáva podporu pre mapovanie ID používateľov pre pripojené súborové systémy (predtým podporované pre súborové systémy FAT, ext4 a XFS). Táto funkcia vám umožňuje porovnať súbory konkrétneho používateľa na pripojenom cudzom oddiele s iným používateľom v aktuálnom systéme.

      Ďalšie zmeny v Btrfs zahŕňajú: rýchlejšie pridávanie kľúčov do indexu adresárov na zlepšenie výkonu pri vytváraní súborov; schopnosť pracovať raid0 s jedným zariadením a raid10 s dvoma (napríklad počas procesu rekonfigurácie poľa); voľba “rescue=ibadroots” na ignorovanie nesprávneho stromu rozsahu; zrýchlenie operácie „odoslania“; zníženie uzamykacích konfliktov počas operácií premenovania; schopnosť používať 4K sektory na systémoch s veľkosťou stránky pamäte 64K.

    • V XFS bola stabilizovaná možnosť používať dátumy po roku 2038 v súborovom systéme. Implementovaný mechanizmus pre oneskorenú deaktiváciu inode a podporu pre oneskorenú inštaláciu a odstránenie atribútov súborov. Na odstránenie problémov bola odstránená možnosť zakázať diskové kvóty pre už pripojené oddiely (kvóty môžete vynútiť, ale výpočet s nimi spojený bude pokračovať, takže na ich úplné vypnutie je potrebné opätovné pripojenie).
    • V EXT4 sa vykonala práca na zvýšení výkonu zapisovania vyrovnávacích pamätí delalloc a spracovania osirotených súborov, ktoré naďalej existujú vďaka skutočnosti, že zostávajú otvorené, ale nie sú spojené s adresárom. Spracovanie operácií vyradenia bolo presunuté z vlákna jbd2 kthread, aby sa predišlo blokovaniu operácií s metadátami.
    • F2FS pridal možnosť "discard_unit=block|segment|section" na viazanie operácií vyradenia (označenie uvoľnených blokov, ktoré už nemusia byť fyzicky uložené) na zarovnanie vzhľadom na blok, sektor, segment alebo sekciu. Pridaná podpora pre sledovanie zmien v I/O latencii.
    • Súborový systém EROFS (Extendable Read-Only File System) pridáva priamu I/O podporu pre súbory uložené bez kompresie, ako aj podporu fiemap.
    • OverlayFS implementuje správne zaobchádzanie s príznakmi pripojenia "nezmeniteľný", "len pridanie", "synchronizácia" a "noatime".
    • NFS zlepšilo spracovanie situácií, keď server NFS prestane reagovať na požiadavky. Pridaná možnosť pripojenia zo servera, ktorý sa už používa, ale je prístupný cez inú sieťovú adresu.
    • Začali sa prípravy na prepísanie subsystému FSCACHE.
    • Pridaná podpora pre EFI partície s neštandardným umiestnením GPT tabuliek.
    • Mechanizmus fanotify implementuje nový príznak FAN_REPORT_PIDFD, ktorý spôsobí, že pidfd bude zahrnuté do vrátených metadát. Pidfd pomáha zvládnuť situácie opätovného použitia PID na presnejšiu identifikáciu procesov pristupujúcich k monitorovaným súborom (pidfd je priradený ku konkrétnemu procesu a nemení sa, zatiaľ čo PID môže byť priradený k inému procesu po ukončení aktuálneho procesu spojeného s týmto PID).
    • Do systémového volania move_mount() bola pridaná možnosť pridať body pripojenia do existujúcich zdieľaných skupín, čo rieši problémy s ukladaním a obnovovaním stavu procesu v CRIU, keď je v izolovaných kontajneroch zdieľaných viacero priestorov pripojenia.
    • Pridaná ochrana proti skrytým rasovým podmienkam, ktoré by mohli potenciálne spôsobiť poškodenie súboru pri vykonávaní čítania z vyrovnávacej pamäte počas spracovania prázdnych miest v súbore.
    • Podpora povinného (povinného) uzamykania súborov, implementovaná prostredníctvom blokovania systémových volaní, ktoré vedú k zmene súboru, bola ukončená. Vzhľadom na možné závodné podmienky boli tieto zámky považované za nespoľahlivé a pred mnohými rokmi boli zastarané.
    • Odstránil sa subsystém LightNVM, ktorý umožňoval priamy prístup k SSD disku a obchádzal emulačnú vrstvu. LightNVM stratil svoj význam po príchode štandardov NVMe, ktoré zabezpečujú zónovanie (ZNS, Zoned Namespace).
  • Pamäťové a systémové služby
    • Implementovaný bol subsystém DAMON (Data Access MONitor), ktorý umožňuje sledovať aktivitu súvisiacu s prístupom k dátam v RAM vo vzťahu k vybranému procesu bežiacemu v užívateľskom priestore. Subsystém vám umožňuje analyzovať, ku ktorým pamäťovým oblastiam proces pristupoval počas celej svojej činnosti a ktoré pamäťové oblasti zostali nenárokované. DAMON sa vyznačuje nízkou záťažou CPU, nízkou spotrebou pamäte, vysokou presnosťou a predvídateľnou konštantnou réžiou, nezávisle od veľkosti. Subsystém môže byť použitý jadrom na optimalizáciu správy pamäte a obslužnými programami v užívateľskom priestore na pochopenie toho, čo presne proces robí, a optimalizáciu využitia pamäte, napríklad uvoľnením prebytočnej pamäte pre systém.
    • Systémové volanie process_mrelease bolo implementované na urýchlenie procesu uvoľnenia pamäte procesu, ktorý dokončí svoju realizáciu. Za normálnych okolností nie je uvoľnenie prostriedkov a ukončenie procesu okamžité a môže sa z rôznych dôvodov oneskoriť, čo narúša systémy včasnej odozvy pamäte používateľského priestoru, ako je oomd (poskytovaný systemd) a lmkd (používaný Androidom). Volaním process_mrelease môžu takéto systémy predvídateľnejšie spustiť obnovu pamäte z vynútených procesov.
    • Z vetvy jadra PREEMPT_RT, ktorá vyvíja podporu pre prevádzku v reálnom čase, boli prenesené varianty primitív na organizovanie zámkov mutex, ww_mutex, rw_semaphore, spinlock a rwlock, založené na subsystéme RT-Mutex. Zmeny boli pridané do slab alokátora SLUB na zlepšenie prevádzky v režime PREEMPT_RT a zníženie vplyvu na prerušenia.
    • Do cgroup bola pridaná podpora pre atribút plánovača úloh SCHED_IDLE, čo vám umožňuje poskytnúť tento atribút všetkým procesom skupiny, ktorá je súčasťou špecifickej cgroup. Tie. tieto procesy sa spustia len vtedy, keď v systéme nečakajú na vykonanie žiadne iné úlohy. Na rozdiel od nastavenia atribútu SCHED_IDLE pre každý proces jednotlivo, pri viazaní SCHED_IDLE na cgroup sa pri výbere úlohy na vykonanie berie do úvahy relatívna váha úloh v rámci skupiny.
    • Mechanizmus účtovania spotreby pamäte v cgroup bol rozšírený o možnosť sledovať ďalšie dátové štruktúry jadra, vrátane štruktúr vytvorených pre dopytovanie, spracovanie signálu a menné priestory.
    • Pridaná podpora pre asymetrické plánovanie viazania úloh na jadrá procesorov na architektúrach, v ktorých niektoré CPU umožňujú vykonávanie 32-bitových úloh a niektoré fungujú iba v 64-bitovom režime (napríklad ARM). Nový režim vám umožňuje pri plánovaní 32-bitových úloh brať do úvahy iba CPU, ktoré podporujú 32-bitové úlohy.
    • Asynchrónne I/O rozhranie io_uring teraz podporuje otváranie súborov priamo v indexovej tabuľke pevných súborov bez použitia deskriptora súboru, čo umožňuje výrazne urýchliť niektoré typy operácií, ale ide proti tradičnému unixovému procesu používania deskriptorov súborov. na otváranie súborov.

      io_uring pre subsystém BIO (Block I/O Layer) implementuje nový mechanizmus recyklácie („BIO recyklácia“), ktorý znižuje réžiu v procese správy vnútornej pamäte a zvyšuje počet spracovaných I/O operácií za sekundu približne o 10 %. . io_uring tiež pridáva podporu pre systémové volania mkdirat(), symlinkat() a linkat().

    • Pre programy BPF bola implementovaná možnosť vyžiadania a spracovania udalostí časovača. Bol pridaný iterátor pre UNIX sockety a bola implementovaná možnosť získať a nastaviť voľby socketov pre setsockopt. BTF dumper teraz podporuje typizované dáta.
    • V systémoch NUMA s rôznymi typmi pamäte, ktoré sa líšia výkonom, sa po vyčerpaní voľného miesta vyradené pamäťové stránky prenesú z dynamickej pamäte (DRAM) do pomalšej trvalej pamäte (Persistent Memory) namiesto odstránenia týchto stránok. Testy ukázali, že takáto taktika zvyčajne zlepšuje výkon na takýchto systémoch. NUMA tiež poskytuje možnosť alokovať pamäťové stránky pre proces z vybranej sady NUMA uzlov.
    • Pre architektúru ARC bola implementovaná podpora troj- a štvorúrovňových tabuliek stránok pamäte, čo ďalej umožní podporu 64-bitových procesorov ARC.
    • Pre architektúru s390 bola implementovaná možnosť využiť mechanizmus KFENCE na detekciu chýb pri práci s pamäťou a pridaná podpora pre detektor rasových podmienok KCSAN.
    • Pridaná podpora pre indexovanie zoznamu výstupných správ cez printk(), čo vám umožňuje získať všetky takéto správy naraz a sledovať zmeny v užívateľskom priestore.
    • mmap() odstránila podporu pre voľbu VM_DENYWRITE a kód jadra bol odstránený z používania režimu MAP_DENYWRITE, čo znížilo počet situácií, ktoré vedú k zablokovaniu zápisov do súboru s chybou ETXTBSY.
    • Do podsystému sledovania bol pridaný nový typ kontrol „Event probes“, ktorý možno pripojiť k existujúcim udalostiam sledovania a definovať tak váš vlastný výstupný formát.
    • Pri zostavovaní jadra pomocou kompilátora Clang sa teraz používa predvolený assembler z projektu LLVM.
    • Ako súčasť projektu na zbavenie jadra kódu, ktorý vedie k varovaniam vydávaným kompilátorom, bol vykonaný experiment so štandardne povoleným režimom „-Werror“, v ktorom sa varovania kompilátora spracovávajú ako chyby. V rámci prípravy na vydanie 5.15 začal Linus akceptovať iba zmeny, ktoré neviedli k varovaniu pri zostavovaní jadra a povolil zostavovanie s "-Werror", ale potom súhlasil s tým, že takéto rozhodnutie bolo predčasné a oneskorené so štandardným povolením "-Werror". . Zahrnutie príznaku „-Werror“ pri zostavovaní sa riadi pomocou parametra WERROR, ktorý je štandardne nastavený na COMPILE_TEST, t.j. Zatiaľ je povolená len pre testovacie zostavy.
  • Virtualizácia a bezpečnosť
    • Do Device Mapper (DM) bol pridaný nový obslužný program dm-ima s implementáciou mechanizmu vzdialenej certifikácie založenej na subsystéme IMA (Integrity Measurement Architecture), ktorý umožňuje externej službe overiť stav subsystémov jadra, aby sa zabezpečila ich autentickosť. . V praxi dm-ima umožňuje vytvárať úložiská pomocou Device Mapper, ktoré sú prepojené s externými cloudovými systémami, v ktorých sa kontroluje platnosť spustenej cieľovej konfigurácie DM pomocou IMA.
    • prctl() implementuje novú voľbu PR_SPEC_L1D_FLUSH, ktorá keď je povolená, spôsobí, že jadro vyprázdni obsah vyrovnávacej pamäte prvej úrovne (L1D) pri každom prepnutí kontextu. Tento režim umožňuje, selektívne pre najdôležitejšie procesy, implementovať dodatočnú ochranu proti používaniu útokov postranných kanálov vykonávaných na určenie údajov, ktoré sa usadili vo vyrovnávacej pamäti v dôsledku zraniteľností spôsobených špekulatívnym vykonávaním pokynov v CPU. Cena aktivácie PR_SPEC_L1D_FLUSH (predvolene nie je povolená) je významným znížením výkonu.
    • Je možné zostaviť jadro s pridaním príznaku „-fzero-call-used-regs=used-gpr“ do GCC, ktorý zaisťuje, že všetky registre sú vynulované pred vrátením kontroly z funkcie. Táto možnosť vám umožňuje chrániť sa pred únikom informácií z funkcií a znížiť o 20 % počet blokov vhodných na vytváranie modulov gadget ROP (Return-Oriented Programming) v exploitoch.
    • Implementovaná bola možnosť vytvárať jadrá pre architektúru ARM64 vo forme klientov pre hypervízor Hyper-V.
    • Navrhuje sa nový rámec vývoja ovládačov „VDUSE“, ktorý umožňuje implementovať virtuálne blokové zariadenia v užívateľskom priestore a používať Virtio ako prenos pre prístup z hosťujúcich systémov.
    • Pridaný ovládač Virtio pre zbernicu I2C, ktorý umožňuje emulovať ovládače I2C v režime paravirtualizácie pomocou samostatných backendov.
    • Pridaný ovládač Virtio gpio-virtio, ktorý hosťom umožní prístup k linkám GPIO poskytovaným hostiteľským systémom.
    • Pridaná možnosť obmedziť prístup k stránkam pamäte pre ovládače zariadení s podporou DMA na systémoch bez I/O MMU (jednotka na správu pamäte).
    • Hypervízor KVM má schopnosť zobrazovať štatistiky vo forme lineárnych a logaritmických histogramov.
  • Sieťový subsystém
    • Do jadra bol pridaný modul ksmbd s implementáciou súborového servera pomocou protokolu SMB3. Modul dopĺňa implementáciu klienta SMB predtým dostupnú v jadre a na rozdiel od servera SMB bežiaceho v užívateľskom priestore je efektívnejší z hľadiska výkonu, spotreby pamäte a integrácie s pokročilými funkciami jadra. Ksmbd je ponúkaný ako vysokovýkonné rozšírenie Samba pripravené na zabudovanie, ktoré sa podľa potreby integruje s nástrojmi a knižnicami Samba. Možnosti ksmbd zahŕňajú vylepšenú podporu technológie ukladania do medzipamäte distribuovaných súborov (prenájom SMB) na lokálnych systémoch, čo môže výrazne znížiť prevádzku. V budúcnosti plánujú pridať podporu pre RDMA („smbdirect“) a rozšírenia protokolu súvisiace so zvýšením spoľahlivosti šifrovania a overovania pomocou digitálnych podpisov.
    • Klient CIFS už nepodporuje NTLM a slabšie autentifikačné algoritmy založené na DES používané v protokole SMB1.
    • Podpora multicastu je implementovaná pri implementácii sieťových mostov pre vlan.
    • Ovládač spájania, ktorý sa používa na agregáciu sieťových rozhraní, pridal podporu pre subsystém XDP (eXpress Data Path), ktorý vám umožňuje manipulovať so sieťovými paketmi vo fáze pred ich spracovaním sieťovým zásobníkom jadra Linuxu.
    • Bezdrôtový stack mac80211 podporuje 6GHZ STA (Special Temporary Authorization) v režimoch LPI, SP a VLP, ako aj možnosť nastavenia individuálneho TWT (Target Wake Time) v režime prístupového bodu.
    • Pridaná podpora pre MCTP (Management Component Transport Protocol), ktorý sa používa na interakciu medzi riadiacimi jednotkami a pridruženými zariadeniami (hostiteľské procesory, periférne zariadenia atď.).
    • 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 podporu pre adresy v režime fullmesh.
    • Do netfilter boli pridané obslužné programy pre sieťové toky zapuzdrené v protokole SRv6 (Segment Routing IPv6).
    • Pridaná podpora sockmap pre Unixové streamovacie zásuvky.
  • Оборудование
    • Ovládač amdgpu podporuje APU Cyan Skillfish (vybavené GPU Navi 1x). APU Yellow Carp teraz podporuje video kodeky. Vylepšená podpora GPU Aldebaran. Pridané nové mapové identifikátory založené na GPU Navi 24 „Beige Goby“ a RDNA2. Navrhuje sa vylepšená implementácia virtuálnych obrazoviek (VKMS). Bola implementovaná podpora sledovania teploty čipov AMD Zen 3.
    • Ovládač amdkfd (pre diskrétne GPU, ako napríklad Polaris) implementuje správcu zdieľanej virtuálnej pamäte (SVM, zdieľaná virtuálna pamäť) založený na subsystéme HMM (Heterogeneous memory management), ktorý umožňuje používanie zariadení s vlastnými jednotkami správy pamäte (MMU). , jednotka správy pamäte), 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.
    • Ovládač i915 pre grafické karty Intel rozširuje využitie správcu videopamäte TTM a zahŕňa možnosť spravovať spotrebu energie na základe GuC (Graphics micro Controller). Začali sa prípravy na implementáciu podpory pre grafickú kartu Intel ARC Alchemist a GPU Intel Xe-HP.
    • Ovládač nouveau implementuje ovládanie podsvietenia pre eDP panely pomocou DPCD (DisplayPort Configuration Data).
    • Do ovládača msm bola pridaná podpora pre GPU Adreno 7c Gen 3 a Adreno 680.
    • Ovládač IOMMU je implementovaný pre čip Apple M1.
    • Pridaný zvukový ovládač pre systémy založené na AMD Van Gogh APU.
    • Do stagingovej vetvy pribudol ovládač Realtek R8188EU, ktorý nahradil starú verziu ovládača (rtl8188eu) pre bezdrôtové čipy Realtek RTL8188EU 802.11 b/g/n.
    • Ovládač ocp_pt je súčasťou dosky PCIe vyvinutej spoločnosťou Meta (Facebook) s implementáciou miniatúrnych atómových hodín a prijímača GNSS, ktorý možno použiť na organizáciu prevádzky samostatných serverov pre presnú synchronizáciu času.
    • Pridaná podpora pre smartfóny Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle.
    • Pridaná podpora pre ARM SoС a NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon SDM636ase-C, HSM Snapdragon SDM8150ase-C. dosky -3G/M2e-3G, Marvell CN2x, ASpeed ​​​​AST913 (Facebook Cloudripper, serverové dosky Elbert a Fuji), 2600KOpen STiH4-b418.
    • Pridaná podpora pre LCD panely Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ETM9341K3300Bilitek, VCA33B XC20 7430, Samsung DB2401, WideChips WSXNUMX .
    • Pridaný ovládač LiteETH s podporou ethernetových radičov používaných v softvérových SoC LiteX (pre FPGA).
    • Do ovládača usb-audio bola pridaná možnosť nízkej latencie na ovládanie zahrnutia prevádzky do režimu minimálnej latencie. Tiež pridaná možnosť quirk_flags na odovzdanie nastavení špecifických pre zariadenie.

Latinská Amerika Free Software Foundation zároveň vytvorila verziu úplne bezplatného jadra 5.15 - Linux-libre 5.15-gnu, zbavenú prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorých rozsah je obmedzený. výrobcom. Nové vydanie implementuje výstup správy do protokolu o dokončení čistenia. Problémy s generovaním balíčkov pomocou mkspec boli opravené, podpora pre snap balíčky bola vylepšená. Odstránené niektoré varovania zobrazované pri spracovaní hlavičkového súboru firmware.h. Povolený výstup niektorých typov varovaní ("format-extra-args", komentáre, nepoužívané funkcie a premenné) pri zostavovaní v režime "-Werror". Pridané čistenie ovládača gehc-achc. Aktualizovaný kód čistenia blob v ovládačoch a podsystémoch adreno, btusb, btintel, brcmfmac, aarch64 qcom. Čistenie ovládačov prism54 (odstránené) a rtl8188eu (nahradené r8188eu) bolo zastavené.

Zdroj: opennet.ru

Pridať komentár