Linux 5.1 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds toimitettu ytimen julkaisu Linux 5.1. Merkittävimpiä muutoksia: uusi käyttöliittymä asynkroniselle I/O-korjaukselle, mahdollisuus käyttää NVDIMM-muistia RAM-muistina, tuki Nouveaun jaetulle virtuaalimuistille, tuki erittäin suurten tiedostojärjestelmien skaalautuvalle valvonnalle fanotifyn kautta, mahdollisuus määrittää Zstd-pakkaus tasot Btrfs:ssä, uusi cpuidle TEO-käsittelijä, järjestelmäkutsujen toteutus 2038-ongelman ratkaisemiseksi, mahdollisuus käynnistää laitekartoituslaitteilta ilman initramfs:a, SafeSetID LSM -moduuli, tuki yhdistetyille live-korjauksille.

Pääasiallinen innovaatioita:

  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Otettu käyttöön uusi käyttöliittymä asynkroniselle I/O:lle - io_uring, joka on tunnettu I/O-pollaustuesta ja kyvystään työskennellä puskuroinnin kanssa tai ilman. Muistetaan, että aiemmin ehdotettu asynkroninen I/O-mekanismi "aio" ei tukenut puskuroitua I/O:ta, se saattoi toimia vain O_DIRECT-tilassa (ilman puskurointia ja välimuistin ohittamista), sillä oli ongelmia lukituksen kanssa, koska odotettiin metatietojen saatavuutta, ja suuria yleiskustannuksia, jotka aiheutuivat tietojen kopioimisesta muistiin.

      API:n sisällä
      io_uring-kehittäjät yrittivät poistaa vanhan aio-rajapinnan puutteet. Tekijä: tuottavuutta io_uring on hyvin lähellä SPDK ja on huomattavasti libaiota edellä, kun kysely on käytössä. Kirjasto on valmisteltu io_uringin käyttöä varten käyttäjätilassa toimivissa loppusovelluksissa vapauttavaa, joka tarjoaa korkean tason kehyksen ytimen käyttöliittymän yli;

    • Tapahtumanseurantamekanismissa FS fanotify() lisätty tuki superblock- ja rakennemuutostilanteiden seurantaan dirent (hakemistojen luomisen, poistamisen ja siirtämisen tapahtumat). Esitetyt ominaisuudet auttavat ratkaisemaan skaalautuvuusongelmia, joita syntyy luotaessa rekursiivista muutosseurantaa erittäin suurissa tiedostojärjestelmissä inotify-mekanismilla (suoria muutoksia voitiin aiemmin seurata vain inotifyn kautta, mutta
      suorituskyky suurten sisäkkäisten hakemistojen rekursiivisen seurannan olosuhteissa jätti paljon toivomisen varaa). Nyt tällainen seuranta voidaan tehdä tehokkaasti fanotifyn avulla;

    • Btrfs-tiedostojärjestelmässä lisätty kyky muokata pakkaustasoa zstd-algoritmille, jota voidaan pitää optimaalisena kompromissina nopean mutta tehottoman lz4:n ja hitaan mutta hyvän pakkauksen xz välillä. Analogisesti sen kanssa, kuinka aiemmin oli mahdollista asettaa pakkaustaso käytettäessä zlibiä, zstd:lle on lisätty tuki "-o compress=zstd:level" -liitännälle. Testauksen aikana ensimmäinen vähimmäistaso tarjosi tietojen pakkaamisen 2.658 438.47 kertaa pakkausnopeudella 910.51 MB/s, purkunopeudella 780 MB/s ja muistin kulutuksella 15 MB ja maksimitasolla 3.126 37.30 878.84 kertaa, mutta pakkaamalla. nopeus 2547 MB/s. purkaminen XNUMX MB/s ja muistin kulutus XNUMX MB;
    • lisätty kyky käynnistää laitekartoituslaitteessa olevasta tiedostojärjestelmästä ilman initramfs:ää. Nykyisestä ytimen julkaisusta alkaen laitekartoittimia voidaan käyttää suoraan käynnistyksen aikana, esimerkiksi osiona juuritiedostojärjestelmän kanssa. Osio määritetään käynnistysparametrilla "dm-mod.create". Ladattavaksi sallittuja laitekartoitusmoduuleja ovat: "crypt", "delay", "linear", "snapshot-origin" ja "verity";
    • F2FS_NOCOW_FL-lippu on lisätty F2FS-tiedostojärjestelmään, joka on suunnattu Flash-asemiin, mikä mahdollistaa kopiointi-kirjoitustilan poistamisen käytöstä tietylle tiedostolle.
    • Tiedostojärjestelmä poistettu ytimestä Exofs, joka on ext2:n muunnos, joka on sovitettu työskentelemään OSD (Object-based Storage Device) -objektitallennuslaitteiden kanssa. SCSI-protokollan tuki tällaisille objektitallennuslaitteille on myös poistettu;
  • Virtualisointi ja turvallisuus
    • Lisätty PR_SPEC_DISABLE_NOEXEC-vaihtoehto prctl():iin ohjatakseen käskyjen spekulatiivista suorittamista valitulle prosessille. Uuden vaihtoehdon avulla voit valikoivasti poistaa spekulatiivisen suorituksen käytöstä prosesseissa, joihin Spectre-hyökkäys voi mahdollisesti hyökätä. Lukitus kestää ensimmäiseen exec();
    • Toteutettu LSM-moduuli SafeSetID, jonka avulla järjestelmäpalvelut voivat hallita käyttäjiä turvallisesti ilman lisäoikeuksia (CAP_SETUID) ja hankkimatta pääkäyttäjän oikeuksia. Oikeudet määritetään määrittämällä säännöt securityfsissä, jotka perustuvat kelvollisten sidosten valkoiseen luetteloon (muodossa "UID1:UID2");
    • Lisätty matalan tason muutoksia, joita tarvitaan suojausmoduulien (LSM) pinopohjaiseen lataamiseen. Otettiin käyttöön "lsm"-ytimen käynnistysvaihtoehto, jolla ohjataan, mitkä moduulit ladataan ja missä järjestyksessä;
    • Tarkastusalijärjestelmään on lisätty tuki tiedostojen nimiavaruille;
    • Laajennettu GCC-liitännäisen structleak ominaisuudet, jonka avulla voit estää mahdolliset muistisisällön vuodot.Koodissa käytettyjen muuttujien alustus pinon viitekäytön kautta tarjotaan;
  • Verkkoalijärjestelmä
    • Pistorasioita varten toteutettu uusi vaihtoehto "SO_BINDTOIFINDEX" samanlainen kuin
      "SO_BINDTODEVICE", mutta otetaan argumenttina verkkoliitännän indeksinumero liitännän nimen sijaan;

    • Mac80211-pino on lisännyt mahdollisuuden määrittää useita BSSID:itä (MAC-osoitteita) yhdelle laitteelle. Osana projektia, jolla optimoidaan WiFi-suorituskyky, mac80211-pino on lisännyt puheaikalaskennan ja mahdollisuuden jakaa lähetysaika useiden asemien kesken (kun toimitaan tukiasematilassa, varataan vähemmän lähetysaikaa hitaille langattomille asemille sen sijaan, että aika jakautuisi tasaisesti kaikkien kesken. asemat);
    • Lisätty mekanismi"devlink-terveys", joka antaa ilmoituksia, kun verkkoliitännän kanssa ilmenee ongelmia;
  • Muisti- ja järjestelmäpalvelut
    • Toteutettu turvallinen signaalin toimitus, joka mahdollistaa PID-uudelleenkäytön. Esimerkiksi kutsuttaessa kill aiemmin voi syntyä tilanne, jossa heti signaalin lähettämisen jälkeen kohde-PID voisi vapautua prosessin päättymisen vuoksi ja varata toisen prosessin ja signaali päätyisi siirtymään toiseen prosessiin. Tällaisten tilanteiden poistamiseksi on lisätty uusi järjestelmäkutsu pidfd_send_signal, joka käyttää /proc/pid-tiedoston kuvauksia varmistaakseen vakaan prosessisidoksen. Vaikka PID-tunnusta käytettäisiin uudelleen järjestelmäkutsun käsittelyn aikana, tiedostokuvaaja ei muutu ja sitä voidaan käyttää turvallisesti signaalin lähettämiseen prosessiin;
    • lisätty kyky käyttää pysyviä muistilaitteita (esim NVDIMM) RAM-muistina. Tähän asti ydin tuki tällaisia ​​laitteita tallennuslaitteina, mutta nyt niitä voidaan käyttää myös lisäRAM-muistina. Ominaisuus on toteutettu vastauksena niiden käyttäjien toiveisiin, jotka ovat valmiita sietämään suorituskykyviivettä ja haluavat käyttää alkuperäistä Linux-ytimen muistinhallintasovellusliittymää sen sijaan, että käyttäisivät olemassa olevia käyttäjätilan muistinvarausjärjestelmiä, jotka toimivat mmap:n päällä dax:lle. tiedosto;
    • Lisätty uusi prosessorin vapaakäsittelijä (cpuidle, päättää milloin prosessori voidaan laittaa syvälle virransäästötiloihin; mitä syvemmälle tila, sitä enemmän säästöä, mutta myös sitä kauemmin tilasta poistuminen kestää) - TEO (Timer Events Oriented Governor ). Tähän asti on ehdotettu kahta cpuidle-käsittelijää - "menu" ja "ladder", jotka eroavat heuristiikasta. "Menu"-käsittelijällä on tiedossa ongelmia heurististen päätösten tekemisessä, joiden poistamiseksi päätettiin valmistella uusi käsittelijä. TEO on sijoitettu vaihtoehtona "menu"-käsittelijälle, mikä mahdollistaa paremman suorituskyvyn säilyttäen samalla virrankulutuksen.
      Voit aktivoida uuden käsittelijän käynnistysparametrilla "cpuidle.governor=teo";

    • Osana työtä poistaa vuoden 2038 ongelmat, jonka aiheuttaa 32-bittisen time_t-tyypin ylivuoto, sisältää järjestelmäkutsut, jotka tarjoavat 32-bittiset aikalaskurit 64-bittisille arkkitehtuureille. Tämän seurauksena 64-bittistä time_t-rakennetta voidaan nyt käyttää kaikissa arkkitehtuureissa. Samanlaisia ​​muutoksia on toteutettu myös verkkoalijärjestelmässä vaihtoehtojen osalta aikaleima verkko pistorasiat;
    • Kuumapaikkausjärjestelmään ytimen varten (live paikkaus) lisätty "Atomic Replace" -ominaisuus, joka mahdollistaa sarjan muutosten atomimaisen soveltamisen yhteen toimintoon. Tämän ominaisuuden avulla voit jakaa yhteenvetokorjauksia, jotka kattavat useita muutoksia kerralla, sen sijaan, että live-korjaustiedostot asettettaisiin vaiheittain tiukasti määritellyssä järjestyksessä, jota on melko vaikea ylläpitää. Kun aiemmin jokaisen myöhemmän muutoksen oli perustuttava funktion tilaan viimeisen muutoksen jälkeen, nyt on mahdollista levittää useita yhteen alkutilaan sidottuja muutoksia kerralla (eli ylläpitäjät voivat ylläpitää sen sijaan yhtä konsolidoitua korjaustiedostoa suhteessa perusytimeen toisistaan ​​riippuvien laastarien ketjusta );
    • Ilmoitettu vanhentunut tuki suoritettavalle a.out-tiedostomuodolle ja
      poistettu koodi ydintiedostojen luomiseen a.out-muodossa, joka on hylätty. A.out-muotoa ei ole käytetty Linux-järjestelmissä pitkään aikaan, ja nykyaikaiset työkalut eivät ole pitkään tukeneet a.out-tiedostojen luomista Linuxin oletuskokoonpanoissa. Lisäksi a.out-tiedostojen latausohjelma voidaan toteuttaa kokonaan käyttäjätilassa;

    • Mahdollisuus tunnistaa ja poistaa käyttämätön koodi on lisätty BPF-ohjelman varmennusmekanismiin. Ydin sisältää myös korjaustiedostoja, joissa on spinlock-tuki BPF-alijärjestelmälle, mikä tarjoaa lisäominaisuuksia BPF-ohjelmien rinnakkaissuorituksen hallintaan.
  • Оборудование
    • Nouveaun kuljettajassa lisätty Heterogeenisen muistinhallinnan tuki mahdollistaa CPU:n ja GPU:n pääsyn yhteisiin synkronoituihin muistialueisiin. Jaettu virtuaalimuistijärjestelmä (SVM, jaettu virtuaalimuisti) on toteutettu HMM (Heterogeneous memory management) -alijärjestelmän pohjalta, mikä mahdollistaa laitteiden käytön omilla muistinhallintayksiköillä (MMU, memory management unit), joihin pääsee käsiksi. päämuisti. Erityisesti HMM:n avulla voit järjestää GPU:n ja CPU:n välille jaetun osoitetilan, jossa GPU voi käyttää prosessin päämuistia. SVM-tuki on tällä hetkellä käytössä vain Pascal-perheen GPU:ille, vaikka tuki on myös Volta- ja Turing-grafiikkasuorittimille. Lisäksi Nouveaussa lisätty uusi ioctl ohjaamaan prosessimuistialueiden siirtymistä GPU-muistiin;
    • Intel DRM -ohjaimessa GPU Skylakelle ja uudemmille (gen9+) mukana Oletuksena pikakäynnistystila eliminoi tarpeettomat tilan muutokset käynnistyksen aikana. Lisätty новые laitetunnisteet, jotka perustuvat Coffelaken ja Ice Laken mikroarkkitehtuureihin. Coffelake-lastuille lisätty GVT-tuki (GPU-virtualisointi). Virtuaalisille GPU:ille toteutettu VFIO EDID -tuki. LCD-paneeleille MIPI/DSI lisätty tuki ACPI/PMIC-elementeille. Toteutettu uudet TV-tilat 1080p30/50/60 TV;
    • Lisätty tuki Vega10/20 BACO GPU:lle amdgpu-ohjaimeen. Otettiin käyttöön Vega 10/20 -virranhallinta- ja Vega 10 -jäähdyttimen ohjaustaulukot. Lisätty uudet PCI-laitetunnisteet Picasso-grafiikkasuorittimiin. lisättyä rajapinta aikataulutettavien riippuvuuksien hallintaan lukkiutumien välttämiseksi;
    • lisättyä DRM/KMS-ohjain näytön kiihdyttimille ARM Komeda (Mali D71);
    • Lisätty tuki Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 ja Kingdisplay kd097d04 näyttöpaneeleille;
    • Lisätty tuki Rockchip RK3328:lle, Cirrus Logic CS4341:lle ja CS35L36:lle, MediaTek MT6358:lle, Qualcomm WCD9335:lle ja Ingenic JZ4725B -äänikoodekkeille sekä Mediatek MT8183 -äänialustalle;
    • Lisätty tuki NAND-ohjaimille Flash STMicroelectronics FMC2, Amlogic Meson;
    • Lisätty kiihdytintuki Habana AI -laitteistojärjestelmille;
    • Lisätty tuki NXP ENETC gigabit Ethernet -ohjaimille ja MediaTek MT7603E (PCIe) ja MT76x8 langattomille liitännöille.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodostettu
вариант täysin ilmainen kernel 5.1 - Linux-vapaa 5.1-gnu, puhdistettu laiteohjelmistosta ja ajurielementeistä, jotka sisältävät ei-vapaita komponentteja tai koodiosia, joiden laajuutta valmistaja rajoittaa. Uudessa versiossa blob-lataus on poistettu käytöstä mt7603- ja goya-ajureissa. Päivitetty blob-puhdistuskoodi ohjaimissa ja alijärjestelmissä wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk ja touchscreen_dmi. Blob-puhdistus lantiq xrx200 firmware loaderissa on pysäytetty, koska se on poistettu ytimestä.

Lähde: opennet.ru

Lisää kommentti