Kaks kuud kestnud arendustööd pärast esitles Linus Torvalds Linuxi tuuma 6.3 väljalaset. Kõige silmapaistvamad muudatused hõlmavad: vanade ARM-platvormide ja graafikadraiverite puhastamist, Rusti keele toe integreerimise jätkamist, utiliidi hwnoise, punase-musta puu and structures BPF toetamist, BIG TCP režiimi IPv4 jaoks, Dhrystone'i jõudlustesti integreerimist, memfd-s täideviimise keelu võimaluse, siduri tootejuhtide loomise toetust, samuti Btrfs-is vastu võetud muudatusi plokigruppide fragmentatsiooni vähendamiseks.
Uude versiooni on vastu võetud 15637 parandust 2055 arendajalt; plaastri suurus on 76 MB (muudatused puudutasid 14296 faili, lisati 1023183 koodirida, kustutati 883103 rida). Võrdluseks, eelnevas versioonis pakuti 16843 parandust 2178 arendajalt; plaastri suurus oli 62 MB. Umbes 39% tuuma 6.3 muudatustest on seotud seadme draiveritega, ligikaudu 15% muudatustest puudutab seadme arhitektuuri spetsiifilist koodi, 10% on seotud võrgu koodiga, 5% failisüsteemide ning 3% tuuma sisealustega.
Peamised uuendused tuumas 6.3:
- Mälu ja süsteemiteenused
- Significant clean-up of code related to old and unused ARM platforms has reduced the kernel’s source texts by 150,000 lines. Over 40 old ARM platforms have been removed.
- Rajatud on võimalus luua seadme sisendi draivereid HID (Human Interface Device) liidese kaudu, rakendades BPF- programme.
- Rust-for-Linux haru ülesanne on jätkuvalt üle viia täiendavaid funktsioone, mis on seotud Rusti keele kasutamisega teise keele arenduses draiverite ja tuuma moodulite jaoks. Rusti toetus ei ole vaikimisi aktiivne ja ei too kaasa Rusti kaasamist tuuma kohustuslikesse sõltuvustesse. Eelnevates väljaannetes pakutud funktsioone on laiendatud Arc (viidatud viidete rakendus), ScopeGuard (täidab puhastuse väljumisel) ja ForeignOwnable (tagab viidete edastamise C ja Rust koodide vahel) toetamisega. Pakett ‘alloc’ kustutati moodul ‘borrow’ (viidatud ‘Cow’ ja viidatud ‘ToOwned’ tüüp). Täheldatakse, et Rusti toetuse tase tuumas on juba lähenemas hetkele, mil saab hakata vastu võtma esimesi Rustis kirjutatud mooduleid.
- User-mode Linuxis (tuuma käitamine kasutaja protsessina) on süsteemidel x86-64 rakendatud Rustis kirjutatud koodi toetus. On lisatud User-mode Linuxi kokkupaneku toetus koos clangiga, sealhulgas lingimise optimeerimine (LTO) abil.
- On lisatud utiliit hwnoise, et jälgida viivitusi, mis on tingitud riistvara karakteristikutest. Määratakse kindlaks teatud kestvuse kõrvalekalded (jitter), mis ületavad ühe mikroseundi 10-minutiliste arvutuste jooksul.
- On lisatud tuuma moodul Dhrystone'i jõudlustesti rakendusega, mida saab kasutada CPU jõudlust hindamiseks konfiguratsioonides, kus pole kasutaja ruumi komponente (nt uute SoC-de portimise etapis, kus on implementeeritud vaid tuuma laadimine).
- On lisatud tuuma käsurea parameeter «cgroup.memory=nobpf», mis keelab BPF programmide mälutarbimise arvestuse, mis võib olla kasulik isoleeritud konteineritega süsteemidele.
- BPF programmide jaoks on pakutud punase-musta puu andmestruktuuri rakendust, mis kasutab kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) uue kaardistuse tüübi lisamise asemel.
- Taaskäivitatavate järjestuste (rseq, restartable sequences) mehhanismis on lisatud võimalus edastada protsessidele paralleelse täitmise identifikaatoreid (memory-map concurrency ID), mis on seostatavad CPU numbriga. Rseq pakub kiireid aatomseid operatsioone, mis katkestamise korral tühistatakse ja toimub katse uuesti täita.
- ARM-protsessorites on rakendatud SME 2 (Scalable Matrix Extension) käskluste toetus.
- s390x ja RISC-V RV64 arhitektuurides on rakendatud «BPF trampoline» mehhanismi, mis võimaldab minimeerida üleandmis kulusid tuuma ja BPF-programmide vahel.
- RISC-V arhitektuuril põhinevates süsteemides on rakendatud käskluste «ZBB» kasutamine stringide operatsioonide kiirendamiseks.
- LoongArch käsukomplekti arhitektuuriga (kasutatav Loongson 3 5000 protsessorites ja uus RISC ISA, mis sarnaneb MIPS ja RISC-V-iga) on rakendatud tuuma aadressiruumi randomiseerimise (KASLR), tuuma asukoha muutmise (relocation), riistvaraliste seisaku punktide ja kprobe mehhanismi toetus.
- DAMOS (Data Access Monitoring-based Operation Schemes) mehhanismis, mis võimaldab mälu vabastada mälu juurdepääsu sageduse arvesse võtmisega, on implementeeritud filtrite tugi, et välistada teatud mälu piirkondade töötlemine DAMOS-is.
- Nolibc minimaalses standardses C-raamatukogus on toetatud s390 arhitektuuri ja Arm Thumb1 käsu komplekti (koos ARM, AArch64, i386, x86_64, RISC-V ja MIPS toetusega).
- Objtool on optimeeritud, et kiirendada kernelite kokkupanekut ja vähendada tipptasemel mälutarbimist (kernelite kokkupanekul "allyesconfig" režiimis ei esine nüüd probleeme protsesside sundseisaku põhjustamisega süsteemides, millel on 32 GB RAM-i).
- Intel ICC kompilaatori kernelite kokkupaneku tugi on lõpetatud, kuna see on pikka aega olnud mittefunktsionaalne ja keegi ei ole soovinud seda parandada.
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- Tmpfs-is on rakendatud kasutaja tuvastamise kaardistamise tugi, mis on vajalik teatud kasutaja failide seostamiseks võõra mountitud sektsiooni füüsiliste failide jaotamiseks teises süsteemis.
- Btrfs-is on grupeerimise fraktsioneerimise vähendamiseks tagatud ekstensioonide size jaotumine bloki eraldamisel, st igasuguse blokigrupp on nüüd piiratud väikeste (kuni 128KB), keskmiste (kuni 8 MB) ja suurte ekstensioonidega. Raid56 realiseerimise refaktoreerimine on läbi viidud. Kontrollsummade kontrollimise koodi on ümber töötatud. Suurendatud on jõudluse optimeerimist, mis võimaldab kiirendada send operatsiooni kuni 10 korda, kasutades kaustade utime'i vahemälu ja süüdistades käske vaid vajadusel. Fiemap-operatsioonide täitmine on kolm korda kiiremini pärast tagasiviidete kontrollimise saamiste vahelejätmist, mis on suurandmetega seotud. Metainfo operatsioonid on kiirenenud 10% võrra, kuna b-tree struktuurides võtmete otsimise optimeerimise tõttu.
- Ext4 failisüsteemi jõudlust on parendatud mitme protsessi samaaegse valimise teostamise võimaluse abil otse sisendi/väljundi operatsioonides, kasutades jagatud inode lukustusi eksklusiivse lukustamise asemel.
- F2fs-is on tehtud tööd koodijõudluse parandamiseks. Lahendatud on tähtsad probleemid, mis on seotud aatomiliste kirjutamiste ja uue ekstensioonide vahemälu haldamisega.
- EROFS (Enhanced Read-Only File System) failisüsteemis, mis on mõeldud süsteemidele lugemiseks, on uus täiendus, mis seob dekompressioonioperatsioonid CPU-ga kompressitud faili sisu lugemisel andmete juurdepääsu viivituste vähendamiseks.
- BFQ sisendi/väljundi planeerijale on lisatud tugi edasijõudnud pöörlevate salvestuslahenduste jaoks, sealhulgas sellised, kus on mitu eraldi juhitavat pea seadet (Multi Actuator).
- Kliendi ja serverile NFS rakendusse on lisatud andmete krüpteerimise tugi AES-SHA2 algoritmi kasutamisega.
- FUSE (Filesystems In User Space) alamsüsteemi on lisatud toe taotluste laiendamise mehhanismile, mis võimaldab lisada taotlusele lisainfot. Selle põhjal on rakendatud grupi tuvastamise lisamine failisüsteemi taotlusele, mis on vajalik õigusaktide arvestamiseks failide loomisel (create, mkdir, symlink, mknod).
- Virtualiseerimine ja turvalisus
- KVM hüperviisoris on lisatud laienenud Hyper-V hüperkõned ja nende suunamine kasutajaruumi töötava töötleja juurde, mille tulemuseks on Hyper-V hüperviisori pesastatud käivitamise toetus.
- KVM-is on lihtsustatud külalissüsteemi juurdepääsu piiramist PMU (Performance Monitor Unit) sündmustele, mis on seotud jõudluse mõõtmisega.
- Memfd mehhanismi on lisatud võimalus luua mälupiirkondi, kus ei lubata koodi täitmist (non-executable memfd) ja kuhu ei ole võimalik hiljem lubada täitmisõigust.
- Uus prctl-operatsioon PR_SET_MDWE on lisatud, et blokeerida mälu juurdepääsu lubamise katseid, mis samal ajal lubavad kirjutamist ja täitmist.
- On lisatud ja vaikimisi lubatud kaitse Spectre-tüüpi rünnakute eest, mis on realiseeritud AMD Zen 4 protsessorites ette nähtud automaatse IBRS režiimiga (Enhanced Indirect Branch Restricted Speculation), mis võimaldab spontaanselt lubada ja keelata spekulatiivse käskude täitmise katkestuste, süsteemi kutsete ja konteksti vahetamisel. Ettepaneku põhjal loodud kaitse põhjustab väiksemaid kulusid võrreldes Retpoline kaitsega.
- Spectre v2 rünnakute kaitse ümbersuurteede kiire õnnestumise võimalus on kõrvaldatud, kui kasutatakse samaaegset mitme lõime tehnoloogiat (SMT või Hyper-Threading), ja see on tingitud STIBP mehhanismi (Single Thread Indirect Branch Predictors) deaktiveerimisest IBRS kaitserežiimi valimisel.
- ARM64 arhitektuuriga süsteemide jaoks on lisatud uus koostamise eesmärk 'virtconfig', mille valimisel aktiveeritakse ainult minimaalne komponentide kogum, mis on vajalik virtualiseerimissüsteemides käivitamiseks.
- m68k arhitektuuri jaoks on lisatud toetus süsteemikutsungite filtreerimiseks seccomp mehhanismi abil.
- AMD Ryzen protsessoritesse integreeritud CRB TPM2 (Command Response Buffer) seadmete tugi, mis põhineb Microsoft Pluton tehnoloogial, on lisatud.
- Võrgu alamsüsteem
- PLCA (Physical Layer Collision Avoidance) alataseme seadistamiseks on lisatud netlink-liides, mis on määratletud IEEE 802.3cg-2019 spetsifikatsioonis ja mida kasutatakse Etherneti võrkudes 802.3cg (10Base-T1S), mis on optimeeritud asjade Interneti seadmete ja tööstuslike süsteemide ühendamiseks. PLCA rakendamine võimaldab parandada Etherneti võrkude tõhusust, mis kasutavad jagatud keskkonda.
- WiFi 7 (802.11be) juhtimisvõimaluste 'wireless extensions' API toetus on lõpetatud, kuna see API ei kata kõiki vajalikke seadistusi. 'Wireless extensions' API kasutamise katsel, mis jätkuvalt toetub emuleerimisse, annab nüüd enamiku praeguste seadmete puhul hoiatuse.
- Netlink API kohta on koostatud üksikasjalik dokumentatsioon (kernel arendajatele ja kasutajaruumi rakenduste arendajatele). On loodud utiliit ynl-gen-c, mis genereerib C-koodi YAML-spetsifikatsioonide põhjal Netlink protokolli jaoks.
- Võrgusokkidele on lisatud IP_LOCAL_PORT_RANGE valiku tugi, et lihtsustada väljuvaid ühenduste seadistamist aadressi tõlgete kaudu ilma SNATita. Ühe IP_LOCAL_PORT_RANGE rakendamise korral mitmel hostil on igal hostil võimalus kasutada oma väljuvate võrguportide vahemikku ning suunata pakette portide numbrite põhjal väravas. IP-aadressid MPTCP (MultiPath TCP) jaoks on lisatud võimalus segatud voogude haldamiseks, kus kasutatakse nii IPv4 kui IPv6 protokolle. MPTCP on TCP protokolli laiendus, mis võimaldab TCP-ühenduse töötamist pakettide samaaegse edastamisega mitmete marsruutide kaudu erinevate võrguliideste kaudu, mis on seotud erinevate IP-aadressidega.
- IPv4 jaoks on võimalik kasutada BIG TCP laiendust, mis võimaldab suurendada TCP-paketi maksimaalset suurust 4GB-ni, et optimeerida andmekeskuste kiirete sisevõrkude tööd. Selline paketi suuruse suurenemine 16-bitise päise välja puhul saavutatakse 'jumbo' paketide rakendamise kaudu, mille IP-päise suurus seatakse 0, ning tegelik suurus edastatakse eraldi 32-bitises väljas eraldi lisatud päises.
- Uus sysctl-parameeter default_rps_mask on lisatud, mille kaudu saab määrata vaikimisi RPS (Receive Packet Steering) konfiguratsiooni, mis vastutab sissetuleva liikluse töötlemise jaotamise eest CPU tuumade lõikes katkestuste töötlejate tasemel.
- Rikkalikud queues töötlemise distsipliinide tugi on lõpetatud, sealhulgas CBQ (class-based queuing), ATM (ATM virtual circuits), dsmark (differentiated service marker), tcindex (traffic-control index) ja RSVP (resource reservation protocol). Need distsipliinid on pikka aega olnud heidutatud ja pole leitud soovi nende hooldust jätkata.
- Kõik DRI1 baasil töötavad graafikajuhid on eemaldatud: i810 (vanad Intel 8xx integreeritud 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), mis kuulutati 2016. aastal aegunud ja mida ei toetata Meadows alates 2012. aastast.
- Seadmed
- Vanad raami puhvri (fbdev) draiverid omap1, s3c2410, tmiofb ja w100fb on eemaldatud.
- Intel Meteor Lake (14. põlvkond) protsessorites integreeritud VPU (Versatile Processing Unit) jaoks on lisatud DRM-draiver, mis on ette nähtud arvutinägemise ja masinõppe operatsioonide kiirendamiseks. Draiver on rakendatud 'accel' alamsüsteemi abil, et pakkuda toetust arvutuskiirenditele, mis võivad olla saadaval eraldi ASIC-idena või IP-plokkidena SoC-s ja GPU-s.
- Draiveri i915 (Intel) uuendatud toetus sisaldab uusimaid Intel Arc (DG2/Alchemist) eraldatud graafikakaartide, Meteor Lake GPU eeltoetuse ja Intel Xe HP 4tile GPU toetu.
- Draiveri amdgpu jaoks on lisatud toetus AdaptiveSync tehnoloogiale ja muljet alandava ekraani andmete kaitse režiimile (Secure Display) mitme ekraani kasutamise korral. DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x ja DP 2.1 tugi on uuendatud.
- Draiveris msm (Qualcomm Adreno GPU) on lisatud tugi SM8350, SM8450, SM8550, SDM845 ja SC8280XP platvormidele.
- Draiveri Nouveau toestamine vanade ioctl kutsungite kasutamise jaoks on lõpetatud.
- Draiveris etnaviv on lisatud katse toetus NPU VerSilicon (VeriSilicon Neural Network Processor).
- Etnaviv draiverisse on lisatud katsetamistugi VeriSiliconi (VeriSilicon Neural Network Processor) NPU-le.
- Rakendatud pata_parport draiver IDE-seadmete jaoks, mis on ühendatud paralleelse pordi kaudu. Lisatud draiver võimaldas eemaldada tuumast vana PARIDE draiveri ja moderniseerida ATA alamsüsteemi. Uue draiveri piiranguks on printeri ja ketta samaaegneühendamine paralleelse pordi kaudu.
- Lisatud ath12k draiver Qualcommi kiipidega traadita kaardile, mis toetab Wi-Fi 7. Lisatud tugi traadita kaartidele RealTek RTL8188EU kiipidega.
- Lisatud tugi 46-le ARM64 arhitektuuri põhistele plaatidele, 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, samuti seadmed SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 ja SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 ja RK3328, TI K3 (AM642/AM654/AM68/AM69).
Sama aegselt on Ladina-Ameerika Vaba Tarkvara Fond koostanud täielikult vaba tuuma versiooni 6.3 - Linux-libre 6.3-gnu, mis on puhastatud tootja poolt piiratud kõvakettade ja draiverite elementide olemasolust. Versioonis 6.3 on puhastatud blobe uutes draiverites ath12k, aw88395 ja peb2466, samuti uutes devicetree failides Qualcommi seadmetele, mis põhinevad AArch64 arhitektuuril. Uuendatud on blobi puhastamise kood draiverites ja alamsüsteemides amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, ning DVB-kaardid, millel on tarkvara dekodeerimine ja eelkompileeritud BPF-failid. Puhastamine draiverites mga, r128, tm6000, cpia2 ja r8188eu on lõpetatud, kuna need on tuumast eemaldatud. Draiveri i915 blobi puhastamine on paranenud.
Allikas: opennet.ru
