Linuxi 5.14 kerneli väljalase

Pärast kahekuulist arendustööd esitles Linus Torvalds Linuxi kerneli 5.14 väljalaset. 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.

Peamised uuendused:

  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Cgruppide jaoks on juurutatud uus I/O prioritiseerimise kontroller, rq-qos, mis suudab juhtida iga cgrupi liikmete genereeritud seadmete blokeerimise päringute töötlemise prioriteeti. Mq-deadline I/O planeerijale on lisatud uus prioriteetse kontrolleri tugi.
    • Failisüsteem ext4 rakendab uut ioctl-käsku EXT4_IOC_CHECKPOINT, mis sunnib kõik ootel olevad tehingud ajakirjast ja nendega seotud puhvritest kettale loputama ning kirjutab üle ka salvestusruumis ajakirja kasutatava ala. Muudatus valmistati ette algatuse raames, mille eesmärk on vältida infolekkeid failisüsteemidest.
    • Btrfs-i jõudluse optimeerimine on tehtud: kaotades fsynci täitmise ajal laiendatud atribuutide tarbetu logimise, on laiendatud atribuutidega intensiivsete toimingute jõudlus kasvanud 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 on ümber kujundatud puhvri vahemälu juurutamine, mis on lülitatud mälulehtede eraldamisele pakkrežiimis. Parem vahemälu efektiivsus.
    • F2FS lisab võimaluse töötada kirjutuskaitstud režiimis ja rakendab tihendatud plokkvahemälu režiimi (compress_cache), et parandada juhusliku lugemise jõudlust. Rakendatud on tugi mällu vastendatud failide tihendamiseks toimingu mmap() abil. Maskil põhineva failide tihendamise valikuliseks keelamiseks on pakutud välja uus paigaldusvalik nocompress.
    • ExFAT-draiveris on tehtud tööd, et parandada ühilduvust mõne digitaalkaamera salvestusruumiga.
    • Lisatud on quotactl_fd() süsteemikutse, 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.
    • "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
    • Tööülesannete planeerija rakendab uut ajastamisrežiimi SCHED_CORE, mis võimaldab teil juhtida, milliseid protsesse saab ühes CPU tuumas koos käivitada. 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. .
    • cgroupi jaoks on juurutatud 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 võib iga protsess, mis on muutunud lõhestatud luku allikaks. on sunnitud katkestamise asemel 20 ms-ks peatuma.
    • cgroup ribalaiuse kontroller CFS (CFS ribalaiuse kontroller), mis määrab, kui palju protsessori aega saab igale cgroupile eraldada, rakendab ajaliselt piiratud piirangute määratlemise võimalust, mis võimaldab latentsustundlikke töökoormusi paremini reguleerida. Näiteks määrates cpu.cfs_quota_us väärtusele 50000 ja cpu.cfs_period_us väärtusele 100000, võimaldab protsesside rühm raisata 100 ms protsessori aega iga 50 ms järel.
    • Lisatud esialgne infrastruktuur BPF-i programmilaadurite loomiseks, mis võimaldab edaspidi laadida ainult usaldusväärse digitaalvõtmega allkirjastatud BPF-programme.
    • Lisatud on uus futex-operatsioon FUTEX_LOCK_PI2, mis kasutab monotoonset taimerit, et arvutada ajalõpp, mis võtab arvesse süsteemi unerežiimis veedetud aega.
    • RISC-V arhitektuuri jaoks on rakendatud suurte mälulehtede tugi (Transparent Huge-Pages) ja võimalus kasutada mäluga töötamisel vigade tuvastamiseks KFENCE mehhanismi.
    • Süsteemikutse madvise(), mis pakub vahendit protsessimälu haldamise optimeerimiseks, on lisanud lipud MADV_POPULATE_READ ja MADV_POPULATE_WRITE, et genereerida "lehetõrge" kõikidel mälulehtedel, mis on kaardistatud lugemis- või kirjutamistoiminguteks ilma tegelikku lugemist või kirjutamist tegemata (eelisväärtus ). Lippude kasutamine võib olla kasulik programmi täitmise viivituste vähendamiseks, kuna "lehetõrge" käitleja käivitatakse ennetavalt kõigi jaotamata lehtede jaoks korraga, ootamata neile tegelikku juurdepääsu.
    • Kuni ühiku testimise süsteem on lisanud toe testide käitamiseks QEMU keskkonnas.
    • Lisatud on uued jälgijad: "osnoise" katkestuste käitlemisest põhjustatud rakenduse viivituste jälgimiseks ja "timerlat", mis kuvab üksikasjalikku teavet viivituste kohta taimeri signaalist ärkamisel.
  • Virtualiseerimine ja turvalisus
    • Süsteemikutsung memfd_secret() on lisatud, et luua isoleeritud aadressiruumis privaatne mäluala, mis on nähtav ainult omanikuprotsessile, ei kajastu teistes protsessides ja ei ole kernelile otse juurdepääsetav.
    • Seccompi süsteemikõnede filtreerimissüsteemis on blokeerimiskäitlejate kasutajaruumi teisaldamisel võimalik ühe aatomioperatsiooni abil luua isoleeritud ülesande jaoks failideskriptor ja tagastada see süsteemikõne töötlemisel. Kavandatav operatsioon lahendab signaali saabudes kasutajaruumis oleva töötleja katkestamise probleemi.
    • Lisatud uus mehhanism ressursipiirangute 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, puhvri ületäitumisest, juurdepääsust enne lähtestamist ja kasutusest väljaspool praegust konteksti.
    • ARM64 platvormi osuti autentimise vahendeid 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 on lisanud toe PCI-seadmete draiverite kasutamiseks koos virtuaalse PCI siiniga, mida rakendab PCI-over-virtio draiver.
    • X86 süsteemide jaoks on lisatud virtio-iommu paravirtualiseeritud seadme tugi, 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 keelatud Zombieload rünnakute võimaluse tõttu, mis manipuleerivad teabelekkega kolmandate osapoolte kanalite kaudu, mis toimub TAA (TSX Asynchronous Abort) mehhanismi töötamise ajal.
  • Võrgu alamsüsteem
    • Integratsioon MPTCP (MultiPath TCP) tuuma, mis on TCP-protokolli laiendus TCP-ühenduse toimimise korraldamiseks koos pakettide samaaegse edastamisega mitmel marsruudil erinevate IP-aadressidega seotud erinevate võrguliideste kaudu. Uus versioon lisab mehhanismi 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 räsi arvutamisel, mis määrab paketi tee valik.
    • Virtio virtuaalsele transpordile on lisatud SOCK_SEQPACKET pesade tugi (korrastatud ja usaldusväärne datagrammide 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. . Uus versioon lisab tööriistad juhtimise ülekandmiseks teisele pistikupesale, kui algselt valitud pesa päringu töötlemisel ebaõnnestub (lahendab üksikute ühenduste katkemise probleemi teenuste taaskäivitamisel).
  • Оборудование
    • Amdgpu draiver toetab uut AMD Radeon RX 6000 seeriat GPU-sid, koodnimedega “Beige Goby” (Navi 24) ja “Yellow Carp”, samuti täiustatud tuge 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 ASPM (Active State Power Management) tugi, mis varem oli lubatud ainult Navi 1x, Vega ja Polarise GPU-de puhul.
    • AMD kiipidele on lisandunud HMM (Heterogeneous memory management) alamsüsteemi baasil jagatud virtuaalmälu (SVM, jagatud virtuaalmälu) tugi, mis võimaldab kasutada seadmeid, millel on oma mäluhaldusüksus (MMU, mäluhaldusüksus), mis pääseb juurde põhimällu. Eelkõige saate HMM-i abil korraldada GPU ja CPU vahel jagatud aadressiruumi, kus GPU pääseb juurde protsessi põhimällu.
    • Lisatud esialgne tugi AMD Smart Shift tehnoloogiale, mis muudab dünaamiliselt CPU ja GPU toiteseadeid AMD kiibistiku ja graafikakaardiga sülearvutites, et suurendada mängude, video redigeerimise ja 3D-renderdamise jõudlust.
    • Inteli graafikakaartide i915 draiver sisaldab Intel Alderlake P kiipide tuge.
    • Lisatud drm/hyperv draiver Hyper-V virtuaalse graafikaadapteri jaoks.
    • Lisati tugi Raspberry Pi 400 kõik-ühes arvutile.
    • Lisatud dell-wmi-privaatsusdraiver, et toetada Delli sülearvutites sisalduvaid riistvarakaamera ja mikrofoni lüliteid.
    • Lenovo sülearvutitele on lisatud WMI-liides BIOS-i sätete muutmiseks sysfs /sys/class/firmware-attributes/ kaudu.
    • Laiendatud tugi USB4 liidesega seadmetele.
    • Lisatud on AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 ja Texas Instruments TAS2505 helikaartide ja koodekite tugi. Täiustatud heli tugi HP ja ASUS sülearvutitel. Lisatud paigad, et vähendada viivitusi enne heli esitamist USB-seadmetes.

Allikas: opennet.ru

Lisa kommentaar