Pärast kahte kuud arendust tutvustas Linus Torvalds Linuxi 6.8 tuuma väljaandmist. Kõige silmapaistvamad muudatused on: Intel GPU-draiver Xe, blokeeritud seadmete kaitse režiim koos mountitud FS-iga, Deadline serveri ülesanne plaanimismehhanism, automaatne sama mälulehekülje optimeerimine, esimene Rusti keeles kirjutatud draiver, süsteemikutsed listmount ja statmount, bpfilteri ja SLAB-i eemaldamine, KVM-i guest_memfd mehhanism, andmete juurdepääsu profileerimine.
Uue versiooni juurde on lisatud 15641 parandust 2018 arendajalt, patši suurus on 44 MB (muudatused puudutasid 12212 faili, lisatud on 663864 koodireale, eemaldatud 339094 rida). Eelmises väljaandes oli 18405 parandust 2066 arendajalt, patši suurus oli 72 MB. Umbes 42% kõikidest 6.8 versioonis esitatud muudatused on seotud seadmeid draiveritega, ligikaudu 15% muudatused on seotud riistvaraarhitektuuride spetsiifilise koodi uuendamisega, 14% on seotud võrgustiku kihtidega, 6% -ga failisüsteemidega ja 3% -ga tuuma sisemistest alamsüsteemidest.
Git-repositoris, mille tuum 6.8, sisaldab 9.996 miljonit objekti, mis viitab sellele, et järgmine tuum 6.9 ületab tähtsa 10 miljoni git-objekti piiri. Varasematel aastatel korreleerusid hästi harude numbrite 3.x ja 4.x muutused repository git-objektide arvuga – tuum 3.0 lasti välja, kui repositorys oli umbes 2 miljonit objekti, ja tuum 4.0 – 4 miljonit objekti. Samas katkestas 2019. aastal tuuma 5.0 väljalase selle loogilise sideme, kuna selle loomise ajal sisaldas repository umbes 6.5 miljonit git-objekti.
Tuum 6.8 peamised uuendused:
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- Lisatud on otsese kirjutamise lukustamisrežiim blokeeritud seadmetele, millel on paigaldatud failisüsteemid (selle režiimi lubamisel ei saa root-kasutaja teha muudatusi failisüsteemis blokeeritud seadme tasemel). Vaikimisi on režiim keelatud ja nõuab parameetri BLK_DEV_WRITE_MOUNTED määramist koostamisel. Btrfs sektsioonide puhul lukustamine praegu ei tööta, kuna Btrfsi koodis pole veel vastu võetud vajalikke muudatusi.
- Lisaud on süsteemikutsed listmount() ja statmount(), mis võimaldavad kasutajaruumi kaudu saada üksikasjalikku teavet mountitud failisüsteemide kohta.
- Failisüsteemis XFS jätkub töö utiliidi fsck rakendamise võimaluse realiseerimise kallal, et kontrollida ja parandada tuvastatud probleeme online-režiimis, ilma failisüsteemi demonteerimata.
- Ext4-s on mälulehtede suurusega väiksematel plokkidel kasutatud kutset dioread_nolock, mis võimaldab parandada jõudlust, vabanedes liigsetest lukustustest. Mõned funktsioonid on ümber viidud mälulehtede (page folios) kasutamisele.
- Btrfs-ile on lisatud toetust monteerimislipule «nospace_cache», et keelata vaba plokkide vahemälu. Mõned funktsioonid on ümber viidud mälulehtede (page folios) kasutamisele.
- Failisüsteemis EROFS (Extendable Read-Only File System), mis on ette nähtud kirjutamisrežiimis juurdepääsetavatesse osadesse, on lisatud alalehtede tihendamise tugi ja parendatud töö olukordades, kus on puudus mälust.
- F2FS failitsüsteemis on parandatud tsoonimise seadmete toetust ( tsoonide rühmade või sektorite jagamine, kuhu lubatakse ainult järjestikune andmete lisamine, uuendades kogu rühma blokke).
- SMB FS-is on rakendatud võimalus luua blokki- ja sümboolseid seadme faile.
- Bcachefs-is on lisatud osaline toetust paigaldatud failisüsteemide kontrollimiseks ja taastamiseks.
- Device-mapperi alamsüsteemis on lõpetatud MD_LINEAR, MD_MULTIPATH ja MD_FAULTY töötlejate toetamine, mis kuulutati 2021. aastal vananenuks.
- Mälu ja süsteemiteenused
- Zswap alamsüsteemi on lisatud võimalus sundida külmutatud mälulehekülgi, millega ei ole ühendust, ja mis tõenäoliselt jäävad kasutamata, tõukuma reaalsesse vahetusruumi, kui RAM on piiratud. Zswap teostab vahetusruumi lehekülgede vahetamise vahemälu, hoides neid RAM-is kompressitud kujul, kui võimalik, ilma, et neid tõukaks reaalsesse kompressimata vahetusruumi kettale. Muudatused mälupuuduse korral aitavad vähendada Zswap-i hoitava RAM-i mahtu ja vabastada süsteemile mälu.
- Zswap-s on esitati uus režiim, mis täielikult keelab kirjutamise edasi lükkamise (writeback) tegelikku vahetusruumi, kui kirjutamiskatse ebaõnnestub, ega kustuta juba olemasolevaid zswap-lehti vahetusruumis.
- Ülesannete planeerijasse on lisatud SCHED_DEADLINE server, mis lahendab probleemi, et tavategevused ei saa CPU ressursse, kui kõrgprioriteedilised (realtime) tegevused monopoliseerivad CPU-d. CPU monopoliseerimist takistas varem tuumas Realtime throttling mehanism, mis üritas reserveerida 5% madala prioriteediga ülesannetele, jättes 95% aega realtime-ülesannetele. See mehhanism jättis soovida, kuna tavategevused ei saanud paljudes olukordades protsessoriaega. SCHED_DEADLINE server rakendab tõhusamat ressursside reserveerimise mehhanismi.
- DAMON (Data Access MONitor) alamsüsteemis, mis jälgib protsesside juurdepääsu andmetele RAM-is (näiteks saab teada, millistele mälu aladele protsess pöördus ja millised mälu alad jäid kasutamata), on lisatud automaatne mehhanism mälu kasutamise agressiivsuse seadistamiseks määratud kvootide alusel.
- Lisatud tugi mitme suurusega suurtele mälu lehtedele (mTHP — multi-size Transparent Huge Pages), mis võimaldab mälu jagada plokkides, mis on suuremad kui põhileht, kuid väiksemad kui traditsioonilised THP-lehed.
- Lisatud tugi suurtele foliantidele (page folios, ühendatud mälu lehed) anonüümse mälu (mis ei ole seotud failisüsteemiga, näiteks malloc'i abil eraldatud) jaoks. See muudatus on suunatud jõudluse parandamisele, jagades suuri mälukilde, kui juurdepääsetakse mitteeraldatud mälu lehtedele (page faults). Näiteks suurte foliantide kasutamine on vähendanud tuumade ümberkompileerimise aega 5% (samal ajal vähendades aega, mis veedetakse tuumal tasemel 40%).
- Kernikonfiguraafisse on lisatud TRANSPARENT_HUGEPAGE_NEVER parameeter, mis võimaldab suurt mälulehte (Transparent Huge Pages) kasutada keelata.
- Süsteemikutsesse userfaultfd() on lisatud UFFDIO_MOVE toiming, mis võimaldab mäluleheks (page fault) esitamist kasutaja ruumis ilma mälulehte eraldamata. Testid on näidanud, et UFFDIO_MOVE kasutamine vähenes 40% võrreldes UFFDIO_COPY kasutamisega, mis kiirendas kühni pakkimist (heap compaction).
- Lisatud KSM adviser mehhanism, mis võimaldab automaatselt optimeerida identsete mälulehtede sulandumise alamsüsteemi (KSM — Kernel Samepage Merging) parameetreid.
- Jätkatakse muudatuste ülekandmist Rust-for-Linux harust, mille eesmärk on kasutada Rusti kui teist keelt draiverite ja tuumamoodulite arendamiseks (Rusti tugi ei ole vaikimisi aktiivne ja ei muuda Rusti tuuma koostamise sõltuvusteks). Uues versioonis on lisatud muudatused, mis lisavad Rusti mähise phylibi abstraktsioonitaseme ja kasutavad seda mähist draiver ax88796b_rust, mis toetab Asix AX88772A Ethernet-kontrolleri PHY-liidest (100MBit). Funktsionaalsus on Rustis kirjutatud draiver täielikult ekvivalentne vana C keeles kirjutatud draiveriga ax88796b ja seda saab kasutada X-Surf 100 võrgukaartidega, millel on kiip AX88796B. LoongArch arhitektuuri jaoks on võimaldatud moodulite kirjutamine Rusti keeles. Üleminekut Rusti versioonile 1.74.1 on teostatud.
- Lisatud BPF token mehhanism, mis võimaldab valikuliselt delegeerida BPF võimaluste, näiteks BPF programmi laadimise või BPF kaardi loomise töötlemise, mitteprivileegitud protsessidele kasutaja ruumis, mille usaldusväärsust kinnitab spetsiaalne token.
- BPF-programmide valideerimise funktsionaalsust on laiendatud.
- Perf utiliiti on lisatud andmete profiilimise tugi, mis võimaldab jälgida lugemist ja kirjutamist andmestruktuurides, näiteks et tuvastada kõige aktiivsemalt muudetavad väljad struktuurides. Süsteemides, kus protsessorid toetavad mälutehingute teabe kogumist (Intel, AMD, ARM), tuleks statistika kogumiseks kasutada käsku „perf mem record”, ja andmestruktuuride juurdepääsu aruande saamiseks „perf annotate --data-type”.
- S390 (IBM Z) arhitektuuris on süsteemi kutsumiste töötlemise jõudlust optimeeritud, mis on testides kiirusel suurendanud sisenemist süsteemi kutsumisse ligikaudu 11%.
- Pakkuda on võimalus muuta jälgimisbuffe, mida kasutatakse jälgimisväljade teabe puhverdamiseks, mis saadetakse kasutajaruumi.
- Eemaldatud on varasemalt aegunud SLAB mälujaotusskeem, mille asemel kasutatakse tuumas nüüd vaid SLUB-i. Põhjuseks on hooldusprobleemid, koodis olevad vead ja funktsionaalsuse dubleerimine täiustatud allokaatoriga SLUB.
- Tuuma koostamisel on sisse lülitatud lipp „-Wmissing-prototypes”, mis genereerib hoiatusi globaalsete funktsioonide kutsumise korral, millel ei ole prototüübi määratlust.
- RISC-V arhitektuuri puhul, süsteemides, mis toetavad SUSP SBI laiendust, on rakendatud toe üleminekut ooterežiimi koos oleku salvestamisega RAM-i. Pakutakse võimalust kasutada süsteemi kutset riscv_hwprobe() arhitektuuri RISC-V käsu komplekti toetatud laienduste teabe saamiseks.
- Virtualiseerimine ja turvalisus
- Lisa uued süsteemi kutsed lsm_list_modules(), lsm_get_self_attr() ja lsm_set_self_attr(), et kuvada laaditud LSM-modulite (Linux Security Modules) nimekiri ja saada/välja pakkuda LSM-module atribuute. Uus struktuur lsm_ctx on lisatud LSM konteksti suhtlemiseks kasutajaruumi ja tuuma vahel.
- AppArmor alamsüsteem on kohandatud SHA-256 algoritmi reeglite kinnitamiseks, kasutades SHA-1 asemel.
- Kernest on eemaldatud strlcpy() funktsiooni teostus, mis suvel lisati C teekide Glibc 3.38. Strlcpy on alternatiiv strncpy() funktsioonile, mis sisaldab bufferitäitumise kaitset ja peab alati lisama stringi lõppu nulli bait.
- Hüperviisoris KVM on lisatud toetus guest_memfd (külastaja esmane mälu) alamsüsteemile, mis pakub mälu haldamise funktsioone, võimaldades teostada saavutusi ja optimeerimisi, mis pole võimalikud üldise mälu haldamise alamsüsteemi kasutamisel. Näiteks võimaldab guest_memfd eraldada ja peegeldada külastaja süsteemile mäluala, mis ei ole host-ümbrusele kergesti ligipääsetav, mida saab kasutada konfidentsiaalsete arvutuste korraldamiseks.
- Külastaja süsteemidele, mis töötavad KVM hüperviisori all, on lubatud Intel'i protsessorites pakutava LAM (Lineaarne Aadressimaski) režiimi tugi, mis võimaldab kasutada osa 64-bitiste viidete bittidest (bittidest 57 kuni 62) mitte-aadressinguliste metaandmete salvestamiseks.
- KVM hüpervizoris on ARM64 arhitektuuriga süsteemide jaoks lisatud 52-bitiste (LPA2) füüsiliste aadresside tugi. x86 arhitektuuriga süsteemide jaoks on pakkuda võimalus koostada ilma Hyper-V hüperkõnede emulatsioonita, võimaldades väiksema tuuma suurust.
- Lisatud on iaa (IAA Compression Accelerator) draiver andmete DEFLATE meetodil kokkusurumise ja väljavõtmise operatsioonide kiirendamiseks, kasutades Intel Analytics Accelerator (IAA) krüptograafiliste kiirendite võimalusi.
- Külg-loodud keskkonnas on rakendatud Intel TDX (Trusted Domain Extensions) mehhanismi tugi, mis võimaldab KVM hüpervizori kasutamisel luua kaitstud külaliskeskkondi, kus kasutatakse mälu krüpteerimist. virtuaalmasinad.
- SELinuxisse on lisatud SID-identifikaator 'init', mis võimaldab eristada käivitatavaid protsesse, mis käivitati laadimise algfaasis enne SELinuxi poliitikate kohaldamist. Parandatud on /sys/fs/selinux liidese haldamine SELinuxi jaoks.
- Võrgu alamsüsteem
- Tosolugatel ühtlane jaotamine põhivõrgu andmestruktuurides, et parandada vahemälu efektiivsust. Varasemad väljad võrgu protokollide socks, netdev, netns ja mibs struktuurides asetsesid lisamisel, mis piiras protsessori vahemälu kasutamist. Muutmine muutuja asetus struktuurides tõi märkimisväärse kiirusetõusu TCP töös, optimeerides andmete edastamise ajal vahemälu ridade kasutamise ning muutuja juurdepääsu. Mitme paralleelse TCP-ühenduse töötlemise korral võib kiirusetõus ulatuda kuni 40%.
- Eemaldatud bpfilter süsteem, mis kasutas BPF pakettide filtreerimiseks. Bpfilter oli saadaval alates versioonist 4.18, kuid ei saavutanud laia kasutuse taset. Viimastel aastatel bpfilter kood tuumas ei arenenud, arendust jätkas Facebook eraldi hoidlas.
- Seadmed
- Komplekti on lisatud uus drm-draiver (Direct Rendering Manager) Xe Intel Xe arhitektuuriga GPU-dele, mida kasutatakse Intel Arc seeria videokaartides ja integreeritud graafikas alates Tiger Lake protsessoritest. Xe draiverit positsioneeritakse kui uut platvormi, mis toetab uusi kiipe, ilma et see oleks seotud vanade platvormide koodiga. Draiver on loodud uue arhitektuuri alusel, milles kasutatakse aktiivsemalt olemasolevaid DRM alam-süsteemi komponente ning ka üldkasutatavaid i915 draiveri komponente, mis ei ole seotud konkreetsete GPU-dega, näiteks kood ekraanide haldamiseks, mälu mudel ja execbuf rakendamine. Mesa OpenGL ja Vulkan töö draiveri Xe peal on realiseeritud olemasolevates Mesa draiverites Iris ja ANV tehtud muudatuste tasemel.
- Draiveris i915 jätkatakse Intel LunarLake (Xe 2) kiipide toe arendamist. Parandatud on Intel Meteor Lake kiipide toetamist.
- Nouveau draiveris sisaldab seadistust, et vaikimisi kasutada GSP püsivara funktsioone NVIDIA Turingi ja Ampere mikroarhitektuuriga GPU-de töötamiseks, kus GPU algatamise ja juhtimise operatsioonid käivitab eraldi GSP (GPU System Processor) mikrokontroller. Kui seade on aktiveeritud, töötab draiver püsivara kaudu, mitte seadmeinteraktsioonide otsese programmeerimisega.
- AMDGPU draiveris on sisse viidud ACPI WBRF ja VPE DPM tugi, muudatud PCIe kanalite kiirusetöötlemist ning sünkroonimiskeskkondadesse on kaasatud 64-bitised järjestikused numbrid. Lisaks on lisatud AMD spetsiifilised värvihalduse mehhanismid ning lahendatud probleem unerežiimi üleminekul.
- Lisa algne Broadcom VideoCore 7.1 GPU draiver, mida kasutatakse Raspberry Pi 5 platvormidel.
- Lisa draiver PowerVR 6 seeria GPU-dele, mis põhinevad Imagination Technologiesi Rogue mikroarhitektuuril.
- Lisa Thunderbolt/USB4 kontrollerite tugi, mis on integreeritud Intel Lunar Lake mikroarhitektuuriga kiipidesse.
- Lisa draiverid Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave ja THine THP7312 SoC-dele kasutatavatele kaameratele.
- Lisatud toetus NSO (Nintendo Switch Online) mängu juhtmetele — vanade juhtmetega SNES (Super Nintendo), Genesis ja N64 (Nintendo 64), mis on kohandatud Nintendo Switchi jaoks. Lisatud Adafruit Seesaw mängupadi juht. Xpad draiverisse on lisatud toetus Lenovo Legion Go kontrolleritele.
- DTS draiverisse on lisatud tugi Powkiddy RK2023, Powkiddy X55 ja Anbernic RG351V mängu seadmetele.
- Lisatud tugi helisüsteemidele, mida kasutatakse NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 ja X1E80100 kiipides.
- AMD on teinud muudatusi, mis on seotud tulevase Zen 5 mikroarhitektuuri protsessori seeria toega.
- Lisatud tugi ARM64 SoC-dele: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 ja Unisoc UMS9620 (Tanggula 7).
- Lisatud tugi ARM-platvormidele ja seadmetele: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress Marvell CN913x baasil, Lenovo Chromebook, Asus ja Acer MediaTek MT8183 baasil, Toradex Verdin AM62, Allwinner H616/H618 baasil töötavad alused.
- Toetust ARM11 ARMv6K SMP protsessoritele on lõpetatud.
Samas on Latin-Ameerika Tasuta Tarkvara Fond loonud täielikult tasuta tuuma variante 6.8 — Linux-libre 6.8-gnu, puhastades selle mittefree komponentidest ja koodilõikudest, mille ulatust piirab tootja. Versioonis 6.8 on uuendatud erinevate draiverite ja alamkomponentide puhastuskoodi. Puhastatud on Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY ja Realtek rtw8922a draivereid. Tuuma eemaldamise tõttu on lõpetatud draiverite, nagu atmel, hermes, orinoco_usb, libertas_cs ja zd1201, puhastamine. Samuti on puhastatud blobide nimesid dts-failides (devicetree) ARM ja Aarch64 arhitektuuride jaoks. Probleemid i915 draiveri puhastamisega on kõrvaldatud.
Allikas: opennet.ru
