Linuxi 6.3 kerneli väljalase

Pärast kahekuulist arendustööd esitles Linus Torvalds Linuxi kerneli 6.3 väljalaset. Märkimisväärsemate muudatuste hulgas: ARM-i pärandplatvormide ja graafikadraiverite puhastamine, Rusti keele toe jätkuv integreerimine, hwnoise'i utiliit, puna-must puustruktuuride tugi BPF-is, BIG TCP-režiim IPv4 jaoks, sisseehitatud Dhrystone'i etalon, võimalus keelata. täitmine memfd-s, toetab BPF-i abil HID-draiverite loomist, Btrfs-is on tehtud muudatusi, et vähendada plokirühmade killustatust.

Uus versioon sisaldab 15637 2055 parandust 76 arendajalt; paiga suurus - 14296 MB (muudatused puudutasid 1023183 faili, lisati 883103 koodirida, kustutati 16843 rida). Võrdluseks, eelmine versioon pakkus 2178 62 parandust 39 arendajalt; plaastri suurus on 6.3 MB. Umbes 15% kõigist 10 tuumas tehtud muudatustest on seotud seadme draiveritega, ligikaudu 5% muudatustest on seotud riistvaraarhitektuurile omase koodi värskendamisega, 3% on seotud võrgupinuga, XNUMX% on seotud failisüsteemidega ja XNUMX% on seotud sisemiste tuuma alamsüsteemidega.

