Linux -ydin 5.14

Linux -ydin 5.14

Kahden kuukauden kehitystyön jälkeen Linus Torvalds toimitettu ytimen julkaisu Linux 5.14. 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.

Pääasiallinen innovaatioita:

  • levyalijärjestelmä, syöttö/tulostus ja tiedostojärjestelmät:
    • cgroupille toteutettu uusi I/O-prioriteettiohjain - rq-qos, joka voi ohjata kunkin c-ryhmän jäsenten luomien laitteiden estopyyntöjen käsittelyn prioriteettia. Uusi prioriteettiohjaintuki on lisätty mq-deadline I/O-aikatauluun;
    • ext4-tiedostojärjestelmässä toteutettu uusi ioctl-komento EXT4_IOC_CHECKPOINT, joka pakottaa kaikki odottavat tapahtumat lokista ja niihin liittyvistä puskureista levylle ja myös korvaa lokitallennustilan käyttämän alueen. Muutosta valmisteltiin osana aloitetta tietovuodojen estämiseksi tiedostojärjestelmistä;
    • Btrfs:ssä tehty Suorituskyvyn optimointi: Poistamalla tarpeeton laajennettujen attribuuttien kirjaaminen fsync-suorituksen aikana, laajennetuilla määritteillä varustettujen intensiivisten toimintojen suorituskyky parani 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-kutsuja laitteen koon muuttamisen ja poistamisen peruuttamiseksi;
    • XFS:ssä työstetty uudelleen puskurivälimuistin toteutus, joka siirretään muistisivujen varaamiseen erätilassa. Parempi välimuistin tehokkuus;
    • F2FS lisäsi vaihtoehdon työskennellä vain luku -tilassa ja otti käyttöön pakatun lohkovälimuistitilan (compress_cache) satunnaisen lukusuorituksen parantamiseksi. Tuki on otettu käyttöön muistiin yhdistettyjen tiedostojen pakkaamiseen mmap()-toiminnolla. Tiedostojen pakkaamisen poistamiseksi käytöstä maskin avulla on ehdotettu uutta asennusvaihtoehtoa nocompress;
    • exFAT-ohjaimessa on tehty työtä yhteensopivuuden parantamiseksi joidenkin digitaalikameroiden tallennustilan kanssa;
    • lisätty järjestelmäkutsu quotactl_fd(), 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ä. Vanhojen laitteiden tuki on säilytetty kokonaisuudessaan, muutokset koskevat vain mahdollisuutta käyttää vanhoja ohjaimia, joita käytettäessä asemien nimi oli /dev/hd*, ei /dev/sd*;
    • Raw-ohjain on poistettu ytimestä, mikä tarjoaa puskuroimattoman pääsyn estolaitteisiin /dev/raw-liitännän kautta. Tämä toiminto on jo pitkään toteutettu O_DIRECT-lippua käyttävissä sovelluksissa;
  • muisti- ja järjestelmäpalvelut:
    • uusi ajoitustila on otettu käyttöön tehtävän ajastimessa SCHED_CORE, jonka avulla voit hallita, mitkä prosessit voivat toimia 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ä luotettavia ja epäluotettavia tehtäviä suorittamasta samassa SMT-säikeessä (Hyper Threading). ;
    • cgroup-mekanismille on toteutettu tuki kill-operaatiolle, 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 huomattavaan 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 kaikki prosessit, joista tuli jaetun lukituksen lähde pakotetaan pysähtymään 20 ms lopettamisen sijaan;
    • cgroup-kaistanleveysohjain CFS (CFS bandwidth controller), joka määrittää, kuinka paljon prosessoriaikaa voidaan varata kullekin cryhmälle, pystyy määrittelemään tietyn toiminnan keston rajoittamia rajoja, mikä mahdollistaa latenssiherkkien kuormien paremman säätelyn. Esimerkiksi asettamalla 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 luomiseksi, mikä mahdollistaa edelleen vain luotettavalla digitaalisella avaimella allekirjoitettujen BPF-ohjelmien lataamisen;
    • lisäsi uuden futex-operaation FUTEX_LOCK_PI2, joka laskee aikakatkaisun monotonisella ajastimella, joka ottaa huomioon järjestelmän lepotilassa viettämän ajan;
    • RISC-V-arkkitehtuurille tuki suurille muistisivuille (Transparent Huge-Pages) ja mahdollisuus käyttää KFENCE tunnistaa virheet työskennellessäsi muistin kanssa;
    • madvise()-järjestelmäkutsuun, joka tarjoaa keinon optimoida prosessimuistin hallintaa, lisätty MADV_POPULATE_READ ja MADV_POPULATE_WRITE -liput luovat "sivuvirheen" kaikille luku- tai kirjoitustoimintoja varten kartoitetuille muistisivuille suorittamatta varsinaista luku- tai kirjoitustoimintoa (oletusasetus). Lippujen käyttö voi olla hyödyllistä vähentää viiveitä ohjelman suorituskyvyssä, koska "sivuvirhe" -käsittelijä suoritetaan ennakoivasti kaikille kohdentamattomille sivuille kerralla odottamatta todellista pääsyä niille;
    • yksikkötestausjärjestelmässä kunit lisätty tuki testien suorittamiseen QEMU-ympäristössä;
    • uusia merkkiaineita lisätty: "osnoise" seuraamaan keskeytyksen käsittelyn aiheuttamia sovellusviiveitä ja " timerlat " näyttämään yksityiskohtaisia ​​tietoja viiveistä herättäessä ajastinsignaalista;
  • virtualisointi ja turvallisuus:
    • lisätty järjestelmäpuhelu memfd_secret(), jonka avulla voit luoda yksityisen muistialueen eristettyyn osoiteavaruuteen, joka näkyy vain omistajan prosessille, joka ei näy muissa prosesseissa ja joka ei ole suoraan ytimen käytettävissä;
    • seccomp-järjestelmäkutsujen suodatusjärjestelmässä lukkojen käsittelijöitä siirrettäessä käyttäjäavaruuteen voidaan yhdellä atomioperaatiolla luoda tiedostokuvaaja yksittäiselle tehtävälle ja palauttaa se järjestelmäkutsua käsiteltäessä. Ehdotettu toimenpide ratkaisee ongelma käsittelijän keskeytyksellä käyttäjätilassa signaalin saapuessa;
    • lisätty uusi mekanismi hallita resurssirajoituksia 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äiliö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äyttämisestä, puskureiden ylivuodosta, pääsystä ennen alustusta ja käytöstä nykyisen kontekstin ulkopuolella;
    • ARM64-alustan tarjoama osoittimen todennus voidaan nyt määrittää 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 on tallennettu itse osoittimen käyttämättömiin ylempiin bitteihin.
    • käyttäjätilassa Linuxissa lisätty tuki ajurien käytölle PCI-laitteissa virtuaalisella PCI-väylällä, jonka toteuttaa PCI-over-virtio-ohjain;
    • x86-järjestelmille lisätty tuki virtio-iommu paravirtualisoidulle laitteelle, jonka avulla voit lähettää IOMMU-pyyntöjä, kuten ATTACH, DETACH, MAP ja UNMAP, 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ä hyökkäysten mahdollisuuden vuoksi zombikuorma, manipuloi kolmannen osapuolen kanavien kautta tapahtuvaa tiedon vuotoa, joka tapahtuu toimintojen asynkronisen keskeytysmekanismin (TAA, TSX Asynchronous Abort) toiminnan aikana;
  • verkkoalijärjestelmä:
    • Jatkettiin integraatiota MPTCP:n (MultiPath TCP) ytimeen, joka on TCP-protokollan laajennus TCP-yhteyden toiminnan järjestämiseen ja pakettien toimittamiseen samanaikaisesti useita reittejä pitkin eri verkkorajapintojen kautta, jotka liittyvät eri IP-osoitteisiin. Uudessa numerossa lisätty mekanismi omien liikenteen hajautuskäytäntöjen asettamiseen IPv4:lle ja IPv6:lle (multipath hash policy), jonka avulla käyttäjätilasta on mahdollista määrittää, mitä pakettien kenttiä, mukaan lukien kapseloidut, käytetään laskettaessa polun valinnan määräävää hajautusarvoa. paketti;
    • socket-tuki on lisätty virtuaalisen liikenteen virtioon SOCK_SEQPACKET (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 kytkettyjen pistokkeiden välillä, mikä yksinkertaistaa monisäikeisten palvelinsovellusten luomista. . Uudessa versiossa lisätty välineet ohjauksen siirtämiseksi toiseen liitäntään, jos alun perin valitun pistorasian pyyntöä käsitellään epäonnistuessa (ratkaisee yksittäisten yhteyksien katkeamisen palvelujen uudelleenkäynnistyksen yhteydessä);
  • laitteet:
    • amdgpu-ohjaimessa toteutettu tuki uudelle AMD Radeon RX 6000 -sarjan GPU-sarjalle, koodinimellä "Beige Goby" (Navi 24) ja "Yellow Carp", sekä parannettu tuki 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) -grafiikkasuorittimissa ja vanhemmissa AMD-grafiikkasuorittimissa ASPM (Active State Power Management) -virransäästömekanismin tuki on oletusarvoisesti 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. 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 tekninen tuki AMD Smart Shift, joka muuttaa dynaamisesti prosessorin ja grafiikkasuorittimen virrankulutusparametreja kannettavissa tietokoneissa, joissa on piirisarja ja AMD-näytönohjain parantaakseen suorituskykyä pelaamisen, videon editoinnin ja 3D-renderöinnin aikana;
    • Intelin näytönohjainten i915-ohjaimessa mukana tuki Intel Alderlake P -siruille;
    • lisätty drm/hyperv-ohjain Hyper-V-virtuaalinäytönohjaimelle;
    • lisätty simpledrm-grafiikkaohjain, joka käyttää tulostukseen UEFI-laiteohjelmiston tai BIOSin tarjoamaa EFI-GOP- tai VESA-kehyspuskuria. Ohjaimen päätarkoitus on tarjota graafisia tulostusominaisuuksia käynnistyksen alkuvaiheessa, ennen kuin täyttä DRM-ohjainta voidaan käyttää. Ohjainta voidaan käyttää myös väliaikaisena ratkaisuna laitteille, joissa ei vielä ole alkuperäisiä DRM-ajureita;
    • lisätty all-in-one-tietokonetuki Vadelma Pi 400;
    • Lisätty dell-wmi-privacy-ajuri tukemaan Dellin kannettavien tietokoneiden kamera- ja mikrofonilaitteistokytkimiä;
    • Lenovon kannettaville tietokoneille lisätty WMI-liitäntä BIOS-parametrien muuttamiseen sysfs:n kautta /sys/class/firmware-attributes/;
    • laajennettu tuki laitteille, joissa on USB4-liitäntä;
    • lisätty tuki äänikorteille ja koodekkeille AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 ja Texas Instruments TAS2505. Parannettu äänituki HP- ja ASUS-kannettavissa tietokoneissa. Lisätty korjaustiedostoja, jotka vähentävät viiveitä ennen kuin ääni alkaa toistaa laitteissa, joissa on USB-liitäntä.

Lähde – opennet.ru.

Lähde: linux.org.ru