Linux 5.19 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds esitteli Linux-ytimen 5.19:n julkaisun. Merkittävimpiä muutoksia ovat: tuki LoongArch-prosessoriarkkitehtuurille, "BIG TCP" -korjausten integrointi, fscache-tilaustila, koodin poisto a.out-muodon tukemiseksi, mahdollisuus käyttää ZSTD:tä laiteohjelmiston pakkaamiseen, käyttöliittymä muistin poistamisen hallinta käyttäjätilasta, näennäissatunnaislukugeneraattorin luotettavuuden ja suorituskyvyn lisääminen, Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) ja ARM tuki SME (Scalable Matrix Extension) -laajennukset.

Ilmoituksessa Linus sanoi, että todennäköisesti seuraavan ytimen julkaisun numero on 6.0, koska 5.x-haara on kerännyt tarpeeksi julkaisuja muuttaakseen versionumeron ensimmäisen numeron. Numeroinnin muutos tehdään esteettisistä syistä ja se on muodollinen vaihe, joka lievittää sarjaan kertyneiden lukuisten ongelmien aiheuttamaa epämukavuutta.

Linus mainitsi myös käyttäneensä ARM64-arkkitehtuuriin (Apple Silicon) perustuvaa Applen kannettavaa Asahi Linux -jakeluun perustuvaa Linux-ympäristöä julkaisun luomiseen. Se ei ole Linuksen ensisijainen työasema, mutta hän käytti alustaa testatakseen sen soveltuvuutta ydintyöhön ja varmistaakseen, että hän pystyy tuottamaan ytimen julkaisuja matkustaessaan kevyen kannettavan tietokoneen kanssa. Aikaisemmin, monta vuotta sitten, Linuksella oli kokemusta Applen laitteiden käytöstä kehitystyössä - hän käytti kerran ppc970-suorittimeen perustuvaa PC:tä ja Macbook Air -kannettavaa.

Uusi versio sisältää 16401 2190 korjausta 16206 2127 kehittäjältä (edellisessä versiossa 90 13847 korjausta 1149456 349177 kehittäjältä), korjaustiedoston koko on 39 MB (muutokset koskivat 5.19 21 tiedostoa, 11 4 3 koodiriviä lisättiin, XNUMX riviä poistettiin XNUMX). Noin XNUMX % kaikista XNUMX:ssä tehdyistä muutoksista liittyy laiteajureihin, noin XNUMX % muutoksista liittyy laitteistoarkkitehtuurikohtaiseen koodin päivittämiseen, XNUMX % liittyy verkkopinoon, XNUMX % liittyy tiedostojärjestelmiin ja XNUMX %. liittyvät sisäisiin ytimen alijärjestelmiin.

