Linuxi tuum 5.14

Linuxi tuum 5.14

Pärast kahekuulist arendustööd Linus Torvalds tutvustatud kerneli väljalase Linux 5.14. Märkimisväärsemate muudatuste hulgas: uued quotactl_fd() ja memfd_secret() süsteemikutsed, ide- ja toordraiverite eemaldamine, uus I/O prioriteedikontroller cgroupi jaoks, SCHED_CORE ülesannete ajastamise režiim, infrastruktuur kontrollitud BPF-i programmilaadurite loomiseks.

Uus versioon sisaldab 15883 2002 parandust 69 arendajalt, paiga suurus on 12580 MB (muudatused puudutasid 861501 321654 faili, lisati 47 5.14 koodirida, 14 13 rida kustutati). Ligikaudu 3% kõigist versioonis 3 tehtud muudatustest on seotud seadme draiveritega, umbes XNUMX% muudatustest on seotud riistvaraarhitektuurile omase koodi värskendamisega, XNUMX% on seotud võrgupinuga, XNUMX% on seotud failisüsteemidega ja XNUMX% on seotud sisemiste tuuma alamsüsteemidega.

Kõik uuendused:

  • ketta alamsüsteem, sisend/väljund ja failisüsteemid:
    • cgroupi jaoks rakendatud uus I/O prioriteedikontroller – rq-qos, mis suudab juhtida iga cgrupi liikmete poolt genereeritud seadmete blokeerimise päringute töötlemise prioriteeti. Mq-deadline I/O planeerijale on lisatud uus prioriteetse kontrolleri tugi;
    • ext4 failisüsteemis rakendatud uus ioctl käsk EXT4_IOC_CHECKPOINT, mis sunnib kõik pooleliolevad tehingud logist ja seotud puhvritest kettale ning kirjutab üle ka logimälu kasutatava ala. Muudatus valmistati ette algatuse raames, mille eesmärk on vältida infolekkeid failisüsteemidest;
    • in Btrfs kasutusele võetud Jõudluse optimeerimine: kõrvaldades fsynci täitmise ajal laiendatud atribuutide tarbetu logimise, suurenes laiendatud atribuutidega intensiivsete toimingute jõudlus kuni 17%. Lisaks keelatakse ulatust mittemõjutavate kärpimistoimingute tegemisel täielik sünkroonimine, mis vähendas tööaega 12%. Süsteemile sysf on lisatud säte, mis piirab FS-i kontrollimisel I/O ribalaiust. Lisatud ioctl-kõned seadme suuruse muutmise ja kustutamise tühistamiseks;
    • XFS-is ümber töödeldud puhvervahemälu rakendamine, mis kantakse üle pakkrežiimis mälulehtede eraldamisele. Parem vahemälu efektiivsus;
    • F2FS lisas võimaluse töötada kirjutuskaitstud režiimis ja rakendas juhusliku lugemise jõudluse parandamiseks tihendatud plokkide vahemällu salvestamise režiimi (compress_cache). Rakendatud on tugi mällu vastendatud failide tihendamiseks toimingu mmap() abil. Failide tihendamise valikuliseks keelamiseks maskiga on pakutud välja uus ühendamisvalik nocompress;
    • exFAT draiveris on tehtud tööd, et parandada ühilduvust mõne digikaamera salvestusruumiga;
    • lisatud süsteemikõne quotactl_fd(), mis võimaldab hallata kvoote mitte spetsiaalse seadmefaili kaudu, vaid määrates failisüsteemiga seotud failideskriptori, mille jaoks kvooti rakendatakse;
    • IDE-liidesega plokkseadmete vanad draiverid on kernelist eemaldatud; need on pikka aega asendatud libata alamsüsteemiga. Vanade seadmete tugi on säilinud täies mahus, muudatused puudutavad vaid võimalust kasutada vanu draivereid, mille kasutamisel kandsid kettad nimeks /dev/hd*, mitte aga /dev/sd*;
    • "Toores" draiver on kernelist eemaldatud, pakkudes puhverdamata juurdepääsu blokeerimisseadmetele liidese /dev/raw kaudu. Seda funktsiooni on pikka aega rakendatud rakendustes, mis kasutavad lippu O_DIRECT;
  • mälu- ja süsteemiteenused:
    • ülesannete planeerijas on rakendatud uus ajastamisrežiim SCHED_CORE, mis võimaldab juhtida, millised protsessid võivad ühes ja samas CPU tuumas koos töötada. Igale protsessile saab määrata küpsise identifikaatori, mis määrab protsessidevahelise usalduse ulatuse (näiteks kuulumine samale kasutajale või konteinerile). Koodi täitmise korraldamisel saab planeerija tagada, et ühte CPU tuuma jagatakse ainult sama omanikuga seotud protsesside vahel, mida saab kasutada mõne Spectre rünnaku blokeerimiseks, takistades usaldusväärsete ja ebausaldusväärsete ülesannete töötamist samal SMT (Hyper Threading) lõimel. ;
    • cgroup mehhanismi jaoks on realiseeritud tapmisoperatsiooni tugi, mis võimaldab tappa kõik grupiga seotud protsessid korraga (saata SIGKILL), kirjutades virtuaalsesse faili cgroup.kill “1”;
    • laiendatud võimalused, mis on seotud reageerimisega jagatud lukkude ("lõigatud lukud") tuvastamisele, mis ilmnevad mälus joondamata andmetele juurdepääsul, kuna aatomikäsu täitmisel läbivad andmed kaks protsessori vahemälu rida. Selline blokeerimine toob kaasa jõudluse olulise languse, mistõttu oli varem võimalik blokeeringu põhjustanud rakendus jõuga lõpetada. Uus väljalase lisab kerneli käsurea parameetri "split_lock_detect=ratelimit:N", mis võimaldab määrata süsteemiülese piirangu lukustustoimingute kiirusele sekundis, mille ületamist katkestavad kõik protsessid, mis said lõhestatud luku allikaks. olema sunnitud lõpetamise asemel 20 ms-ks peatuma;
    • cgroup ribalaiuse kontroller CFS (CFS ribalaiuse kontroller), mis määrab, kui palju protsessori aega saab igale cgroupile eraldada, on võimeline määratlema piiranguid, mis on piiratud etteantud kestusega, mis võimaldab latentsustundlikke koormusi paremini reguleerida. Näiteks kui määrate cpu.cfs_quota_us väärtusele 50000 ja cpu.cfs_period_us väärtusele 100000, võimaldab protsesside rühm raisata 100 ms CPU aega iga 50 ms järel;
    • lisatud esialgne infrastruktuur BPF-i programmilaadurite loomiseks, mis võimaldab edaspidi alla laadida ainult usaldusväärse digitaalvõtmega allkirjastatud BPF-programme;
    • lisas uue futex-operatsiooni FUTEX_LOCK_PI2, mis kasutab ajalõpu arvutamiseks monotoonset taimerit, mis võtab arvesse süsteemi unerežiimis viibimise aega;
    • RISC-V arhitektuuri jaoks suurte mälulehtede tugi (Transparent Huge-Pages) ja võimalus kasutada KAIRA tuvastada vigu mäluga töötamisel;
    • madvise() süsteemikutsesse, mis pakub vahendit protsessimälu haldamise optimeerimiseks, lisatud MADV_POPULATE_READ ja MADV_POPULATE_WRITE lipud, et genereerida "lehetõrge" kõigil lugemis- või kirjutamistoiminguteks kaardistatud mälulehtedel, ilma tegelikku lugemist või kirjutamist tegemata (eelseade). Lippude kasutamine võib osutuda kasulikuks programmi täitmise viivituste vähendamiseks tänu lehe vea töötleja ennetavale täitmisele kõigi jaotamata lehtede jaoks korraga, ootamata neile tegelikku juurdepääsu;
    • ühiku testimise süsteemis kunit lisatud QEMU keskkonnas testide käivitamise tugi;
    • lisatud uued jäljendid: "osnoise" katkestuste käitlemisest põhjustatud rakenduse viivituste jälgimiseks ja " timerlat " üksikasjaliku teabe kuvamiseks viivituste kohta taimeri signaalist ärkamisel;
  • virtualiseerimine ja turvalisus:
    • lisatud süsteemikõne memfd_secret(), mis võimaldab luua isoleeritud aadressiruumis privaatset mäluala, mis on nähtav ainult omaniku protsessile, ei kajastu teistes protsessides ja ei ole kernelile otse juurdepääsetav;
    • seccompi süsteemikõnede filtreerimise süsteemis on lukukäsitlejate kasutajaruumi teisaldamisel võimalik ühe aatomioperatsiooniga luua isoleeritud ülesande jaoks failideskriptor ja tagastada see süsteemikõne töötlemisel. Kavandatud toiming lahendab probleem käitleja katkestusega kasutajaruumis signaali saabumisel;
    • lisatud uus mehhanism ressursipiirangu haldamiseks kasutaja ID nimeruumis, mis seob individuaalsed rlimit loendurid kasutajaga "kasutaja nimeruumis". Muudatus lahendab tavaliste ressursiloendurite kasutamise probleemi, kui üks kasutaja käivitab protsesse erinevates konteinerites;
    • ARM64 süsteemide KVM-i hüperviisor on lisanud võimaluse kasutada külalissüsteemides MTE (MemTag, Memory Tagging Extension) laiendust, mis võimaldab siduda silte iga mälu eraldamise toiminguga ja korraldada osutite õige kasutamise kontrollimist, et blokeerida haavatavused, mis on põhjustatud juurdepääsust juba vabastatud mäluplokkidele, puhvrite ületäitumisest, juurdepääsust enne lähtestamist ja kasutusest väljaspool praegust konteksti;
    • ARM64 platvormi pakutavat kursori autentimist saab nüüd kerneli ja kasutajaruumi jaoks eraldi konfigureerida. Tehnoloogia võimaldab teil kasutada spetsiaalseid ARM64 juhiseid tagastusaadresside kontrollimiseks, kasutades digitaalallkirju, mis on salvestatud kursori enda kasutamata ülemistesse bittidesse;
    • kasutajarežiimis Linux lisatud virtuaalse PCI siiniga PCI-seadmete draiverite kasutamise tugi, mida rakendab PCI-over-virtio draiver;
    • x86 süsteemide jaoks on lisatud tugi virtio-iommu paravirtualiseeritud seadmele, mis võimaldab saata IOMMU päringuid, nagu ATTACH, DETACH, MAP ja UNMAP, virtio transpordi kaudu ilma mälulehtede tabeleid emuleerimata;
    • Inteli protsessorite puhul Skylake'i perekonnast Coffee Lake'ini on vaikimisi keelatud Intel TSX (Transactional Synchronization Extensions) kasutamine, mis pakub tööriistu mitme lõimega rakenduste jõudluse parandamiseks, kõrvaldades dünaamiliselt mittevajalikud sünkroonimistoimingud. Laiendused on rünnakute võimaluse tõttu keelatud Zombieload, manipuleerides teabe lekkega kolmandate osapoolte kanalite kaudu, mis toimub toimingute asünkroonse katkestamise mehhanismi (TAA, TSX Asynchronous Abort) töötamise ajal;
  • võrgu alamsüsteem:
    • jätkuv integreerimine MPTCP (MultiPath TCP) tuuma, mis on TCP-protokolli laiendus TCP-ühenduse toimimise korraldamiseks koos pakettide üheaegse edastamisega mitmel marsruudil erinevate IP-aadressidega seotud erinevate võrguliideste kaudu. Uues numbris lisatud mehhanism IPv4 ja IPv6 jaoks oma liikluse räsipoliitika määramiseks (mitme teega räsipoliitika), mis võimaldab kasutajaruumist määrata, milliseid pakette, sealhulgas kapseldatud välju, kasutatakse tee valiku määrava räsi arvutamisel paketi jaoks;
    • virtuaalsele transpordi virtiole on lisatud pistikupesa tugi SOCK_SEQPACKET (datagrammide korrapärane ja usaldusväärne edastamine);
    • Laiendatud on SO_REUSEPORT pesamehhanismi võimalusi, mis võimaldab ühe pordiga korraga ühenduda mitmel kuulamispesal, et vastu võtta ühendusi sissetulevate päringute jaotusega samaaegselt kõigi SO_REUSEPORT kaudu ühendatud pesade vahel, mis lihtsustab mitme lõimega serverirakenduste loomist. . Uues versioonis lisatud vahendid juhtimise ülekandmiseks teisele pistikupesale, kui algselt valitud pesa päringu töötlemisel ebaõnnestub (lahendab üksikute ühenduste katkemise probleemi teenuste taaskäivitamisel);
  • varustus:
    • amdgpu draiveris rakendatud uute AMD Radeon RX 6000 seeria GPU-de tugi, koodnimedega “Beige Goby” (Navi 24) ja “Yellow Carp”, samuti täiustatud tugi Aldebarani GPU-le (gfx90a) ja Van Goghi APU-le. Lisatud võimalus töötada samaaegselt mitme eDP-paneeliga. APU Renoiri jaoks on rakendatud videomälus krüpteeritud puhvritega töötamise tugi (TMZ, Trusted Memory Zone). Lisatud on kuumalt lahtiühendatavate graafikakaartide tugi. Radeon RX 6000 (Navi 2x) GPU-de ja vanemate AMD GPU-de puhul on vaikimisi lubatud energiasäästumehhanismi ASPM (Active State Power Management) tugi, mis varem oli lubatud ainult Navi 1x, Vega ja Polarise GPU-de puhul;
    • AMD kiipidele on lisatud HMM (heterogeense mäluhalduse) alamsüsteemi baasil jagatud virtuaalmälu (SVM, jagatud virtuaalmälu) tugi, mis võimaldab kasutada seadmeid, millel on oma mäluhaldusmoodulid (MMU, mäluhaldusüksus), mis pääseb juurde põhimällu. Kaasa arvatud HMM-i abil saate korraldada GPU ja CPU vahel jagatud aadressiruumi, milles GPU pääseb juurde protsessi põhimällu;
    • lisatud esialgne tehnoloogiline tugi AMD Smart Shift, mis muudab dünaamiliselt kiibistiku ja AMD graafikakaardiga sülearvutite protsessori ja graafikaprotsessori energiatarbimise parameetreid, et suurendada jõudlust mängude, videotöötluse ja 3D-renderdamise ajal;
    • Inteli videokaartide i915 draiveris kaasa arvatud Intel Alderlake P kiipide tugi;
    • lisatud drm/hyperv draiver Hyper-V virtuaalse graafikaadapteri jaoks;
    • lisatud simpledrm graafikadraiver, mis kasutab väljundiks UEFI püsivara või BIOS-i pakutavat EFI-GOP või VESA kaadripuhvrit. Draiveri põhieesmärk on pakkuda alglaadimise algfaasis graafilisi väljundvõimalusi, enne kui saab kasutada täielikku DRM-draiverit. Draiverit saab kasutada ka ajutise lahendusena seadmete jaoks, millel pole veel DRM-i natiivseid draivereid;
    • lisatud kõik-ühes arvuti tugi Raspberry Pi 400;
    • Lisatud dell-wmi-privaatsusdraiver, et toetada Delli sülearvutites sisalduvaid kaamera ja mikrofoni riistvaralüliteid;
    • Lenovo sülearvutite jaoks lisatud WMI liides BIOS-i parameetrite muutmiseks läbi sysfs /sys/class/firmware-attributes/;
    • laiendatud USB4 liidesega seadmete tugi;
    • lisatud helikaartide ja koodekite tugi AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 ja Texas Instruments TAS2505. Täiustatud heli tugi HP ja ASUS sülearvutitel. Lisatud paigad, et vähendada viivitusi enne heli esitamist USB-liidesega seadmetes.

Allikas – opennet.ru.

Allikas: linux.org.ru