Peamised uuendused kernelis 6.3:

  • Mälu- ja süsteemiteenused
    • Viidi läbi märkimisväärne vanade ja kasutamata ARM-plaatidega seotud koodi puhastamine, mis võimaldas vähendada tuuma lähtekoodi suurust 150 tuhande rea võrra. Rohkem kui 40 vana ARM-platvormi on eemaldatud.
    • Rakendatud on võimalus luua draivereid sisendseadmete jaoks HID (Human Interface Device) liidesega, mis on realiseeritud BPF-programmide kujul.
    • Jätkus Rust-for-Linuxi harust lisafunktsioonide ülekandmine, mis on seotud Rust keele kui teise keele kasutamisega draiverite ja tuumamoodulite arendamiseks. Rooste tugi ei ole vaikimisi lubatud ja selle tõttu ei kaasata roostet kui vajalikku kerneli ehitussõltuvust. Eelmistes väljaannetes pakutud funktsioone on laiendatud, et toetada tüüpe Arc (viitearvuga osutite rakendamine), ScopeGuard (puhastus, kui rakendusalast välja läheb) ja ForeignOwnable (pakkub osutite liikumist C ja Rust koodi vahel). Moodul 'laena' (tüüp 'Cow' ja tunnus 'ToOwned') on paketist 'alloc' eemaldatud. Tuleb märkida, et tuuma Rusti toe seisund on juba lähedal esimeste Rustis kirjutatud moodulite tuumasse vastuvõtmisele.
    • Kasutajarežiimis Linux (käitab kernelit kasutajaprotsessina) x86-64 süsteemides toetab Rusti keeles kirjutatud koodi. Lisatud tugi kasutajarežiimi Linuxi loomiseks, kasutades helinat koos lubatud lingiaja optimeerimisega (LTO).
    • Lisatud hwnoise utiliit riistvarast põhjustatud viivituste jälgimiseks. Toimingute täitmisaja hälbed (värinad) määratakse, kui katkestuse töötlemine on keelatud, ületades ühe mikrosekundi 10 arvutusminutise kohta.
    • Lisatud on tuumamoodul, mis rakendab Dhrystone'i võrdlusalust, mida saab kasutada CPU jõudluse hindamiseks ilma kasutajaruumi komponentideta konfiguratsioonides (näiteks uute SoC-de teisaldamise etapis, mis rakendavad ainult tuuma laadimist).
    • Lisatud kerneli käsureaparameeter “cgroup.memory=nobpf”, mis keelab BPF-programmide mälutarbimise arvestuse, mis võib olla kasulik isoleeritud konteineritega süsteemide jaoks.
    • BPF-programmide jaoks pakutakse välja puna-musta puu andmestruktuuri rakendamine, mis kasutab uue vastendustüübi lisamise asemel kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first).
    • Taaskäivitavate jadade (rseq, taaskäivitavad järjestused) mehhanism on lisanud protsessidele CPU numbriga identifitseeritud paralleelkäivitusidentifikaatorite (memory-map concurrency ID) edastamise võimaluse. Rseq pakub vahendit operatsioonide kiireks täitmiseks atomaarselt, mis teise lõimega katkestamisel puhastatakse ja proovitakse uuesti.
    • ARM-protsessorid toetavad SME 2 (Scalable Matrix Extension) juhiseid.
    • Arhitektuuride s390x ja RISC-V RV64 jaoks on rakendatud BPF batuudi mehhanismi tugi, mis võimaldab minimeerida üldkulusid kerneli ja BPF programmide vahel kõnede edastamisel.
    • RISC-V arhitektuuril põhinevate protsessoritega süsteemides kasutatakse stringitoimingute kiirendamiseks "ZBB" juhiseid.
    • Süsteemide puhul, mis põhinevad LoongArchi käsukomplekti arhitektuuril (kasutatakse Loongson 3 5000 protsessorites ja rakendavad uut RISC ISA-d, sarnaselt MIPS-ile ja RISC-V-le), tuuma aadressiruumi randomiseerimise (KASLR) tugi, kerneli mälu paigutuse muudatused (ümberpaigutamine). ), riistvarapunktid on rakendatud stop ja kprobe mehhanism.
    • DAMOS (Data Access Monitoring-based Operation Schemes) mehhanism, mis võimaldab vabastada mälu vastavalt mälu juurdepääsu sagedusele, toetab filtreid, mis välistavad teatud mälupiirkonnad DAMOS-is töötlemisest.
    • Nolibc minimaalse standardi C teek toetab s390 arhitektuuri ja Arm Thumb1 käsukomplekti (lisaks ARM-i, AArch64, i386, x86_64, RISC-V ja MIPS-i toele).
    • Objtool on optimeeritud kerneli kokkupanemise kiirendamiseks ja tippmälu tarbimise vähendamiseks kokkupanemise ajal (kerneli ehitamisel režiimis "allyesconfig" pole nüüd probleeme protsesside sunnitud lõpetamisega süsteemides, millel on 32 GB muutmälu).
    • Katkestatud on Inteli ICC kompilaatori kerneli kokkupanemise tugi, mis on pikka aega mittetoiminud ja keegi pole avaldanud soovi seda parandada.
  • Ketta alamsüsteem, I/O ja failisüsteemid
    • tmpfs toetab ühendatud failisüsteemide kasutajatunnuste vastendamist, mida kasutatakse ühendatud välispartitsiooni konkreetse kasutaja failide sobitamiseks praeguse süsteemi teise kasutajaga.
    • Btrfs jagatakse plokkide rühmade killustatuse vähendamiseks plokkide eraldamisel ulatused suuruse järgi, st. mis tahes plokkide rühm on nüüd piiratud väikese (kuni 128KB), keskmise (kuni 8 MB) ja suure mahuga. Raid56 rakendamine on ümber kujundatud. Kontrollsummade kontrollimise kood on ümber töötatud. Toimivust on optimeeritud, et kiirendada saatmistoimingut kuni 10 korda, salvestades kataloogide vahemällu ja täites käske ainult vajaduse korral. Fiemapi toimingud on nüüd kolm korda kiiremad, jättes vahele jagatud andmete (hetktõmmiste) tagasilinkide kontrollimise. Toiminguid metaandmetega on kiirendatud 10%, optimeerides võtmete otsimist b-puu struktuurides.
    • Ext4 failisüsteemi jõudlust on parandatud, võimaldades mitmel protsessil samaaegselt teha otsesisendi-/väljundoperatsioone eelnevalt eraldatud plokkidel, kasutades eksklusiivsete lukkude asemel jagatud inode lukke.
    • F2fs-is on tehtud tööd koodi loetavuse parandamiseks. Lahendatud on olulised probleemid, mis on seotud aatomikirjutuste ja uue ulatuse vahemäluga.
    • EROFS (Enhanced Read-Only File System) failisüsteem, mis on mõeldud kasutamiseks kirjutuskaitstud partitsioonides, rakendab võimalust siduda tihendatud faili sisu dekompresseerimistoimingud protsessoriga, et vähendada andmetele juurdepääsu latentsust.
    • BFQ I/O planeerija on lisanud toe täiustatud pöörlevatele kettadraividele, näiteks neile, mis kasutavad mitut eraldi juhitavat peadraivi (mitmeajami).
    • NFS-i kliendi- ja serverirakendusele on lisatud andmete krüptimise tugi AES-SHA2 algoritmi abil.
    • Alamsüsteemi FUSE (Filesystems In User Space) on lisatud päringu laiendusmehhanismi tugi, mis võimaldab päringusse paigutada lisateavet. Selle funktsiooni alusel on võimalik FS-i päringule lisada grupi identifikaatoreid, mis on vajalikud juurdepääsuõiguste arvestamiseks objektide loomisel FS-is (create, mkdir, symlink, mknod).
  • Virtualiseerimine ja turvalisus
    • KVM-i hüperviisor x86-süsteemidele on lisanud Hyper-V laiendatud hüperkõnede toe ja võimaldanud nende edastamise kasutajaruumis hostikeskkonnas töötavale töötlejale. Muudatus võimaldas juurutada Hyper-V hüperviisori pesastatud käivitamise toe.
    • KVM hõlbustab külaliste juurdepääsu piiramist jõudluse mõõtmisega seotud PMU (Performance Monitor Unit) sündmustele.
    • Memfd mehhanism, mis võimaldab protsesside vahel ülekantava failideskriptori abil mäluala tuvastada, on lisanud võimaluse luua alasid, kus koodi täitmine on keelatud (mittekäivitatav memfd) ja täitmisõigusi on edaspidi võimatu määrata. .
    • Lisatud on uus prctl-operatsioon PR_SET_MDWE, mis blokeerib katsed lubada mälu juurdepääsuõigusi, mis võimaldavad samaaegselt nii kirjutamist kui ka täitmist.
    • Kaitse Spectre klassi rünnakute vastu on lisatud ja vaikimisi lubatud, tuginedes AMD Zen 4 protsessorites pakutud automaatsele IBRS-i (Enhanced Indirect Branch Restricted Speculation) režiimile, mis võimaldab adaptiivselt lubada ja keelata käskude spekulatiivset täitmist katkestuste töötlemise, süsteemikõnede ja konteksti lülitid. Kavandatava kaitse tulemuseks on Retpoline'i kaitsega võrreldes madalam üldkulud.
    • Parandatud haavatavus, mis võimaldab vältida kaitset Spectre v2 rünnakute eest, kui kasutatakse samaaegset mitme lõime tehnoloogiat (SMT või Hyper-Threading) ja mis on põhjustatud STIBP (Single Thread Indirect Branch Predictors) mehhanismi keelamisest IBRS-i kaitserežiimi valimisel.
    • ARM64 arhitektuuril põhinevate süsteemide jaoks on lisatud uus koostu sihtmärk "virtconfig", mille valimisel aktiveeritakse ainult minimaalne tuumakomponentide komplekt, mis on vajalik virtualiseerimissüsteemides alglaadimiseks.
    • M68k arhitektuuri jaoks on lisatud seccomp-mehhanismi abil süsteemikõnede filtreerimise tugi.
    • Lisatud on tugi AMD Ryzeni protsessoritesse sisseehitatud CRB TPM2 (Command Response Buffer) seadmetele, mis põhinevad Microsoft Plutoni tehnoloogial.
  • Võrgu alamsüsteem
    • Asjade Interneti seadmete ja tööstussüsteemide ühendamiseks optimeeritud 802.3cg (2019Base-T802.3S) Etherneti võrkudes IEEE 10cg-1 spetsifikatsioonis määratletud PLCA (Physical Layer Collision Avoidance) alamkihi konfigureerimiseks on lisatud võrgulingi liides. PLCA kasutamine parandab jõudlust jagatud meediaga Etherneti võrkudes.
    • WiFi 7 (802.11be) traadita liideste haldamiseks mõeldud juhtmeta laienduste API tugi on lõpetatud, kuna see API ei kata kõiki vajalikke sätteid. Kui proovite kasutada juhtmeta laienduste API-d, mida jätkuvalt emuleeritud kihina toetatakse, kuvatakse enamiku praeguste seadmete puhul hoiatus.
    • Netlink API kohta on koostatud üksikasjalik dokumentatsioon (tuumarendajatele ja kasutajaruumi rakenduste arendajatele). Utiliit ynl-gen-c on rakendatud C-koodi genereerimiseks Netlinki protokolli YAML-i spetsifikatsioonidel.
    • Võrgupesadele on lisatud suvandi IP_LOCAL_PORT_RANGE tugi, et lihtsustada väljuvate ühenduste konfigureerimist aadressi tõlkijate kaudu ilma SNAT-i kasutamata. Kui kasutate ühte IP-aadressi mitmel hostil, võimaldab IP_LOCAL_PORT_RANGE kasutada igas hostis erinevat vahemikku väljuvaid võrguporte ja edastada pakette lüüsi pordinumbrite alusel.
    • MPTCP (MultiPath TCP) jaoks on rakendatud võimalus töödelda segavooge IPv4 ja IPv6 protokollide abil. MPTCP on TCP-protokolli laiendus TCP-ühenduse toimimise korraldamiseks koos pakettide üheaegse edastamisega mitmel marsruudil erinevate IP-aadressidega seotud erinevate võrguliideste kaudu.
    • IPv4 puhul on võimalik kasutada BIG TCP laiendust, mis võimaldab tõsta maksimaalse TCP paketi suurust 4GB-ni, et optimeerida kiirete sisemiste andmekeskuse võrkude tööd. Sarnane paketi suuruse suurenemine 16-bitise päisevälja suurusega saavutatakse "jumbo" pakettide rakendamisega, mille IP päises on suuruseks seatud 0 ja tegelik suurus edastatakse eraldi 32-bitisena. eraldi lisatud päises.
    • Lisatud on uus sysctl parameeter default_rps_mask, mille kaudu saab määrata vaikimisi RPS (Receive Packet Steering) konfiguratsiooni, mis vastutab sissetuleva liikluse töötlemise jaotamise eest CPU tuumade vahel katkestuste töötleja tasemel.
    • Järjekorratöötlusdistsipliinide tugi CBQ (klassipõhine järjekorda), ATM-i (ATM-i virtuaalsed ahelad), dsmarki (diferentseeritud teenusemarker), tcindexi (liikluse juhtimise indeks) ja RSVP (ressursside reserveerimisprotokoll) liikluse piiramiseks on lõpetatud. Need erialad on pikka aega hüljatud ja keegi ei tahtnud nende toetamist jätkata.
  • Оборудование
    • Eemaldatud kõik DRI1-põhised graafikadraiverid: i810 (vanemad integreeritud Inteli 8xx graafikakaardid), mga (Matrox GPU), r128 (ATI Rage 128 GPU, sealhulgas Rage Fury, XPERT 99 ja XPERT 128 kaardid), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) ja via (VIA IGP), mille tugi 2016. aastal katkestati ja mida pole Mesas alates 2012. aastast toetatud.
    • Eemaldatud pärandkaadripuhvri draiverid (fbdev) omap1, s3c2410, tmiofb ja w100fb.
    • Intel Meteor Lake'i protsessorisse (14. põlvkond) integreeritud VPU (Versatile Processing Unit) üksuste jaoks on lisatud DRM-draiver, mis on loodud arvutinägemise ja masinõppega seotud toimingute kiirendamiseks. Draiver on rakendatud "accel" alamsüsteemi abil, mille eesmärk on pakkuda tuge arvutuskiirenditele, mida saab tarnida kas üksikute ASIC-ide kujul või IP-plokkidena SoC-s ja GPU-s.
    • Draiver i915 (Intel) laiendab diskreetsete Intel Arc (DG2/Alchemist) graafikakaartide tuge, pakub esialgset tuge Meteor Lake'i GPU-dele ja sisaldab tuge Intel Xe HP 4tile GPU-dele.
    • Amdgpu draiver lisab AdaptiveSync tehnoloogia toe ja võimaluse kasutada mitme ekraaniga turvalise kuvamise režiimi. Värskendatud tugi DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x ja DP 2.1 jaoks.
    • Msm-draiverile (Qualcomm Adreno GPU) on lisatud SM8350, SM8450 SM8550, SDM845 ja SC8280XP platvormide tugi.
    • Nouveau draiver ei toeta enam vanu ioctl-kõnesid.
    • Etnavivi draiverile on lisatud eksperimentaalne tugi NPU VerSiliconile (VeriSilicon Neural Network Processor).
    • Draiver pata_parport on rakendatud paralleelpordi kaudu ühendatud IDE-draivide jaoks. Lisatud draiver võimaldas meil kernelist eemaldada vana PARIDE draiveri ja moderniseerida ATA alamsüsteemi. Uue draiveri piiranguks on võimetus ühendada paralleelpordi kaudu samaaegselt printerit ja ketast.
    • Lisatud ath12k draiver juhtmevabade kaartide jaoks Qualcommi kiipidele, mis toetavad Wi-Fi 7. Lisatud on RealTek RTL8188EU kiipide juhtmeta kaartide tugi.
    • Lisatud on tugi 46 ARM64 arhitektuuril põhineva protsessoriga tahvlile, sealhulgas 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 ja ka seadmeid, mis põhinevad SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 ja SDM632, Rockchips RK3128 telekast, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328, 3RK642,/654 68 69/ AMXNUMX / AMXNUMX).

Samal ajal moodustas Ladina-Ameerika Vaba Tarkvara Sihtasutus täiesti tasuta kerneli 6.3 versiooni - Linux-libre 6.3-gnu, mis on puhastatud püsivara elementidest ja draiveritest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatus on tootja poolt piiratud. Versioonis 6.3 puhastati plekid uutes ath12k, aw88395 ja peb2466 draiverites, samuti uutes AArch64 arhitektuuril põhinevates qcom-seadmete seadmepuufailides. Uuendatud blob-puhastuskood draiverites ja alamsüsteemides amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, samuti tarkvara dekodeerimisega DVB-kaartide draiverites ja eelkompileeritud BPF-failides. MGA, r128, tm6000, cpia2 ja r8188eu draiverite puhastamine on peatatud, kuna need on tuumast eemaldatud. Täiustatud i915 draiveri plekkide puhastamine.

Allikas: opennet.ru

Lisa kommentaar