Linux 6.3 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds on julkaissut Linux 6.3 -ytimen. Merkittävimpiä muutoksia ovat: vanhentuneiden ARM-alustojen ja grafiikkaohjainten puhdistaminen, Rust-kielen tuen jatkuva integrointi, hwnoise-apuohjelma, tuki punamustaisille puurakenteille BPF:ssä, BIG TCP -tila IPv4:lle, sisäänrakennettu Dhrystone-vertailu, kyky poistaa käytöstä suoritus memfd:ssä, tuki HID-ajurien luomiselle BPF:n avulla, Btrfs:ään on tehty muutoksia lohkoryhmien pirstoutumisen vähentämiseksi.

Uusi versio hyväksyi 15637 korjausta 2055 kehittäjältä; korjaustiedoston koko - 76 Mt (muutokset vaikuttivat 14296 tiedostoon, 1023183 koodiriviä lisätty, 883103 riviä poistettu). Vertailun vuoksi, edellisessä versiossa ehdotettiin 16843 korjausta 2178 kehittäjältä; korjaustiedoston koko - 62 MB. Noin 39 % kaikista 6.3-ytimeen tehdyistä muutoksista liittyy laiteajureihin, noin 15 % muutoksista liittyy laitteistoarkkitehtuurikohtaiseen koodin päivittämiseen, 10 % liittyy verkkopinoon, 5 % tiedostojärjestelmiin ja 3 % sisäisiin ytimen alijärjestelmiin.

