Linux 5.14 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds esitteli Linux-ytimen 5.14:n julkaisun. Merkittävimpiä muutoksia: uudet quotactl_fd()- ja memfd_secret()-järjestelmäkutsut, ide- ja raw-ajureiden poisto, uusi I/O-prioriteettiohjain cgroupille, SCHED_CORE-tehtävien ajoitustila, infrastruktuuri vahvistettujen BPF-ohjelmalatainten luomiseen.

Uusi versio sisältää 15883 2002 korjausta 69 12580 kehittäjältä, korjaustiedoston koko on 861501 MB (muutokset vaikuttivat 321654 47 tiedostoon, 5.14 14 koodiriviä lisättiin, 13 3 riviä poistettiin). Noin 3 % 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:

  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • c-ryhmille on toteutettu uusi I/O-priorisointiohjain, rq-qos, joka voi ohjata kunkin c-ryhmän jäsenten generoimien laitteiden estopyyntöjen käsittelyprioriteettia. Uusi prioriteettiohjaintuki on lisätty mq-deadline I/O-aikatauluun.
    • Ext4-tiedostojärjestelmä toteuttaa uuden ioctl-komennon, EXT4_IOC_CHECKPOINT, joka pakottaa kaikki vireillä olevat tapahtumat lokikirjasta ja niihin liittyvistä puskureista tyhjennettävä levylle ja myös korvaa lokin käyttämän alueen tallennustilassa. Muutosta valmisteltiin osana aloitetta, jolla pyritään estämään tietovuodot tiedostojärjestelmistä.
    • Btrfs:iin on tehty suorituskyvyn optimointia: poistamalla tarpeeton laajennettujen attribuuttien kirjaaminen fsync-suorituksen aikana, intensiivisten toimintojen suorituskyky laajennetuilla määritteillä on kasvanut jopa 17%. Lisäksi suoritettaessa trimmaustoimintoja, jotka eivät vaikuta laajuuteen, täydellinen synkronointi poistetaan käytöstä, mikä lyhensi toiminta-aikaa 12%. Sysfs:ään on lisätty asetus I/O-kaistanleveyden rajoittamiseksi FS:ää tarkistettaessa. Lisätty ioctl-kutsut laitteen koon muuttamisen ja poistamisen peruuttamiseksi.
    • XFS:ssä puskurivälimuistin toteutus on suunniteltu uudelleen, ja se on siirretty varaamaan muistisivuja erätilassa. Parempi välimuistin tehokkuus.
    • F2FS lisää vaihtoehdon toimia vain luku -tilassa ja ottaa käyttöön pakatun lohkovälimuistitilan (compress_cache) satunnaisen lukusuorituksen parantamiseksi. Tuki on otettu käyttöön muistiin yhdistettyjen tiedostojen pakkaamiseen mmap()-toiminnolla. Maskiin perustuvan tiedostopakkauksen poistamiseksi valikoivasti käytöstä on ehdotettu uutta asennusvaihtoehtoa nocompress.
    • ExFAT-ajurin kanssa on tehty työtä yhteensopivuuden parantamiseksi joidenkin digitaalikameroiden tallennustilan kanssa.
    • Lisätty quotactl_fd()-järjestelmäkutsu, jonka avulla voit hallita kiintiöitä ei erityisen laitetiedoston kautta, vaan määrittämällä siihen tiedostojärjestelmään liittyvän tiedostokuvaajan, jolle kiintiötä sovelletaan.
    • IDE-liitännällä varustetut lohkolaitteiden vanhat ajurit on poistettu ytimestä, ja ne on pitkään korvattu libata-alijärjestelmällä.
    • "Raaka"-ohjain on poistettu ytimestä, mikä tarjoaa puskuroimattoman pääsyn estolaitteisiin /dev/raw-liitännän kautta. Tämä toiminto on jo pitkään otettu käyttöön sovelluksissa, joissa on O_DIRECT-lippu.
  • Muisti- ja järjestelmäpalvelut
    • Tehtävien ajoittaja ottaa käyttöön uuden ajoitustilan, SCHED_CORE, jonka avulla voit hallita, mitkä prosessit voidaan suorittaa yhdessä samassa CPU-ytimessä. Kullekin prosessille voidaan määrittää evästetunniste, joka määrittää prosessien välisen luottamuksen laajuuden (esimerkiksi kuuluminen samalle käyttäjälle tai säilöön). Järjestäessään koodin suorittamista ajoittaja voi varmistaa, että yksi CPU-ydin jaetaan vain samaan omistajaan liittyvien prosessien kesken, mitä voidaan käyttää estämään joitain Spectre-hyökkäyksiä estämällä luotettujen ja ei-luotettujen tehtävien suorittamisen samassa SMT-säikeessä (Hyper Threading). .
    • cgroupille on otettu käyttöön kill-operaatiotuki, jonka avulla voit tappaa kaikki ryhmään liittyvät prosessit kerralla (lähetä SIGKILL) kirjoittamalla "1" virtuaalitiedostoon cgroup.kill.
    • 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ällainen esto johtaa merkittävään suorituskyvyn heikkenemiseen, joten aiemmin oli mahdollista lopettaa eston aiheuttanut sovellus väkisin. Uusi julkaisu lisää ytimen komentoriviparametrin "split_lock_detect=ratelimit:N", jonka avulla voit määrittää järjestelmän laajuisen rajan lukitustoimintojen nopeudelle sekunnissa, jonka ylittymisen jälkeen mikä tahansa prosessi, josta on tullut split-lukko. pakotetaan pysähtymään 20 ms:ksi lopettamisen sijaan.
    • cgroup-kaistanleveyden ohjain CFS (CFS bandwidth controller), joka määrittää, kuinka paljon prosessoriaikaa voidaan varata kullekin cryhmälle, toteuttaa mahdollisuuden määritellä aikarajoitetut rajoitukset, mikä mahdollistaa paremman viiveherkän työkuormituksen säätelyn. Jos esimerkiksi asetat cpu.cfs_quota_us arvoon 50000 ja cpu.cfs_period_us arvoon 100000, ryhmä prosesseja voi tuhlata 100 ms CPU-aikaa joka 50 ms.
    • Lisätty alkuperäinen infrastruktuuri BPF-ohjelmalataajien luomiseen, mikä mahdollistaa edelleen vain luotetulla digitaalisella avaimella allekirjoitettujen BPF-ohjelmien lataamisen.
    • Lisätty uusi futex-toiminto FUTEX_LOCK_PI2, joka laskee monotonisen ajastimen avulla aikakatkaisun, joka ottaa huomioon järjestelmän lepotilassa viettämän ajan.
    • RISC-V-arkkitehtuurissa on toteutettu tuki suurille muistisivuille (Transparent Huge-Pages) ja mahdollisuus käyttää KFENCE-mekanismia virheiden havaitsemiseen muistia käytettäessä.
    • Madvise()-järjestelmäkutsu, joka tarjoaa keinon optimoida prosessin muistinhallintaa, on lisännyt liput MADV_POPULATE_READ ja MADV_POPULATE_WRITE luomaan "sivuvian" kaikille muistisivuille, jotka on kartoitettu luku- tai kirjoitustoimintoihin suorittamatta varsinaista luku- tai kirjoitustoimintoa. (oletusasetus). Lippujen käyttö voi olla hyödyllistä vähentää viiveitä ohjelman suorittamisessa, koska "sivuvirhe" -käsittelijä suoritetaan ennakoivasti kaikille kohdentamattomille sivuille kerralla odottamatta todellista pääsyä niille.
    • Kunit-yksikkötestausjärjestelmä on lisännyt tuen testien suorittamiseen QEMU-ympäristössä.
    • Uusia jäljitteitä on lisätty: "osnoise" seuraamaan keskeytyksen käsittelyn aiheuttamia sovellusviiveitä ja "timelat" näyttämään yksityiskohtaisia ​​tietoja viiveistä herättäessä ajastinsignaalista.
  • Virtualisointi ja turvallisuus
    • Järjestelmäkutsu memfd_secret() on lisätty yksityisen muistialueen luomiseksi eristettyyn osoiteavaruuteen, joka näkyy vain omistavassa prosessissa, ei heijastu muihin prosesseihin ja joka ei ole suoraan ytimen käytettävissä.
    • seccomp-järjestelmäkutsujen suodatusjärjestelmässä estonkäsittelijöitä siirrettäessä käyttäjätilaan on mahdollista luoda yksittäiselle atomioperaatiolle tiedostokuvaaja yksittäiselle tehtävälle ja palauttaa se järjestelmäkutsua käsiteltäessä. Ehdotettu toimenpide ratkaisee ongelman, joka liittyy käsittelijän keskeyttämiseen käyttäjätilassa signaalin saapuessa.
    • Lisätty uusi mekanismi resurssirajojen hallintaan käyttäjätunnuksen nimiavaruudessa, joka sitoo yksittäiset rlimit-laskurit käyttäjälle "käyttäjänimiavaruudessa". Muutos ratkaisee ongelman, joka liittyy yhteisten resurssilaskurien käyttöön, kun yksi käyttäjä ajaa prosesseja eri säilöissä.
    • ARM64-järjestelmien KVM-hypervisor on lisännyt mahdollisuuden käyttää MTE-laajennusta (MemTag, Memory Tagging Extension) vierasjärjestelmissä, jonka avulla voit sitoa tunnisteita jokaiseen muistinvaraustoimintoon ja järjestää osoittimien oikean käytön tarkistuksen estääksesi haavoittuvuudet, jotka aiheutuvat jo vapautettujen muistilohkojen käytöstä, puskurin ylivuoto, käyttö ennen alustusta ja käyttö nykyisen kontekstin ulkopuolella.
    • ARM64-alustan Pointer Authentication -toiminnot voidaan nyt konfiguroida erikseen ytimelle ja käyttäjätilalle. Teknologian avulla voit käyttää erikoistuneita ARM64-käskyjä palautusosoitteiden tarkistamiseen käyttämällä digitaalisia allekirjoituksia, jotka tallennetaan itse osoittimen käyttämättömiin ylempiin bitteihin.
    • User-mode Linux on lisännyt tuen PCI-laitteiden ohjaimien käyttämiselle virtuaalisella PCI-väylällä, joka on toteutettu PCI-over-virtio-ohjaimella.
    • x86-järjestelmille lisätty tuki virtio-iommu paravirtualisoidulle laitteelle, mikä mahdollistaa IOMMU-pyyntöjen, kuten ATTACH, DETACH, MAP ja UNMAP, lähettämisen virtio-kuljetuksen kautta emuloimatta muistisivutaulukoita.
    • Intel-suorittimissa Skylake-perheestä Coffee Lakeen Intel TSX:n (Transactional Synchronization Extensions) käyttö, joka tarjoaa työkaluja monisäikeisten sovellusten suorituskyvyn parantamiseen eliminoimalla dynaamisesti tarpeettomat synkronointitoiminnot, on oletuksena poistettu käytöstä. Laajennukset on poistettu käytöstä mahdollisten Zombieload-hyökkäysten vuoksi, jotka manipuloivat tietovuotoa kolmannen osapuolen kanavien kautta TAA (TSX Asynchronous Abort) -mekanismin toiminnan aikana.
  • Verkkoalijärjestelmä
    • Integrointi MPTCP:n (MultiPath TCP) ytimeen, TCP-protokollan laajennus TCP-yhteyden toiminnan järjestämiseen ja pakettien toimittamiseen samanaikaisesti useita reittejä pitkin eri verkkoliitäntöjen kautta, jotka liittyvät eri IP-osoitteisiin. Uusi julkaisu lisää mekanismin omien liikenteen hajautuskäytäntöjen asettamiseen IPv4:lle ja IPv6:lle (multipath hash policy), jolloin käyttäjätilasta voidaan määrittää, mitä pakettien kenttiä, mukaan lukien kapseloidut, käytetään laskettaessa hajautusarvoa, joka määrittää paketin polun valinta.
    • Virto-virtuaalikuljetukseen on lisätty tuki SOCK_SEQPACKET-socketeille (järjestetty ja luotettava datagrammien siirto).
    • SO_REUSEPORT-kantamekanismin ominaisuuksia on laajennettu, mikä mahdollistaa useiden kuunteluliitäntöjen yhdistämisen yhteen porttiin kerralla vastaanottaakseen yhteyksiä saapuvien pyyntöjen jakautuessa samanaikaisesti kaikkien SO_REUSEPORTin kautta yhdistettyjen pistokkeiden välillä, mikä yksinkertaistaa monisäikeisten palvelinsovellusten luomista. . Uusi versio lisää työkaluja ohjauksen siirtämiseen toiseen pistorasiaan, jos alun perin valitun pistorasian pyyntöä käsitellään epäonnistuessa (ratkaisee yksittäisten yhteyksien katkeamisen palveluita käynnistettäessä).
  • Оборудование
    • Amdgpu-ohjain tukee uusia AMD Radeon RX 6000 -sarjan grafiikkasuoritteita, koodinimeltään "Beige Goby" (Navi 24) ja "Yellow Carp", sekä parannetun tuen Aldebaran GPU:lle (gfx90a) ja Van Gogh APU:lle. Lisätty mahdollisuus työskennellä samanaikaisesti useiden eDP-paneelien kanssa. APU Renoirille on otettu käyttöön tuki työskentelylle salattujen puskureiden kanssa videomuistissa (TMZ, Trusted Memory Zone). Lisätty tuki hot-unplug-näytönohjaimelle. Radeon RX 6000 (Navi 2x) -grafiikkasuorittimille ja vanhemmille AMD-grafiikkasuorittimille ASPM (Active State Power Management) -tuki on oletuksena käytössä, mikä oli aiemmin käytössä vain Navi 1x-, Vega- ja Polaris-grafiikkasuorittimissa.
    • AMD-siruille on lisätty tuki jaetulle virtuaalimuistille (SVM, jaettu virtuaalimuisti) HMM (Heterogeneous memory management) -alijärjestelmän pohjalta, mikä mahdollistaa laitteiden käytön omilla muistinhallintayksiköillä (MMU, memory management unit), joka voi käyttää päämuistia. Erityisesti HMM:n avulla voit järjestää GPU:n ja CPU:n välille jaetun osoitetilan, jossa GPU voi käyttää prosessin päämuistia.
    • Lisätty alustava tuki AMD Smart Shift -teknologialle, joka muuttaa dynaamisesti prosessorin ja grafiikkasuorittimen tehoasetuksia kannettavissa tietokoneissa, joissa on AMD-piirisarja ja näytönohjain.
    • Intel-näytönohjainkorttien i915-ohjain sisältää tuen Intel Alderlake P -siruille.
    • Lisätty drm/hyperv-ohjain Hyper-V-virtuaalinäytönohjaimelle.
    • Lisätty tuki Raspberry Pi 400 all-in-one -tietokoneelle.
    • Lisätty dell-wmi-privacy-ajuri tukemaan Dellin kannettavien tietokoneiden kamera- ja mikrofonikytkimiä.
    • Lenovon kannettaviin tietokoneisiin on lisätty WMI-liitäntä BIOS-asetusten muuttamista varten sysfs /sys/class/firmware-attributes/ kautta.
    • Laajennettu tuki laitteille, joissa on USB4-liitäntä.
    • Lisätty tuki AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 ja Texas Instruments TAS2505 äänikorteille ja koodekeille. Parannettu äänituki HP- ja ASUS-kannettavissa tietokoneissa. Lisätty korjaustiedostoja viiveiden vähentämiseksi, ennen kuin ääni alkaa toistaa USB-laitteilla.

Lähde: opennet.ru

Lisää kommentti