Tärkeimmät innovaatiot ytimessä 5.19:

  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • EROFS (Enhanced Read-Only File System) -tiedostojärjestelmä, joka on tarkoitettu käytettäväksi vain luku -osioissa, on muutettu käyttämään fscache-alijärjestelmää, joka tarjoaa tietojen välimuistin. Muutos paransi merkittävästi sellaisten järjestelmien suorituskykyä, joissa suuri määrä kontteja käynnistetään EROFS-pohjaisesta imagosta.
    • Fscache-alijärjestelmään on lisätty on-demand -lukutila, jota käytetään EROFS:n optimointiin. Uuden tilan avulla voit järjestää lukuvälimuistin paikallisessa järjestelmässä olevista FS-kuvista. Toisin kuin alun perin saatavilla oleva toimintatapa, joka keskittyy verkkotiedostojärjestelmien kautta siirrettävien tietojen välimuistiin paikallisessa tiedostojärjestelmässä, "on-demand" -tila delegoi tiedon hakemisen ja välimuistiin kirjoittamisen toiminnot erilliselle yksikölle. taustaprosessi, joka on käynnissä käyttäjätilassa.
    • XFS tarjoaa mahdollisuuden tallentaa miljardeja laajennettuja attribuutteja i-solmuun. Yhden tiedoston laajuuksien enimmäismäärää on nostettu 4 miljardista 247:ään. On otettu käyttöön tila useiden laajennettujen tiedostomääritteiden atomiseen päivittämiseen kerralla.
    • Btrfs-tiedostojärjestelmä on optimoinut työskentelyn lukkojen kanssa, mikä mahdollisti noin 7 %:n suorituskyvyn lisäyksen kirjoitettaessa suoraan nowait-tilassa. Toimintojen suorituskyky NOCOW-tilassa (ilman kopiointia kirjoittamiseen) kasvaa noin 3 %. Sivun välimuistin kuormitus "lähetä"-komentoa suoritettaessa on vähentynyt. Alasivujen vähimmäiskokoa on pienennetty 64 kt:sta 4 kilotavuun (ytimen sivuja pienempiä alasivuja voidaan käyttää). Kantalukupuun käytöstä on siirrytty XArrays-algoritmiin.
    • NFS-palvelimeen on lisätty tila, joka laajentaa pyyntöihin vastaamatta jättäneen asiakkaan asettaman lukitustilan säilymistä. Uuden tilan avulla voit viivyttää lukon tyhjentämistä jopa päivällä, ellei toinen asiakas pyydä kilpailevaa lukkoa. Normaalitilassa esto poistetaan 90 sekunnin kuluttua siitä, kun asiakas lopettaa vastaamisen.
    • Fanotify FS:n tapahtumaseurantaalijärjestelmä toteuttaa FAN_MARK_EVICTABLE-lipun, jonka avulla voit estää esimerkiksi kohde-i-solmujen kiinnittämisen välimuistiin, jotta alihaaroja ei huomioida kiinnittämättä niiden osia välimuistiin.
    • FAT32-tiedostojärjestelmän ohjain on lisännyt tuen tietojen saamiseen tiedoston luomisajasta statx-järjestelmäkutsulla käyttämällä tehokkaampaa ja toimivampaa stat()-versiota, joka palauttaa laajennettuja tietoja tiedostosta.
    • ExFAT-ajuriin on tehty merkittäviä optimointeja, jotta joukon sektoreita voidaan tyhjentää samanaikaisesti, kun 'dirsync'-tila on aktiivinen, peräkkäisen sektorikohtaisen tyhjennyksen sijaan. Vähentämällä lohkopyyntöjen määrää optimoinnin jälkeen suuren hakemistomäärän luomisen suorituskyky SD-kortille parani yli 73-85 % klusterin koosta riippuen.
    • Ydin sisältää ensimmäisen korjaavan päivityksen ntfs3-ohjaimeen. Sen jälkeen kun ntfs3 sisällytettiin 5.15-ytimeen viime lokakuussa, ohjainta ei ole päivitetty ja viestintä kehittäjien kanssa on katkennut, mutta kehittäjät ovat nyt jatkaneet muutosten julkaisemista. Ehdotetut korjaustiedostot eliminoivat muistivuotojin ja kaatumisiin johtaneet virheet, ratkaisivat xfstests-suoritusongelmat, siivosivat käyttämättömän koodin ja korjasivat kirjoitusvirheet.
    • OverlayFS:ssä on otettu käyttöön yhdistettyjen tiedostojärjestelmien käyttäjätunnuksien yhdistäminen, jota käytetään liitetyssä vieraassa osiossa olevan tietyn käyttäjän tiedostojen yhdistämiseen nykyisen järjestelmän toisen käyttäjän kanssa.
  • Muisti- ja järjestelmäpalvelut
    • Lisätty alustava tuki Loongson 3 5000 -suorittimissa käytetylle LoongArch-käskysarjaarkkitehtuurille, joka toteuttaa uuden RISC ISA:n, joka on samanlainen kuin MIPS ja RISC-V. LoongArch-arkkitehtuuria on saatavana kolmessa eri muodossa: riisuttu 32-bittinen (LA32R), tavallinen 32-bittinen (LA32S) ja 64-bittinen (LA64).
    • Poistettu koodi, joka tukee a.out-suoritettavaa tiedostomuotoa, joka oli vanhentunut julkaisussa 5.1. A.out-muoto on jo pitkään ollut vanhentunut Linux-järjestelmissä, ja nykyaikaiset työkalut eivät tue a.out-tiedostojen luomista Linuxin oletuskokoonpanoissa. A.out-tiedostojen latausohjelma voidaan toteuttaa kokonaan käyttäjätilassa.
    • Tuki x86-spesifisille käynnistysvaihtoehdoille on lopetettu: nosp, nosmap, nosmep, noexec ja noclflush).
    • Tuki vanhentuneelle CPU h8300 -arkkitehtuurille (Renesas H8/300), joka on ollut pitkään ilman tukea, on lopetettu.
    • Laajennetut ominaisuudet, jotka liittyvät jaettujen lukkien ("jaetut lukot") havaitsemiseen, joita esiintyy käytettäessä muistissa olevaa kohdistamatonta dataa, koska data ylittää kaksi suorittimen välimuistiriviä suoritettaessa atomikäskyä. Tällaiset tukokset johtavat huomattavaan suorituskyvyn heikkenemiseen. Jos aiemmin oletusarvoisesti ydin antoi varoituksen, joka sisältää tiedot eston aiheuttaneesta prosessista, nyt ongelmallista prosessia hidastetaan entisestään muun järjestelmän suorituskyvyn säilyttämiseksi.
    • Lisätty tuki Intel-prosessoreihin toteutetulle IFS-mekanismille (In-Field Scan), jonka avulla voit suorittaa matalan tason suorittimen diagnostisia testejä, jotka voivat tunnistaa ongelmat, joita standardityökalut eivät havaitse virheenkorjauskoodien (ECC) tai pariteettibittien perusteella. . Suoritetut testit ovat ladattavan laiteohjelmiston muodossa, joka on suunniteltu samalla tavalla kuin mikrokoodipäivitykset. Testitulokset ovat saatavilla sysfs:n kautta.
    • Lisätty mahdollisuus upottaa ytimeen bootconfig-tiedosto, joka mahdollistaa komentorivivalintojen lisäksi ytimen parametrien määrittämisen asetustiedoston kautta. Upottaminen suoritetaan käyttämällä kokoonpanovaihtoehtoa 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Aiemmin bootconfig määritettiin liittämällä initrd-kuvaan. Integrointi ytimeen mahdollistaa bootconfig:n käytön kokoonpanoissa ilman initrd:tä.
    • Mahdollisuus ladata Zstandard-algoritmilla pakattu laiteohjelmisto on otettu käyttöön. Sysfs-tiedostoon on lisätty joukko ohjaustiedostoja /sys/class/firmware/*, joiden avulla voit aloittaa laiteohjelmiston lataamisen käyttäjätilasta.
    • Asynkroninen io_uring-I/O-rajapinta tarjoaa uuden lipun, IORING_RECVSEND_POLL_FIRST, joka asetettuna lähettää ensin verkkotoiminnon prosessoitavaksi kyselyn avulla, mikä voi säästää resursseja tilanteissa, joissa toiminnon käsittely tietyllä viiveellä on hyväksyttävää. io_uring lisäsi myös tuen socket()-järjestelmäkutsulle, ehdotti uusia lippuja yksinkertaistamaan tiedostokuvausten hallintaa, lisäsi "multi-shot"-tilan useiden yhteyksien hyväksymiseksi kerralla accept()-kutsussa ja lisäsi toimintoja NVMe:n edelleenlähettämiseen. komennot suoraan laitteeseen.
    • Xtensa-arkkitehtuuri tukee KCSAN (Kernel Concurrency Sanitizer) -virheenkorjaustyökalua, joka on suunniteltu havaitsemaan dynaamisesti kilpailuolosuhteet ytimessä. Myös lisätty tuki lepotilalle ja apuprosessoreille.
    • m68k-arkkitehtuurille (Motorola 68000) on toteutettu Android Goldfish -emulaattoriin perustuva virtuaalikone (alustasimulaattori).
    • AArch64-arkkitehtuurille on otettu käyttöön tuki Armv9-A SME (Scalable Matrix Extension) -laajennuksille.
    • eBPF-alijärjestelmä mahdollistaa kirjoitettujen osoittimien tallentamisen karttarakenteisiin ja lisää myös tuen dynaamisille osoittimille.
    • Ehdotetaan uutta ennakoivaa muistin palautusmekanismia, joka tukee käyttäjätilan hallintaa memory.reclaim-tiedoston avulla. Numeron kirjoittaminen määritettyyn tiedostoon yrittää häätää vastaavan määrän tavuja c-ryhmään liittyvästä joukosta.
    • Parannettu muistin käytön tarkkuus pakattaessa tietoja swap-osiossa zswap-mekanismin avulla.
    • RISC-V-arkkitehtuuri tukee 32-bittisten suoritettavien tiedostojen suorittamista 64-bittisissä järjestelmissä, lisätty tila rajoittavien attribuuttien sitomiseksi muistisivuille (esimerkiksi välimuistin poistamiseksi käytöstä) ja kexec_file_load()-toiminto on toteutettu. .
    • 32-bittisten Armv4T- ja Armv5-järjestelmien tuen toteutus on mukautettu käytettäväksi yleisissä monialustaisissa ydinrakenteissa, jotka soveltuvat erilaisiin ARM-järjestelmiin.
  • Virtualisointi ja turvallisuus
    • EFI-alijärjestelmä toteuttaa mahdollisuuden siirtää luottamuksellisesti salaisia ​​tietoja vierasjärjestelmiin paljastamatta niitä isäntäjärjestelmälle. Tiedot toimitetaan securityfs:n security/coco-hakemiston kautta.
    • Lukitussuojaustila, joka rajoittaa pääkäyttäjän pääsyä ytimeen ja estää UEFI Secure Bootin ohituspolut, on poistanut porsaanreiän, joka mahdollisti suojauksen ohituksen manipuloimalla ytimen virheenkorjausta.
    • Mukana on korjaustiedostoja, joiden tarkoituksena on parantaa pseudosatunnaislukugeneraattorin luotettavuutta ja suorituskykyä.
    • Kun rakennetaan Clang 15:llä, tuki ytimen rakenteiden satunnaistamisen mekanismille on toteutettu.
    • Landlock-mekanismi, jonka avulla voit rajoittaa prosessiryhmän vuorovaikutusta ulkoisen ympäristön kanssa, tukee sääntöjä, joiden avulla voit hallita tiedostojen uudelleennimeämistoimintojen suorittamista.
    • IMA (Integrity Measurement Architecture) -alijärjestelmä, joka on suunniteltu varmistamaan käyttöjärjestelmän komponenttien eheys digitaalisten allekirjoitusten ja tiivisteiden avulla, on siirretty käyttämään fs-verity-moduulia tiedostojen tarkistamiseen.
    • Toimintojen logiikka eBPF-alijärjestelmän etuoikeutettoman pääsyn poistamisessa on muuttunut - aiemmin kaikki bpf()-järjestelmäkutsuun liittyvät komennot oli poistettu käytöstä ja versiosta 5.19 alkaen pääsy komentoihin, jotka eivät johda objektien luomiseen, on jätetty. . Tämä toiminta vaatii etuoikeutetun prosessin BPF-ohjelman lataamiseen, mutta silloin etuoikeutetut prosessit voivat olla vuorovaikutuksessa ohjelman kanssa.
    • Lisätty tuki AMD SEV-SNP (Secure Nested Paging) -laajennukselle, joka tarjoaa suojatun työskentelyn sisäkkäisten muistisivutaulukoiden kanssa ja suojaa AMD EPYC -prosessoreihin kohdistuvilta "undeSErVed"- ja "SEVerity"-hyökkäyksiltä, ​​jotka mahdollistavat AMD SEV:n (Secure Encrypted Virtualization) ohituksen. ) suojamekanismi.
    • Lisätty tuki Intel TDX (Trusted Domain Extensions) -mekanismille, jonka avulla voit estää kolmannen osapuolen yritykset päästä käsiksi virtuaalikoneiden salattuun muistiin.
    • Estolaitteiden emulointiin käytetty virtio-blk-ohjain on lisännyt I/O-tuen kyselyn avulla, mikä on testien mukaan vähentänyt latenssia noin 10 %.
  • Verkkoalijärjestelmä
    • Paketti sisältää sarjan BIG TCP -korjauksia, joiden avulla voit kasvattaa TCP-paketin enimmäispakettikoon 4 Gt:iin nopeiden sisäisten tietokeskusverkkojen toiminnan optimoimiseksi. Samanlainen pakettikoon lisäys 16-bittisellä otsikkokentän koolla saavutetaan toteuttamalla "jumbo"-paketteja, joiden IP-otsikon koko on asetettu 0:ksi ja todellinen koko lähetetään erillisessä 32-bittisessä muodossa. kenttään erillisessä liitteenä olevassa otsikossa. Suorituskykytestauksessa paketin koon asettaminen 185 kilotavuun lisäsi suorituskykyä 50 % ja vähensi merkittävästi tiedonsiirron viivettä.
    • Työtä jatkettiin työkalujen integroimiseksi verkkopinoon pakettien pudotuksen syiden (syykoodien) jäljittämiseksi. Syykoodi lähetetään, kun pakettiin liittyvä muisti vapautetaan, ja se sallii tilanteet, kuten pakettien hylkäämisen otsikkovirheiden vuoksi, rp_filter-huijauksen havaitsemisen, virheellisen tarkistussumman, muistin loppumisen, IPSec XFRM -sääntöjen laukaisun, virheellisen järjestysnumeron TCP:n jne.
    • Lisätty tuki MPTCP (MultiPath TCP) -yhteyksien palautumiselle tavallisen TCP:n käyttöön tilanteissa, joissa tiettyjä MPTCP-ominaisuuksia ei voida käyttää. MPTCP on TCP-protokollan laajennus TCP-yhteyden toiminnan järjestämiseen ja pakettien toimittamiseen samanaikaisesti useita reittejä pitkin eri IP-osoitteisiin liittyvien eri verkkorajapintojen kautta. Lisätty API ohjaamaan MPTCP-virtoja käyttäjätilasta.
  • Оборудование
    • Lisätty yli 420 400 riviä amdgpu-ohjaimeen liittyvää koodia, joista noin 22.5 21 riviä on automaattisesti luotuja otsikkotiedostoja ASIC-rekisteritietoille AMD GPU -ohjaimessa, ja toiset 4 21 riviä tarjoavat alustavan tuen AMD SoC13:lle. AMD GPU:iden ajurien kokonaiskoko ylitti 3 miljoonaa koodiriviä. SoC7000:n lisäksi AMD-ohjain sisältää tuen SMU XNUMX.x:lle (System Management Unit), päivitetyn tuen USB-C:lle ja GPUVM:lle, ja se on valmis tukemaan seuraavan sukupolven RDNAXNUMX:a (RX XNUMX) ja CDNA:ta (AMD Instinct). alustat.
    • i915-ohjain (Intel) on laajentanut virranhallintaan liittyviä ominaisuuksia. Lisätty tunnisteita kannettavissa tietokoneissa käytettäville Intel DG2 (Arc Alchemist) -grafiikkasuorittimille, tarjottu alustava tuki Intel Raptor Lake-P (RPL-P) -alustalle, lisätty tietoja Arctic Sound-M -näytönohjainkorteista), toteutettu ABI laskentamoottoreille, lisätty DG2-korttituki Tile4-formaatille, Haswell-mikroarkkitehtuuriin perustuvissa järjestelmissä on toteutettu DisplayPort HDR -tuki.
    • Nouveau-ohjain on siirtynyt käyttämään drm_gem_plane_helper_prepare_fb-käsittelijää; staattista muistin varausta on sovellettu joihinkin rakenteisiin ja muuttujiin. Mitä tulee NVIDIA:n avoimen lähdekoodin ydinmoduulien käyttöön Nouveaussa, toistaiseksi tehty työ on vain virheiden tunnistamista ja poistamista. Jatkossa julkaistua laiteohjelmistoa on tarkoitus käyttää ajurien suorituskyvyn parantamiseen.
    • Lisätty ohjain Applen tietokoneissa käytettävälle NVMe-ohjaimelle, joka perustuu M1-siruun.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodosti version täysin ilmaisesta ytimestä 5.19 - Linux-libre 5.19-gnu, joka on poistettu laiteohjelmistoelementeistä ja ohjaimista, jotka sisältävät ei-vapaita komponentteja tai koodin osia, joiden laajuus on valmistajan rajoittama. Uusi julkaisu puhdistaa pureLiFi X/XL/XC:n ja TI AMx3 Wkup-M3 IPC:n ajurit. Päivitetty blob-puhdistuskoodi Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu-ajureissa ja alijärjestelmissä. Qualcomm AArch64 -laitepuutiedostojen käsittely on toteutettu. Lisätty tuki uudelle Sound Open Firmware -komponenttien nimeämisjärjestelmälle. Lopetettu ATM Ambassador -ohjaimen puhdistaminen, joka poistettiin ytimestä. Blob-puhdistuksen hallinta HDCP:ssä ja Mellanox Coressa on siirretty erillisiin kconfig-tageihin.

Lähde: opennet.ru

Lisää kommentti