Tärkeimmät innovaatiot ytimessä 6.3:

  • Muisti- ja järjestelmäpalvelut
    • Vanhoihin ja käyttämättömiin ARM-kortteihin liittyvästä koodista on tehty merkittävä siivous, joka on pienentänyt ydinlähteiden kokoa 150 tuhannella rivillä. Poistettiin yli 40 vanhaa ARM-alustaa.
    • Toteutettu mahdollisuus luoda ajureita syöttölaitteille HID (Human Interface Device) -rajapinnalla toteutettu BPF-ohjelmien muodossa.
    • Jatkettiin Rust-for-Linux-haaraan lisätoimintoja, jotka liittyvät Rustin käyttöön toisena kielenä ohjaimien ja ydinmoduulien kehittämiseen. Ruosteen tuki ei ole oletusarvoisesti käytössä, eikä se johda ruosteen sisällyttämiseen pakollisena ytimen koontiriippuvuutena. Aiemmissa julkaisuissa tarjottua toiminnallisuutta on laajennettu tukemalla Arc-tyyppejä (osoittimien toteutus viitemäärällä), ScopeGuard (siivoaa, kun se suoritetaan soveltamisalan ulkopuolella) ja ForeignOwnable (tarjoaa osoittimen liikkumisen C- ja Rust-koodin välillä) . Moduuli "laina" poistettu paketista "alloc" (tyyppi "Cow" ja ominaisuus "ToOwned"). On huomattava, että ytimen Rust-tuen tila on jo lähellä ensimmäisten Rust-kielellä kirjoitettujen moduulien hyväksymistä ytimeen.
    • User-mode Linux (käyttämällä ydintä käyttäjäprosessina) x86-64-järjestelmissä tukee rust-kielellä kirjoitettua koodia. Lisätty tuki käyttäjätilan Linuxin rakentamiseen käyttämällä clangia ja linkkiajan optimointia käytössä (LTO).
    • Lisätty hwnoise-apuohjelma laitteiston käyttäytymisen aiheuttamien viiveiden seuraamiseen. Toimintojen suoritusajan poikkeamat (värinä) määritetään, kun keskeytysprosessointi on poistettu käytöstä, yli yhden mikrosekunnin 10 minuutin laskelmissa.
    • Ydinmoduuli on lisätty Dhrystone-benchmark-toteutuksella, jota voidaan käyttää CPU-suorituskyvyn arvioimiseen kokoonpanoissa, joissa ei ole käyttäjätilakomponentteja (esimerkiksi porttivaiheessa uusille SoC:ille, jotka toteuttavat vain ytimen lataamisen).
    • Lisätty "cgroup.memory=nobpf" ytimen komentorivivaihtoehto BPF-ohjelmien muistinkulutuksen laskentaan poistamiseksi käytöstä, mikä voi olla hyödyllistä järjestelmissä, joissa on eristettyjä säiliöitä.
    • BPF-ohjelmille ehdotetaan puna-mustan puutietorakenteen toteutusta, joka käyttää kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) uuden kartoitustyypin lisäämisen sijaan.
    • Uudelleenkäynnistettävien sekvenssien (rseq, uudelleenkäynnistettävät sekvenssit) mekanismiin lisättiin mahdollisuus välittää prosesseille rinnakkaissuoritustunnisteita (muistikartan samanaikaisuustunnus), jotka tunnistetaan CPU-numerolla. Rseq tarjoaa keinon suorittaa nopeasti atomisesti operaatioita, jotka toisen säikeen keskeyttäessä puhdistetaan ja yritetään uudelleen.
    • ARM-prosessorit tukevat SME 2 (Scalable Matrix Extension) -ohjeita.
    • S390x- ja RISC-V RV64 -arkkitehtuureille on toteutettu tuki "BPF-trampoliini"-mekanismille, joka mahdollistaa ylikuormituksen minimoimisen siirrettäessä puheluita ytimen ja BPF-ohjelmien välillä.
    • Järjestelmissä, joissa on RISC-V-arkkitehtuuriin perustuvat prosessorit, "ZBB"-käskyjen käyttö on toteutettu merkkijonotoimintojen nopeuttamiseksi.
    • LoongArch-käskysarjaarkkitehtuuriin perustuvissa järjestelmissä (käytetään Loongson 3 5000 -prosessoreissa ja jotka toteuttavat uuden RISC ISA:n, joka on samanlainen kuin MIPS ja RISC-V), tuki ytimen osoiteavaruuden satunnaistukselle (KASLR), ytimen siirtäminen muistiin (relocation). ), laitteistopisteiden pysäytys ja kprobe-mekanismi.
    • DAMOS (Data Access Monitoring-based Operation Schemes) -mekanismi, jonka avulla voit vapauttaa muistia muistin käyttötaajuuden perusteella, tukee suodattimia, jotka estävät tiettyjä muistialueita käsittelystä DAMOSissa.
    • Minimistandardi C-kirjasto Nolibc toteuttaa tuen s390-arkkitehtuurille ja Arm Thumb1 -käskysarjalle (ARM-, AArch64-, i386-, x86_64-, RISC-V- ja MIPS-tuen lisäksi).
    • Objtool on optimoitu nopeuttamaan ytimen koontiversioita ja vähentämään huippumuistin kulutusta käännösten aikana (kun rakennetaan ydin "allyesconfig"-tilassa, prosessien pakotettu lopettaminen ei aiheuta ongelmia järjestelmissä, joissa on 32 Gt RAM-muistia).
    • Tuki ytimen kokoamiselle Intel ICC -kääntäjällä on lopetettu, joka on ollut pitkään poissa toiminnasta, eikä kukaan ole ilmaissut halua korjata sitä.
  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • tmpfs tukee liitetyn tiedostojärjestelmän käyttäjätunnusten yhdistämistä, jota käytetään yhdistämään tietyn käyttäjän tiedostot liitetyssä vieraassa osiossa toiselle käyttäjälle nykyisessä järjestelmässä.
    • Btrfs:ssä lohkoryhmien pirstoutumisen vähentämiseksi laajuudet jaetaan koolla lohkoja allokoitaessa, ts. mikä tahansa lohkoryhmä on nyt rajoitettu pieniin (jopa 128 kt), keskikokoisiin (jopa 8 Mt) ja suuriin mittoihin. Raid56-toteutus on muotoiltu uudelleen. Uudelleen suunniteltu koodi tarkistussummien tarkistamiseen. Suorituskykyä on optimoitu lähetystoiminnan nopeuttamiseksi jopa 10 kertaa tallentamalla välimuistiin hakemistojen käyttöaika ja suorittamalla komentoja vain tarvittaessa. 10x nopeammat fiemap-toiminnot ohittamalla jaettujen tietojen (snapshots) backlink-tarkistukset. Toimintoja metatietojen kanssa nopeutetaan XNUMX % optimoimalla avainten haku b-puurakenteissa.
    • Ext4 FS:n parannettu suorituskyky sallii useiden prosessien suorittaa samanaikaisesti suoria I/O-operaatioita ennalta allokoiduille lohkoille käyttämällä jaettuja inode-lukkoja eksklusiivisten lukitusten sijaan.
    • F2fs:ssä on tehty työtä koodin luettavuuden parantamiseksi. Korjattu tärkeät atomikirjoitukseen ja uuden laajuuden välimuistiin liittyvät ongelmat.
    • Vain luku -osioihin suunniteltu EROFS (Enhanced Read-Only File System) pystyy sitomaan pakattujen tiedostojen purkutoiminnot suorittimeen tietojen käyttöviiveen vähentämiseksi.
    • BFQ I/O -ajastin on lisännyt tuen kehittyneille pyöriville levyasemille, kuten niille, jotka käyttävät useita erikseen ohjattuja asemia (Multi Actuator).
    • NFS-asiakkaan ja -palvelimen toteutukseen on lisätty tuki tietojen salaukselle AES-SHA2-algoritmilla.
    • FUSE (Filesystems In User Space) -alijärjestelmä on lisännyt tuen kyselyn laajennusmekanismille, jonka avulla voit lisätä kyselyyn lisätietoja. Tämän ominaisuuden perusteella toteutetaan ryhmätunnisteiden lisääminen FS-pyyntöön, jotka ovat tarpeen pääsyoikeuksien huomioon ottamiseksi luotaessa objekteja FS:ään (create, mkdir, symlink, mknod).
  • Virtualisointi ja turvallisuus
    • KVM-hypervisor x86-järjestelmille lisää tuen laajennetuille Hyper-V-hyperkutsuille ja tarjoaa niille edelleenlähetyksen käsittelijään, joka toimii käyttäjätilan isäntäympäristössä. Muutos mahdollisti Hyper-V-hypervisorin sisäkkäisen käynnistämisen tuen.
    • KVM helpottaa vierasjärjestelmän pääsyn rajoittamista suorituskyvyn mittaamiseen liittyviin PMU (Performance Monitor Unit) -tapahtumiin.
    • Memfd-mekanismi, jonka avulla voit tunnistaa muistialueen prosessien välillä siirretyn tiedostokuvaajan avulla, on lisätty mahdollisuus luoda alueita, joilla koodin suorittaminen on kielletty (ei-suoritettava memfd) ja suoritusoikeuksia on mahdotonta asettaa tulevaisuutta.
    • Uusi PR_SET_MDWE prctl-toiminto on lisätty estämään yritykset sisällyttää muistin käyttöoikeudet, jotka sallivat sekä kirjoittamisen että suorittamisen samanaikaisesti.
    • Lisätty ja oletusarvoisesti otettu käyttöön suojaus Spectre-luokan hyökkäyksiä vastaan, toteutettu AMD Zen 4 -prosessoreissa ehdotetun IBRS:n (Enhanced Indirect Branch Restricted Speculation) automaattisen tilan perusteella, jonka avulla voit adaptiivisesti ottaa käyttöön ja poistaa käytöstä käskyjen spekulatiivisen suorittamisen keskeytyksen aikana. käsittely, järjestelmäkutsut ja kontekstin kytkimet. Ehdotettu suojaus johtaa pienempään yleiskustannuksiin verrattuna Retpoline-suojaukseen.
    • Korjaa haavoittuvuuden, joka voi ohittaa Spectre v2 -hyökkäyssuojauksen käytettäessä samanaikaista monisäikeistä tekniikkaa (SMT tai Hyper-Threading) ja joka johtuu STIBP:n (Single Thread Indirect Branch Predictors) poistamisesta käytöstä IBRS-suojaustilaa valittaessa.
    • ARM64-pohjaisiin järjestelmiin on lisätty uusi "virtconfig"-koontikohde, joka valittuna aktivoi vain vähimmäisjoukon ytimen komponentteja, jotka tarvitaan virtualisointijärjestelmien käynnistykseen.
    • Lisätty tuki järjestelmäkutsujen suodattamiselle seccomp-mekanismilla m68k-arkkitehtuurille.
    • Lisätty tuki AMD Ryzen -prosessorien sisäänrakennetuille CRB TPM2 (Command Response Buffer) -laitteille, jotka perustuvat Microsoft Pluton -tekniikkaan.
  • Verkkoalijärjestelmä
    • Netlink-liitäntä on lisätty määrittämään IEEE 802.3cg-2019 -spesifikaatiossa määriteltyä PLCA (Physical Layer Collision Avoidance) -alikerrosta, jota käytetään 802.3cg (10Base-T1S) Ethernet-verkoissa, jotka on optimoitu IoT-laitteiden ja teollisuusjärjestelmien yhdistämiseen. PLCA:n käyttö parantaa suorituskykyä jaetuissa media-Ethernet-verkoissa.
    • Langattomien laajennusten sovellusliittymän tuki WiFi 7 (802.11be) -rajapintojen hallintaan on lopetettu, koska tämä API ei kata kaikkia tarvittavia asetuksia. Kun yrität käyttää "langattomien laajennusten" API:ta, jota tuetaan edelleen emuloituna kerroksena, useimpien nykyisten laitteiden kohdalla näytetään nyt varoitus.
    • Netlink API:sta on laadittu yksityiskohtainen dokumentaatio (ytimen kehittäjille ja käyttäjäavaruussovellusten kehittäjille). ynl-gen-c -apuohjelma on toteutettu luomaan C-koodia Netlink-protokollan YAML-määritysten perusteella.
    • IP_LOCAL_PORT_RANGE-vaihtoehdon tuki on lisätty verkkopistorasioihin lähtevien yhteyksien konfiguroinnin yksinkertaistamiseksi osoitekääntäjien kautta ilman SNAT:ia. Kun samaa IP-osoitetta käytetään useissa isännissä, IP_LOCAL_PORT_RANGE sallii jokaisen isäntäkoneen käyttää omaa lähtevien verkkoporttien aluetta ja yhdyskäytävässä välittää paketteja porttinumeroiden perusteella.
    • MPTCP:ssä (MultiPath TCP) on toteutettu kyky käsitellä IPv4- ja IPv6-protokollia käyttäviä sekavirtoja. MPTCP on TCP-protokollan laajennus TCP-yhteyden toiminnan järjestämiseen ja pakettien toimittamiseen samanaikaisesti useaa reittiä pitkin eri verkkorajapintojen kautta, jotka on sidottu eri IP-osoitteisiin.
    • IPv4:lle on toteutettu mahdollisuus käyttää BIG TCP -laajennusta, joka mahdollistaa TCP-paketin enimmäiskoon kasvattamisen 4 Gt:iin, jotta voidaan optimoida datakeskusten nopeiden sisäisten verkkojen toiminta. Tämä paketin koon lisäys 16-bittisellä otsikkokentällä saavutetaan toteuttamalla "jumbo"-paketteja, joiden IP-otsikon koko on 0 ja todellinen koko lähetetään erillisessä 32-bittisessä kentässä erillisessä liitetyssä otsikossa.
    • Uusi sysctl-parametri default_rps_mask on lisätty, jonka kautta voidaan asettaa oletus-RPS (Receive Packet Steering) -konfiguraatio, joka vastaa saapuvan liikenteen prosessoinnin jakamisesta prosessorin ytimien kesken keskeytyskäsittelijän tasolla.
    • Poistettu tuki jonotusmenetelmille, joilla rajoitetaan CBQ (luokkapohjaista jonotusta), ATM (ATM-virtuaalipiirit), dsmark (differentioitu palvelumerkki), tcindex (liikenteenohjausindeksi) ja RSVP (resurssien varausprotokolla) -liikennettä. Nämä tieteenalat on hylätty pitkään, eikä kukaan ole halunnut jatkaa niiden tukemista.
  • Оборудование
    • Poistettu kaikki DRI1-pohjaiset näytönohjaimet: i810 (vanhat Intel 8xx integroidut näytönohjaimet), mga (Matrox GPU), r128 (ATI Rage 128 GPU mukaan lukien Rage Fury, XPERT 99 ja XPERT 128 kortit), savage (S3 Savage GPU), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) ja via (VIA IGP), jotka poistettiin käytöstä vuonna 2016 ja joita ei ole tuettu Mesassa vuoden 2012 jälkeen.
    • Poistettiin vanhentuneet kehyspuskurin (fbdev) ajurit omap1, s3c2410, tmiofb ja w100fb.
    • Intel Meteor Lake (14. sukupolvi) suorittimiin integroituun VPU:hin (Versatile Processing Unit) on lisätty DRM-ohjain, joka on suunniteltu nopeuttamaan tietokonenäön ja koneoppimisen toimintoja. Ohjain on toteutettu käyttämällä "accel"-alijärjestelmää, jonka tarkoituksena on tarjota tukea laskentakiihdyttimille, jotka voidaan toimittaa sekä erillisinä ASIC-kortteina että IP-lohkoina SoC:n ja GPU:n sisällä.
    • i915 (Intel) -ohjain laajentaa Intel Arc (DG2/Alchemist) -näytönohjainkorttien tukea, esittelee alustavan tuen Meteor Lake -grafiikkasuorittimille ja sisältää tuen Intel Xe HP 4tile -grafiikkasuorittimille.
    • Amdgpu-ohjain lisää AdaptiveSync-teknologian tuen ja mahdollisuuden käyttää suojattua näyttöä useiden näyttöjen kanssa. Päivitetty tuki DCN 3.2:lle (Display Core Next), SR-IOV RAS:lle, VCN RAS:lle, SMU 13.x:lle ja DP 2.1:lle.
    • Lisätty tuki SM8350-, SM8450 SM8550-, SDM845- ja SC8280XP-alustoille msm-ohjaimeen (GPU Qualcomm Adreno).
    • Nouveau-ohjain on lopettanut tuen vanhoille ioctl-puheluille.
    • Kokeellinen tuki NPU VerSiliconille (VeriSilicon Neural Network Processor) on lisätty etnaviv-ohjaimeen.
    • Rinnakkaisportin kautta kytkettyjen IDE-asemien pata_parport-ohjain on otettu käyttöön. Lisätty ohjain mahdollisti vanhan PARIDE-ohjaimen poistamisen ytimestä ja ATA-alijärjestelmän päivittämisen. Uuden ohjaimen rajoituksena on, että tulostinta ja levyä ei voida yhdistää samanaikaisesti rinnakkaisportin kautta.
    • Lisätty ath12k-ohjain langattomille korteille, jotka perustuvat Qualcomm-siruihin Wi-Fi 7 -tuella. Lisätty tuki RealTek RTL8188EU -siruihin perustuville langattomille korteille.
    • Lisätty tuki 46:lle ARM64-arkkitehtuuriin perustuvalle levylle, mukaan lukien 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 myös laitteet perustuu SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 ja SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328, 3, RK642, RK654/68 69/AMXNUMX / AMXNUMX).

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodosti muunnelman täysin ilmaisesta ytimestä 6.3 - Linux-libre 6.3-gnu, joka on poistettu laiteohjelmistosta ja ajurielementeistä, jotka sisältävät ei-vapaita komponentteja tai koodiosia, joiden laajuutta rajoittaa valmistaja. Julkaisussa 6.3 blobit puhdistettiin uusista ath12k-, aw88395- ja peb2466-ajureista sekä uusista AArch64-pohjaisten qcom-laitteiden laitepuutiedostoista. Päivitetty blob-puhdistuskoodi amdgpu-, xhci-rcar-, qcom-q6v5-pas-, sp8870-, av7110-ajureissa ja alijärjestelmissä sekä ohjelmistodekoodattujen DVB-korttien ohjaimissa ja esikäännetyissä BPF-tiedostoissa. Pysäytyi tyhjennysohjaimet mga, r128, tm6000, cpia2 ja r8188eu, koska ne poistettiin ytimestä. Parannettu i915-ohjaimen blob-puhdistus.

Lähde: opennet.ru

Lisää kommentti