Linuxi 5.1 kerneli väljalase

Pärast kahekuulist arendustööd Linus Torvalds tutvustatud kerneli väljalase Linux 5.1. Märkimisväärsemate muudatuste hulgas: uus liides asünkroonse I/O io_uring jaoks, NVDIMM-i RAM-i kasutamise võimalus, Nouveau jagatud virtuaalmälu tugi, väga suurte failisüsteemide skaleeritava jälgimise tugi fanotify kaudu, Zstd tihendamise konfigureerimise võimalus tasemed Btrfs-is, uus cpuidle TEO-käsitleja, süsteemikutsete juurutamine 2038 probleemi lahendamiseks, ilma initramfsita seadme-mapper seadmetelt alglaadimise võimalus, SafeSetID LSM moodul, kombineeritud reaalajas paikade tugi.

Kõik uuendused:

  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Rakendatud uus liides asünkroonse I/O jaoks - io_uring, mis on tähelepanuväärne oma I/O pollimise toe ja võimalusega töötada puhverdamisega või ilma. Tuletame meelde, et varem pakutud asünkroonne I/O mehhanism “aio” ei toetanud puhverdatud I/O-d, sai töötada ainult O_DIRECT režiimis (ilma puhverdamata ja vahemälust möödahiilimata), tal oli probleeme lukustamisega metaandmete saadavuse ootamise tõttu ja avaldas suuri üldkulusid andmete mällu kopeerimise tõttu.

      API piires
      io_uringi arendajad püüdsid vana aio liidese puudusi kõrvaldada. Kõrval tootlikkus io_uring on väga lähedal SPDK ja on libaiost märkimisväärselt ees, kui küsitlus on lubatud. Teek on ette valmistatud io_uring kasutamiseks kasutajaruumis töötavates lõpprakendustes vabastav, mis pakub kerneli liidese kaudu kõrgetasemelist raamistikku;

    • FS-i sündmuse jälgimise mehhanismis fanotify() lisatud superplokkide ja struktuurimuutuste olukordade jälgimise tugi dirent (kataloogide loomise, kustutamise ja teisaldamise sündmused). Esitatud funktsioonid aitavad lahendada mastaapsuse probleeme, mis tekivad väga suurtes failisüsteemides inotify mehhanismi abil rekursiivse muutuste jälgimise loomisel (sellega oli varasemaid muudatusi võimalik jälgida ainult inotify kaudu, kuid
      jõudlus suurte pesastatud kataloogide rekursiivse jälgimise tingimustes jättis palju soovida). Nüüd saab sellist jälgimist tõhusalt teha läbi fanotify;

    • Btrfs-failisüsteemis lisatud võimalus kohandada zstd-algoritmi tihendustaset, mida võib pidada optimaalseks kompromissiks kiire, kuid ebaefektiivse lz4 ja aeglase, kuid hea tihendamise xz vahel. Analoogiliselt sellega, kuidas varem oli zlib-i kasutamisel võimalik määrata tihendustaset, on zstd jaoks lisatud ühendusvaliku “-o compress=zstd:level” tugi. Testimise ajal tagas minimaalne esimene tase andmete tihendamise 2.658 korda tihenduskiirusega 438.47 MB/s, lahtipakkimiskiirusega 910.51 MB/s ja mälutarbimisega 780 MB ning maksimaalne tase 15 andis 3.126 korda, kuid tihendusega. kiirus 37.30 MB/s lahtipakkimisel 878.84 MB/s ja mälukulu 2547 MB;
    • Lisatud võimalus käivitada failisüsteemist, mis asub seadme kaardistamise seadmes, ilma initramfsi kasutamata. Alates praegusest kerneli väljalasest saab seadme kaardistaja seadmeid alglaadimise ajal otse kasutada, näiteks juurfailisüsteemi partitsioonina. Partitsioon konfigureeritakse alglaadimisparameetri "dm-mod.create" abil. Laadimiseks lubatud seadme-kaardistusmoodulite hulka kuuluvad: "krüpt", "viivitus", "lineaarne", "hetktõmmise päritolu" ja "tõesus";
    • Flash-draividele orienteeritud F2FS-failisüsteemile on lisatud lipp F2FS_NOCOW_FL, mis võimaldab antud faili puhul keelata kopeerimise-kirjutamisel režiimi;
    • Kernelist eemaldati failisüsteem Exofs, mis on ext2 variant, mis on kohandatud OSD (objektipõhise salvestusseadme) objektimäludega töötamiseks. Samuti on eemaldatud selliste objektide salvestusseadmete SCSI-protokolli tugi;
  • Virtualiseerimine ja turvalisus
    • Prctl()-le on lisatud suvand PR_SPEC_DISABLE_NOEXEC, et juhtida valitud protsessi juhiste spekulatiivset täitmist. Uus suvand võimaldab teil valikuliselt keelata spekulatiivse täitmise protsesside puhul, mida Spectre rünnak võib rünnata. Lukk kestab kuni exec();
    • Rakendatud LSM moodul SafeSetID, mis võimaldab süsteemiteenustel kasutajaid turvaliselt hallata ilma õiguste suurendamiseta (CAP_SETUID) ja juurõigusi omandamata. Privileegid määratakse reeglite määratlemisega securityfsis kehtivate sidumiste valgel nimekirjal (kujul “UID1:UID2”);
    • Lisatud madalatasemelised muudatused, mis on vajalikud turvamoodulite (LSM) virnapõhiseks laadimiseks. Tutvustas kerneli alglaadimisvalikut "lsm", mis kontrollib, millised moodulid laaditakse ja millises järjekorras;
    • Auditi alamsüsteemi on lisatud failinimeruumide tugi;
    • Laiendatud GCC plugina structleak võimalused, mis võimaldab blokeerida võimalikke mälusisu lekkeid.Koodis kasutatavate muutujate initsialiseerimine pinu viitejuurdepääsu kaudu on ette nähtud;
  • Võrgu alamsüsteem
    • Pistikupesade jaoks rakendatud uus valik "SO_BINDTOIFINDEX" sarnaneb
      "SO_BINDTODEVICE", kuid võttes argumendina liidese nime asemel võrguliidese indeksi numbri;

    • Mac80211 pinu on lisanud võimaluse määrata ühele seadmele mitu BSSID-d (MAC-aadressi). Osana WiFi jõudluse optimeerimise projektist on mac80211 pinu lisanud eetriaja arvestuse ja võimaluse jagada eetriaega mitme jaama vahel (pöörduspunkti režiimis töötamisel eraldatakse aeglastele traadita jaamadele vähem edastusaega, selle asemel, et jagada aega ühtlaselt kõigi vahel jaamad);
    • Lisatud mehhanism "devlinki tervis", mis annab teateid võrguliidese probleemide ilmnemisel;
  • Mälu- ja süsteemiteenused
    • Rakendatud turvaline signaali edastamine, mis võimaldab PID-i taaskasutamist. Näiteks võib varem killu kutsumisel tekkida olukord, kus kohe pärast signaali saatmist võib siht-PID protsessi lõpetamise tõttu vabaneda ja teise protsessi poolt hõivata ning signaal jõuaks lõpuks edasi teisele protsessile. Selliste olukordade kõrvaldamiseks on lisatud uus süsteemikutse pidfd_send_signal, mis kasutab protsesside stabiilse sidumise tagamiseks failideskriptoreid /proc/pid. Isegi kui PID-d kasutatakse süsteemikõne töötlemise ajal uuesti, faili deskriptor ei muutu ja seda saab protsessile signaali saatmiseks ohutult kasutada;
    • Lisatud võimalus kasutada püsimäluseadmeid (näiteks püsimälu NVDIMM-id) RAM-ina. Kui seni toetas kernel selliseid seadmeid salvestusseadmetena, siis nüüd saab neid kasutada ka lisamäluna. Seda funktsiooni rakendatakse vastusena nende kasutajate soovidele, kes on nõus jõudluse viivitusega leppima ja soovivad kasutada natiivset Linuxi kerneli mäluhalduse API-d, selle asemel, et kasutada olemasolevaid kasutajaruumi mälujaotussüsteeme, mis töötavad daxi jaoks mmap-i peal. fail;
    • Lisatud on uus protsessori tühikäigukäsitleja (cpuidle, otsustab, millal saab protsessori sügavatesse energiasäästurežiimidesse panna; mida sügavam on režiim, seda suurem on sääst, aga ka seda kauem kulub režiimist väljumiseks) - TEO (taimer sündmustele orienteeritud juht ). Seni on pakutud kahte cpuidle-käitlejat - "menüü" ja "redel", mis erinevad heuristika poolest. "Menüü" käsitlejal on teadaolevalt probleeme heuristiliste otsuste tegemisel, mille kõrvaldamiseks otsustati ette valmistada uus käitleja. TEO on positsioneeritud "menüü" käitleja alternatiivina, võimaldades suuremat jõudlust, säilitades samal ajal energiatarbimise.
      Uue käitleja saab aktiveerida alglaadimisparameetriga “cpuidle.governor=teo”;

    • Osana tööst kõrvaldada 2038. aasta probleemid, mis on põhjustatud 32-bitise time_t tüüpi ülevoolust, sisaldab süsteemikutseid, mis pakuvad 32-bitiste arhitektuuride jaoks 64-bitiseid ajaloendureid. Selle tulemusena saab 64-bitist time_t struktuuri nüüd kasutada kõigis arhitektuurides. Sarnased muudatused on tehtud ka valikute võrgu alamsüsteemis ajatempel võrgupistikupesad;
    • Südamiku kuuma paikamise süsteemi (reaalajas paikamine) lisatud Funktsioon "Atomic Replace" muudatuste seeria aatomiliseks rakendamiseks ühele funktsioonile. See funktsioon võimaldab levitada kokkuvõtlikke plaastreid, mis hõlmavad mitut muudatust korraga, selle asemel, et rakendada reaalajas paikade järkjärgulist rakendamist rangelt määratletud järjekorras, mida on üsna raske hooldada. Kui varem pidi iga järgnev muudatus põhinema funktsiooni olekul pärast viimast muudatust, siis nüüd on võimalik levitada mitut ühe algolekuga seotud muudatust korraga (st hooldajad saavad selle asemel baastuuma suhtes säilitada ühte konsolideeritud plaastrit üksteisest sõltuvate plaastrite ahelast );
    • Välja kuulutatud täitmisfailivormingu a.out aegunud tugi ja
      kustutatud kood põhifailide genereerimiseks a.out-vormingus, mis on mahajäetud olekus. A.out-vormingut pole Linuxi süsteemides pikka aega kasutatud ja a.out-failide genereerimist pole Linuxi vaikekonfiguratsioonide kaasaegsed tööriistad pikka aega toetanud. Lisaks saab a.out-failide laadijat rakendada täielikult kasutajaruumis;

    • BPF-i programmi kontrollimise mehhanismile on lisatud kasutamata koodi tuvastamise ja eemaldamise võimalus. Tuum sisaldab ka BPF-i alamsüsteemi spinlocki toega plaastreid, mis pakuvad lisavõimalusi BPF-programmide paralleelse täitmise haldamiseks;
  • Оборудование
    • In Nouveau juht lisatud heterogeense mäluhalduse tugi, mis võimaldab CPU-l ja GPU-l juurdepääsu tavalistele sünkroniseeritud mälupiirkondadele. Jagatud virtuaalmälu süsteem (SVM, jagatud virtuaalmälu) on realiseeritud alamsüsteemi HMM (Heterogeneous memory management) baasil, mis võimaldab kasutada seadmeid, millel on oma mäluhaldusüksus (MMU, mäluhaldusüksus), millele pääseb ligi. põhimälu. Eelkõige saate HMM-i abil korraldada GPU ja CPU vahel jagatud aadressiruumi, kus GPU pääseb juurde protsessi põhimällu. SVM-i tugi on praegu lubatud ainult Pascali perekonna GPU-de jaoks, kuigi toetust pakutakse ka Volta ja Turingi GPU-dele. Pealegi Nouveau's lisatud uus ioctl protsessimälu alade migratsiooni GPU mällu juhtimiseks;
    • Inteli DRM-i draiveris GPU Skylake'i ja uuemate (gen9+) jaoks sisse lülitatud Vaikimisi välistab kiirkäivitusrežiim käivitamise ajal mittevajalikud režiimimuudatused. Lisatud новые Coffelake'i ja Ice Lake'i mikroarhitektuuridel põhinevad seadme identifikaatorid. Coffelake krõpsude jaoks lisatud GVT tugi (GPU virtualiseerimine). Virtuaalsete GPU-de jaoks rakendatud VFIO EDID tugi. LCD paneelidele MIPI/DSI lisatud ACPI/PMIC elementide tugi. Rakendatud uued telerirežiimid 1080p30/50/60 teler;
    • Amdgpu draiverile on lisatud Vega10/20 BACO GPU tugi. Rakendatud on Vega 10/20 toitehalduse ja Vega 10 jahutite juhtimistabelid. Lisatud on Picasso GPU-de jaoks uued PCI-seadmete identifikaatorid. Lisatud liides ajastatud sõltuvuste haldamiseks, et vältida ummikuid;
    • Lisatud DRM/KMS-draiver ekraanikiirendite jaoks ARM Komeda (Mali D71);
    • Lisatud Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 ja Kingdisplay kd097d04 ekraanipaneelide tugi;
    • Lisatud tugi Rockchip RK3328, Cirrus Logic CS4341 ja CS35L36, MediaTek MT6358, Qualcomm WCD9335 ja Ingenic JZ4725B helikodekitele, samuti Mediatek MT8183 heliplatvormile;
    • Lisatud tugi NAND-kontrolleritele Flash STMicroelectronics FMC2, Amlogic Meson;
    • Lisatud kiirendi tugi Habana AI riistvarasüsteemidele;
    • Lisatud on tugi NXP ENETC gigabit Etherneti kontrolleritele ning MediaTek MT7603E (PCIe) ja MT76x8 traadita liidestele.

Samal ajal Ladina-Ameerika Vaba Tarkvara Fond moodustatud
võimalus täiesti tasuta kernel 5.1 - Linuxi vaba 5.1-gnu, puhastatud püsivarast ja draiverielementidest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatust piirab tootja. Uues versioonis on mt7603 ja goya draiverites blobide laadimine keelatud. Värskendatud blob-puhastuskood draiverites ja alamsüsteemides wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk ja touchscreen_dmi. Plekkide puhastamine lantiq xrx200 püsivara laadijas on peatatud selle eemaldamise tõttu tuumast.

Allikas: opennet.ru

Lisa kommentaar