Kahden kuukauden kehitystyön jälkeen Linus Torvalds julkaisi ytimen. Linux 7.2. Merkittävimpiä muutoksia: USB4STREAM-tiedonsiirtomekanismi, btrfs-, xfs- ja ext4-suorituskyvyn optimoinnit, i486-suoritintuen koodin poistamisen jatkaminen, sisäkkäisten SCHED_EXT-ajoittajien luomisen mahdollisuus, muistin kulutuksen vähentäminen swap-alijärjestelmässä, nimeämättömien pipejen nopeuttaminen, tuki Intel MBEC- ja AMD GMET -laajennuksille KVM:ssä, AppleTalk-protokollan poisto, alustava tuki HDMI 2.1 FRL:lle AMDGPU-ajurissa.
Ytimen 7.2 (1, 2, 3) tärkeimmät uudet ominaisuudet:
- Levyalijärjestelmä, I/O ja tiedostojärjestelmät
- iomap-mekanismista on poistettu ylimääräinen memset-funktion kutsu jo suoritetuille iteraatioille iomap_iter()-funktiossa. Tämä lisäsi nopeiden NVMe-levyjen suuren I/O-intensiteetin vuoksi sekunnissa suoritettavien tulo-/lähtöoperaatioiden määrää (IOPS) 5 % ext4- ja xfs-tiedostojärjestelmiä käytettäessä tehdyissä testeissä.
- XFS on julistettu vakaaksi vyöhykkeellisten tallennuslaitteiden tueksi (lohko- tai sektoriryhmien jakaminen vyöhykkeisiin, joihin sallitaan vain peräkkäiset tiedonlisäykset, ja koko lohkoryhmän päivittäminen).
- Btrfs tukee nyt oletusarvoisesti suuria folioita, mikä vähentää ylimääräistä työtä ja parantaa suorituskykyä intensiivisen peräkkäisen I/O:n aikana. Kokeellista tukea valtaville folioille (enintään 2 Mt) on lisätty. Uusi ioctl, GET_CSUMS, on lisätty tarkistussummatietojen hakemiseen käyttäjätilassa, esimerkiksi mkfs-apuohjelmaa ja deduplikaation optimointia varten. Peräkkäisen kirjoituksen suorituskykyä on parannettu 15 % ja suoran I/O:n suorituskykyä 59 %.
- Ext4-tiedostojärjestelmän "fast commit" -mekanismia on suunniteltu merkittävästi uudelleen, jotta vältetään tiedostoristiriidat ja lukkiutumiset. Inode-tilannevedostilastojen vienti on lisätty /proc/fs/ext4/*/fc_info -tiedoston kautta. Hakemiston hajautusarvolaskennan suorituskykyä on optimoitu (lähes kaksinkertaistettu nopeus 255 merkin nimille, 27 % 64 merkin nimille ja 11 % 32 merkin nimille).
- F2FS tukee nyt fserror-virheenpalautusta, mikä mahdollistaa tiedostojärjestelmäongelmien valvonnan käyttäjätilasta. Keskeytysten käsittelyyn kuluvaa aikaa on lyhennetty.
- Device Mapperiin (DM) on lisätty uusi dm-inlinecrypt-käsittelijä lohkolaitteiden läpinäkyvää salausta ja salauksen purkamista varten käyttämällä laitteistoja, joissa on inline-salaustoiminto.
- Uusien tiedostojärjestelmien lisäämisestä ytimeen on toimitettu dokumentaatio.
- NFS:ssä oletuslohkon kokoa on suurennettu 4 megatavuun järjestelmissä, joissa on vähintään 16 Gt RAM-muistia (voit muuttaa lohkon kokoa manuaalisesti käyttämällä /proc/fs/nfsd/max_block_size-komentoa). Hakemiston delegoinnin tuki on lisätty, mikä mahdollistaa toimintojen suorittamisen tietyn hakemiston kanssa tietyn ajan ilman, että tilamuutoksia tarkistetaan. palvelin.
- SMB-palvelin tukee nyt pakatussa muodossa tallennettuja tiedostoja sekä tiedon pakkausta verkon kautta tapahtuvan siirron aikana.
- Uusi NTFS-toteutus (ntfsplus) lisää tuen symbolisille linkeille. Windows ja monentyyppisten metatietojen vioittumisen oikea käsittely on varmistettu.
- Kaksi vuotta sitten vanhentunut fscache-taustajärjestelmä EROFS (Enhanced Read-Only File System) -tietojen välimuistiin tallentamiseen on poistettu.
- Ceph FS tukee nyt asiakasistuntojen manuaalista nollausta.
- 9P-tiedostojärjestelmää on optimoitu parantamaan suorituskykyä esimerkiksi projektien koontiversioissa.
- File_getattr()-järjestelmäkutsulle on lisätty liput tiedostojärjestelmän kirjainkoon huomioivan tiedon hakemiseksi. FS_XFLAG_CASEFOLD-lippu osoittaa, että tiedostonimien tarkistus suoritetaan kirjainkoon huomioimatta, ja FS_XFLAG_CASENONPRESERVING-lippu osoittaa, että kirjainkoon tietoja ei säilytetä uusia tiedostonimiä luotaessa. Näitä lippuja voidaan käyttää kirjainkoon huomioimattomissa NFS-asiakasohjelmissa.
- O_EMPTYPATH-lippu on lisätty openat2()-järjestelmäkutsulle, mikä sallii tyhjän tiedostopolun välittämisen. Tässä tapauksessa avattavan tiedoston polku määritetään välitetyn tiedostokuvauksen perusteella.
- OPENAT2_REGULAR-lippu on lisätty openat2()-järjestelmäkutsulle, joka sallii vain tavallisten tiedostojen avaamisen (EFTYPE-virhe palautetaan, jos yritetään avata erikoistiedostoa, kuten sokettia, putkea tai laitetta).
- Muisti- ja järjestelmäpalvelut
- USB4STREAM-mekanismi on toteutettu tiedon suoratoistoon USB4-porttien kautta kytkettyjen tietokoneiden välillä. /dev/tbstreamX-laite on lisätty, jonka avulla voit lukea ja kirjoittaa tietoa käyttämällä tavallisia read()- ja write()-funktioita, samalla tavalla kuin lukea ja kirjoittaa tiedostoja. Esimerkiksi yhdellä isännällä voit lähettää tietoja komennolla "echo hello > /dev/tbstream0" ja toisella lukea ne komennolla "cat /dev/tbstream0". USB4STREAM-mekanismi voidaan yhdistää verkkoyhteyden muodostamiseen USB4-kaapelin (thunderbolt_net) kautta tai sitä voidaan käyttää erikseen tiedonsiirtoon sovellusten välillä, jotka eivät tue verkkopistokkeita.
- Toinen muutossarja, jolla poistetaan i486-suorittimien tuki, on lisätty. Yli 13 riviä koodia, joka liittyy liukulukujen emulointiin prosessoreissa, joissa ei ole FPU:ta, on poistettu. Tuki i486-prosessoreille, joissa ei ole CX8- (8 tavun vertailu ja vaihto) ja TSC- (tehtävien ajoituksessa käytetty suorittimen syklilaskuri) laitteistotoimintoja, on poistettu, koska näiden emulointikoodi on poistettu.
- OLPC XO-1 -tietokoneessa käytettyjen AMD Geode -prosessoreiden tuki on ilmoitettu jääneeksi pois.
- Lisätty tuki Intelin TDX:n (Trusted Domain Extensions) toteutuksen päivitykselle. TDX on mekanismi, jota käytetään vierasjärjestelmän RAM-muistin salaamiseen. TDX on toteutettu erityisenä ohjelmiston ajonaikaisena moduulina, jonka BIOS siirtää flash-muistista RAM-muistiin käynnistyksen aikana. Ytimessä on nyt ominaisuuksia tämän moduulin hallintaan ja sen korvaamiseen uudemmalla versiolla käynnissä olevassa järjestelmässä ilman uudelleenkäynnistystä.
- Uusi GPU-resurssien allokointiajoitus (Fair GPU scheduler) on otettu käyttöön. Sitä käytetään määrittämään järjestys, jossa GPU:ta käyttävien prosessien lähettämä työ suoritetaan GPU:lla. Perinteisen FIDO-jonon sijaan GPU-pyynnöissä uusi ajoitus hyödyntää reiluja resurssien allokointimekanismeja, jotka perustuvat Completely Fair Scheduler (CFS) -tehtäväajoitukseen. CFS käyttää käynnistyssuunnitelmaa, jossa on siirtymäaika seuraavalle prosessille. Uuden ajoituksen huomattavin vaikutus havaitaan interaktiivisten tehtävien rinnakkaissuorituksen aikana, jotka käyttävät paljon GPU:ta. Viime hetkellä ennen kernel 7.2:n julkaisua Fair GPU -ajoitus deaktivoitiin ja vanha FIFO-ajoitus palautettiin regressiovirheiden virheenkorjaustarpeen vuoksi, joka aiheutti suorituskyvyn heikkenemistä ja 100 %:n GPU-käyttöasteen tiettyjä pelejä suoritettaessa Protonissa.
- Muutokset eBPF-alijärjestelmässä: Lisätty mahdollisuus liittää yksi BPF-ohjelma useisiin jäljityspisteisiin. Jäljityspisteisiin liitetyt BPF-ohjelmat voivat nyt käyttää käyttäjätilan komponenttien muistia ja käsitellä varaamattomat muistisivut (sivuvirheet) oikein. bpf()-järjestelmäkutsu tukee nyt vakioattribuutteja (log_buf, log_size, log_level ja log_true_size), mikä mahdollistaa yhtenäisen metatietojen siirron kaikkien BPF-komentojen välillä, ei rajoitu BPF_PROG_LOAD-, BPF_BTF_LOAD- ja BPF_MAP_CREATE-komentoihin. Rajoitus enintään viiden parametrin välittämiseen BPF-funktioille on poistettu. Lisätty mahdollisuus käyttää turvallisesti bpf_arena-jaettua muistia ilman pelkoa varaamattomien muistisivujen käytöstä (sivuvirheet). BPF-hajautuskarttarakenteesta on otettu käyttöön uusi versio, joka mahdollistaa dynaamisen koon muuttamisen.
- Keskeytystilastojen sisältävän "/proc/interrupts"-tulosteen generointia on optimoitu, ja keskeytyslaskurien tallennusrakenteita on modernisoitu ja välimuistia on lisätty.
- Libselinuxissa käytetyn "/proc/filesystems"-tiedoston luomista on nopeutettu.
- Tehtävien ajoitus tukee nyt kuormituksen tasapainottamista suorittimen ytimien välillä ottaen huomioon suorittimen sisäisen välimuistin tilan. Ajoitus pyrkii nyt ryhmittelemään prosesseja käyttämällä jaettuja resursseja, kuten yhden prosessin säikeitä, jakamaan saman korkean tason välimuistin, mikä parantaa tiedonsaannin tehokkuutta lisäämällä todennäköisyyttä, että tarvittavat tiedot löytyvät välimuistista.
- SCHED_EXT-mekanismi, joka mahdollistaa BPF:n käytön CPU-ajoitusten luomiseen, on jatkanut sisäkkäisten ajoitusten (aliajoitusten) luomisen mahdollistamista, jolloin jokainen cgroup voi käyttää omaa tehtävien ajoitustaan.
- Jatkuvat muutosten siirto-ohjeet Rust-for-haarastaLinux, joka liittyy Rustin käyttöön toisena kielenä ajurien ja ytimen moduulien kehittämisessä (Rust-tuki ei ole oletuksena käytössä eikä sisällä Rustia pakollisena ytimen rakennusriippuvuutena). Rust-tuki ytimessä on toteutettu s390-arkkitehtuurille. Mukana on "zerocopy"-paketti, joka tarjoaa nopeita muistiprimitiivejä koodille "vaarallisessa" tilassa.
- Ytimen rakentamiseen vaadittavan LLVM-työkalupakin vähimmäisversiota on nostettu versioon 17.0.1.
- Minimalistisessa C-kirjastossa nolibc, joka toimitetaan ytimen lähdekoodin mukana Linux ja tarjoaa kehyksen perusjärjestelmäkutsuille, tukien OpenRISC- ja 32-bittisiä PA-RISC-arkkitehtuureja.
- Vaihto-osio on optimoitu parantamaan suorituskykyä ja vähentämään muistinkulutusta itse alijärjestelmän sisällä poistamalla ylimääräistä kuormitusta staattisten metatietojen tallennuksesta ja yhdistämällä anonyymin ja jaetun muistin tiedostoja käytettäessä. Muistin vähennys on varsin merkittävä; esimerkiksi 1 Tt:n vaihdettavan osion asentaminen vähentää muistinkulutusta noin 512 Mt.
- Muistin häätömekanismin suorituskykyä on parannettu. Mekanismi poistaa tai siirtää muistia swap-tilaan muistin vapauttamiseksi järjestelmän ollessa paineen alla. Tietyissä työkuormissa, kuten MongoDB:n testauksessa YCSB:llä (Yahoo! Cloud Serving Benchmark), on havaittu jopa 30 %:n suorituskyvyn parannuksia.
- Komento "make sbom" on lisätty koontijärjestelmään SBOM-luetteloiden (Software Bill Of Materials) luomiseksi. Luettelot heijastavat nykyisessä ytimen koonnissa käytettyjä komponentteja, kirjastoja ja riippuvuuksia sekä niiden lisenssitietoja, jotka on saatu kooditiedostojen SPDX-otsikoista.
- Nimeämättömien pipejen toteutusta on optimoitu lukkojen käsittelyä varten (muistin allokointitoiminnot siirretään lukon ulkopuolelle), mikä on lisännyt nimeämättömien pipejen läpimenoaikaa 21–48 % ja vähentänyt latenssia 17–33 %.
- Virtualisointi ja turvallisuus
- Slab-allokaattori tukee nyt Clang 22 -kääntäjässä toteutettujen allokointitunnusten käyttöä. Allokointitunnukset mahdollistavat yksilölliset tunnisteet muistin allokointitoiminnoille ja erityyppisten objektien erillisen allokoinnin, mikä vaikeuttaa puskurin ylivuotohaavoittuvuuksien hyödyntämistä (erillisessä allokoinnissa yhden tyyppisen objektin puskurin ylivuotoa ei voida helposti hyödyntää muuntyyppisten objektien vahingoittamiseksi).
- Copy Fail -haavoittuvuudessa sivuvälimuistin tietojen muokkaamiseen hyödynnetty AF_ALG-mekanismi on vanhentunut ja se on tarkoitus poistaa tulevassa julkaisussa. AF_ALG mahdollistaa laitteistokiihdyttimien käytön kryptografisissa laskennoissa ytimen Crypto API:ssa, mutta sitä käytetään melko erityisissä tilanteissa. Ytimen versiossa 7.2 asynkronisen I/O:n, vanhojen ajurien ja skcipher- ja aead-toteutusten nollakopiomekanismin tuki on poistettu AF_ALG:sta. Vain kryptografisten algoritmien ohjelmistototeutukset on säilytetty, ja tuki laitteistokryptografisille kiihdyttimille ytimen Crypto API:ssa on poistettu, koska AF_ALG laajentaa hyökkäyspintaa merkittävästi, mutta ei tarjoa suorituskykyetua verrattuna käyttäjätilan kryptografisiin toteutuksiin. AF_ALG:ta käytettiin Cryptsetup-työkalupaketissa, mutta sen tuki poistettiin viimeisimmästä 2.8.7-julkaisusta.
- IMA (Integrity Measurement Architecture) -mekanismia, jonka avulla ulkoinen palvelu voi varmistaa ytimen alijärjestelmien tilan ja siten niiden aitouden, on täydennetty tuella sisäisten mittaustulosten taulukoiden viemiselle käyttäjätilaan ja niiden poistamiselle ytimen puskureista muistin säästämiseksi.
- Landlock-moduulissa, joka tarjoaa etuoikeuttamattomille ohjelmille keinot rajoittaa ydinobjektien käyttöä Linux (tiedostohierarkiat, verkkosocketit, ioctl jne.) on lisätty tuki UDP-sockettien käyttöoikeuksien hallinnalle sekä mahdollisuus poistaa valikoivasti käytöstä objektilukitustietojen lähettäminen lokiin, jotta loki ei täyttyisi epäolennaisilla tiedoilla.
- Ydin on poistettu käytöstä strncpy()-funktiossa, joka kopioi tietyn määrän tavuja syötemerkkijonosta. Strncpy()-funktion käyttö loi virheriskin, joka johtui merkkijonon lopusta puuttuvasta null-merkistä tai ylimääräisistä nollilla täytetyistä merkeistä. Strncpy()-funktion sijaan on suositeltavaa käyttää strscpy()- ja strscpy_pad()-funktioita null-päätteisten merkkijonojen kopioimiseen, sekä strtomem_pad()-, memcpy_and_pad()- ja memcpy()-funktioita tunnetun kokoisten merkkijonojen kopioimiseen. Työ strncpy()-funktion käytön poistamiseksi ytimessä alkoi vuonna 2020, ja se vaati 362 committia 70 kehittäjältä.
- Hypervisorissa KVM Lisätty tuki Intelin MBEC (Mode-Based Execution Control) ja AMD:n GMET (Guest-Mode Execution Trap) -laajennuksille, jotka mahdollistavat ytimen ja käyttäjätilan suoritusoikeuksien erillisen käsittelyn vierasjärjestelmissä muistinkäännöstaulukoissa. Aiemmin Intelin ja AMD:n laitteistovirtualisointilaajennukset mahdollistivat muistisivujen merkitsemisen suoritettaviksi vain yhdellä bitillä, ja ytimen ja käyttäjätilan oikeudet erotettiin ohjelmistopohjaisesti hypervisoritasolla. MBECin ja GMETin käyttö poistaa hypervisoripuolen käyttöoikeustarkistukset ja vähentää merkittävästi resursseja kuluttavia ohjauksen siirtoja vierasjärjestelmästä VMexit-hypervisoriin.
- Verkkoalijärjestelmä
- TCP-AO (TCP Authentication Option, RFC 5925) -laajennus on siirretty uuteen libcrypto-kryptografiseen kirjastoon, mikä yksinkertaistaa koodia ja parantaa sen suorituskykyä. TCP-AO mahdollistaa TCP-otsikoiden varmentamisen MAC (Message Authentication Code) -koodeilla käyttäen nykyaikaisempia HMAC-SHA-1-96- ja AES-128-CMAC-96-algoritmeja, korvaten aiemmin saatavilla olleen TCP-MD5-vaihtoehdon, joka perustui vanhentuneeseen MD5-algoritmiin.
- Multipath TCP (MPTCP) -yhteyksien tuettujen alivirtojen määrää on nostettu kahdeksasta 64:ään.
- Työtä rtnl_lock-globaalin lukituksen käytön vähentämiseksi ytimen verkkopinossa jatkettiin.
- Ytimestä on poistettu AppleTalk-protokollapino, jota käytettiin Applen tietokoneissa vuodesta 1985 lähtien ja joka korvattiin 1990-luvulla. TCP/IPLisäksi on poistettu PPPoATM:ään liittymättömiä ATM-tiedonsiirtotekniikan komponentteja, ISA- ja PCMCIA-väyliin perustuvia ARCnet-verkkoliitäntöjä, PCMCIA-liitännällä varustettuja Bluetooth-sovittimia, Chelsean TLS-kiihdyttimiä, TLS:n ja sockmapin integrointiin tarkoitettua koodia sekä tukea 5/10 MHz:n taajuusalueille cfg80211/mac80211-langattomassa verkossa. Ratkaisemattomien esto-ongelmien ja ylläpitäjien puutteen vuoksi TCP Offload Engineen perustuva TLS-käsittelykiihdytyksen toteutus on poistettu (yleisempi TLS-kuormansiirtototeutus on säilytetty). Yhteensopivuuskoodi 32-bittisen x_tables-taulukon kanssa 64-bittisissä järjestelmissä on poistettu käytöstä ja se on ajoitettu poistettavaksi.
- pppoe-ajuri tukee nyt GRO (Generic Receive Offload) ja GSO (Generic Segmentation Offload) -mekanismeja pakettien uudelleenkokoamisen ja segmentoinnin laitteistokiihdyttämiseksi. GRO:n ja GSO:n käyttö lisää merkittävästi saapuvan liikenteen läpimenoa. Esimerkiksi osoitekääntimellä konfiguroiduissa MediaTek MT7621 -laitteissa suurin läpimenonopeus nousi 130 Mbit/s:stä 630 Mbit/s:iin.
- Оборудование
- AMDGPU-ajuri sisältää nyt alustavan tuen HDMI 2.1 FRL (Fixed Rate Link) -tekniikalle, mikä mahdollistaa pakkaamattoman videon siirron 4K/120Hz ja 8K/60Hz -taajuuksilla. HDMI 2.1 -tuki oli aiemmin vaikeasti saatavilla avoimen lähdekoodin ajureissa HDMI Forumin lisenssivaatimusten vuoksi, mutta AMD on nyt varmistanut vastaavan toteutuksen.
- i915-ajuri tukee nyt näytönohjaimen taustavärin asettamista. pin_params.needs_low_address-parametri on otettu käyttöön.
- Työtä jatkettiin Intel Xe -arkkitehtuuriin perustuvien näytönohjainten Xe DRM (Direct Rendering Manager) -ajurin parissa. Kyseistä ajuria käytetään Intel Arc -sarjan näytönohjaimissa ja integroiduissa näytönohjaimissa Tiger Lake -prosessoreista alkaen. Alustava tuki CRI (Crescent Island) -alustalle on lisätty. Järjestelmäohjain on toteutettu Xe3p dGPU -alustoille.
- Nouveau-ajuri ratkaisee NVIDIA GA100 -näytönohjaimen ongelmia.
- v3d-ajuria on päivitetty lisäämään nyt kyvyn hallita v3D-näytönohjaimen virrankulutusta Raspberry Pi -levyillä.
- Olemme jatkaneet Nova-ajurikomponenttien integrointia NVIDIA GeForce RTX 2000 -sarjasta lähtien käytetyille GSP-laiteohjelmistolla varustetuille NVIDIA-näytönohjaimille, jotka perustuvat Turing-mikroarkkitehtuuriin. Ajuri on kirjoitettu Rust-kielellä. Tuki on lisätty NVIDIA GA100-, Hopper- ja Blackwell-sarjojen näytönohjaimille.
- Lisätty tuki ARM-levyille, järjestelmäpiireille ja laitteille: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.
Samaan aikaan Latinalaisen Amerikan vapaaohjelmistosäätiö loi version täysin vapaasta ytimestä 7.2 - Linux-libre 7.2-gnu, puhdistettu laiteohjelmisto- ja ajurielementeistä, jotka sisältävät valmistajan rajoittamia ei-vapaita komponentteja tai koodiosia. Julkaisu 7.2 sisältää blob-siivouksen uusille rt722-sdca- ja tac5xx2-ajureille. amdgpu-, nova core-, qcom iris-, q6v5-, iwlwifi-, amdxnda-, adreno-, r8152- ja mt792x-ajurien siivouskoodi on päivitetty. Laiteohjelmiston latausliittymiä on muutettu. ARM-sirujen devicetree (dts) -tiedostojen blob-nimet on puhdistettu.
Lähde: opennet.ru
