Pärast kahte kuud arendusteline Linus Torvalds esitles tuumade väljaanne Linux 5.14. Oluliste muudatuste hulka kuuluvad uued süsteemikutsed quotactl_fd() ja memfd_secret(), ide- ja raw-draiverite eemaldamine, uusi cgroupide sisend-/väljundprioriteetide kontroller, SCHED_CORE ülesande ajastamise režiim, infrastruktuur kinnitatud BPF-programmide laadijate loomiseks.
Uude versiooni on lisatud 15883 parandust 2002 arendajalt, paigaldusfail on suurusega 69 MB (muudatused hõlmavad 12580 faili, lisatud on 861501 koodirida, kustutatud 321654 rida). Umbes 47% kõigist 5.14 muudatustest on seotud seadmedraiveritega, umbes 14% muudatustest puudutavad riistvaraarhitektuuriga spetsiifilise koodi uuendamist, 13% on seotud võrgu alamsüsteemiga, 3% -ga failisüsteemide ja 3% tuuma sisemiste alamsüsteemidega.
- ketta alamsüsteem, sisend-väljund ja failisüsteemid:
- cgroupide jaoks rakendatud uus sisend-/väljundprioriteedi kontroller — rq-qos, mis suudab hallata blokiseadmete päringute töötlemise prioriteeti, mille genereerivad iga cgroupi liikmed. Uue prioriteedikontrolleri tugi on lisatud mq-deadline sisend-/väljundajastusse;
- failisüsteemis ext4 on rakendatud uue ioctl-käsk EXT4_IOC_CHECKPOINT, mis sunnib kõik ootel tehingud ajaloost ja nendega seotud puhverdused kettale kirjutama, samuti kirjutab ümber ajaloos kasutatava ala salvestusse. Muudatus on valmistatud ette teabe lekkimise ennetamise algatuse raames failisüsteemidest;
- Btrfs-s; tehtud tulemuste optimeerimine: liigsest ajaloost erandite tegemise tõttu suurenes intensiivsete operatsioonide jõudlus laiendatud atribuutide osas kuni 17%. Lisaks on lõikamisoperatsioonide käigus, mis ei hõlma ulatusi, täieliku sünkroniseerimise teostamine keelatud, mis vähendab operatsiooni kestust 12%. Sysfs-s on lisatud seadistus, et piirata I/O läbilaskevõimet failisüsteemi kontrollimisel. Lisatud on ioctl-kutsed suuruse muutmise ja seadme kustutamise operatsioonide tühistamiseks;
- XFS-s; ülesanne on ümber töötatud; puhvri vahemälu rakendamine, mis on muudetud lehekülgede mällu määratlemise partii-režiimile. Vahemälu töö efektiivsust on parandatud;
- F2FS-is on lisatud võimalus töötada ainult lugemisrežiimis ja implementatsiooni on teostatav kompressitud plokkide vahemälu režiim (compress_cache), et parandada juhusliku lugemise jõudlust. Toetatakse faili kompressiooni, mis peegeldatakse mälus mmap() operatsiooni abil. Failide kompressiooni valikulise keelamiseks maski abil on pakutud uus montaaži valik nocompress;
- exFAT draiveris on tehtud tööd teatud digikaamerate salvestuslahendustega ühilduvuse parandamiseks;
- lisatud süsteemi kõne quotactl_fd(), mis võimaldab hallata kvoote, mitte läbi spetsiaalse seadme faili, vaid määrates faili deskriptor, mis on seotud failisüsteemiga, millele kvoot rakendub;
- tuumast on eemaldatud vanad IDE-liidese plokkseadmestiku draiverid, mille asemel on juba ammu kasutusele võetud libata alamsüsteem. Vanade seadmete tugi on täielikult säilinud, muudatused puudutavad ainult võimalust kasutada vanu draivereid, mille kasutamisel nimetati salvestusseadmeid /dev/hd*, mitte /dev/sd*;
- Tuuma on eemaldatud draiver «raw», mis pakub vahemäluta juurdepääsu plokkseadmetele liidese kaudu /dev/raw. See funktsionaalsus on juba pikka aega rakendustes realiseeritud O_DIRECT lipuga;
- mälu ja süsteemiteenused:
- ülesande ajakava halduses on rakendatud uus ajakava režiim SCHED_CORE, mis võimaldab kontrollida, millised protsessid saavad ühel CPU tuumal samaaegselt töötada. Iga protsessile võib määrata küpsise identifikaatori, mis määratleb usalduspiirkonna protsesside vahel (näiteks kuuluvus ühele kasutajale või konteinerile). Koodi täitmise korral suudab ajakava haldur tagada sama tuuma CPU jagamise ainult ühe omaniku protsesside vahel, mis võib aidata blokeerida teatud Spectre klassi rünnakuid, takistades usaldusväärset ja usaldusväärset tööd samas SMT (Hyper Threading) lõimes;
- cgroup mehhanismi jaoks on rakendatud kill operatsiooni toetamine, mis võimaldab koheselt lõpetada kõik gruppi seotud protsessid (saata SIGKILL), kirjutades virtuaalsesse faili cgroup.kill «1»;
- on tõhustatud võimalused, mis on seotud jagatud lukustuste („split lock“) tuvastamise reageerimisega, mis tekivad juurdepääsul joondamata andmetele mälus, kuna aatomitõsise käsu täitmisel andmed ristavad kaks CPU vahemälu rida. Sellised lukustused põhjustavad märkimisväärset jõudluse vähenemist, seetõttu anti varasemates versioonides võimalus tõrkunud rakenduse sunniviisiliseks sulgemiseks, mis põhjustas lukustuse. Uues väljaandes on lisatud kernel'i käsurea parameeter „split_lock_detect=ratelimit:N“, mis võimaldab määrata süsteemiülese lukustuste intensiivsuse limiidi sekundis, mille ületamisel peatatakse iga protsess, mis on saanud jagatud lukustuse allikaks, 20 ms jooksul, mitte ei lõpetata.
- CFS (CFS bandwidth controller) cgroup-kontrolleris, mis määrab, kui palju protsessor aega saab iga cgroup, on rakendatud limiitide määramise võimalus, mis on piiratud antud kehtivusajaga, võimaldades paremini reguleerida viivitustundlikke koormusi. Näiteks, kui seadistada cpu.cfs_quota_us väärtuseks 50000 ja cpu.cfs_period_us väärtuseks 100000, saavad protsessigrupp iga 100 ms jooksul kasutada 50 ms CPU aega;
- on lisatud algne infrastruktuur BPF programmide laadijate loomiseks, mis võimaldab tulevikus laadida ainult usaldusväärse digitaalse võtmega allkirjastatud BPF programme;
- uue futex-operatsiooni FUTEX_LOCK_PI2 lisamine, mis kasutab monotoonset taimerit ajutiste seadete arvutamiseks, mis arvestab süsteemi magamisseisundis veedetud aega;
- RISC-V arhitektuuri jaoks on rakendatud suurte mälu lehtede (Transparent Huge Pages) ja mehhanismi rakendamise tugi KFENCE mäluhalduse vigade tuvastamiseks;
- süsteemikõne madvise(), mis pakub vahendeid protsessi mälu juhtimise optimeerimiseks, lisatud MADV_POPULATE_READ ja MADV_POPULATE_WRITE lipud võimaldavad genereerida "page fault" kõigis mälu lehtedes, mis on peegeldatud lugemis- või kirjutamistegevuste jaoks, ilma tegeliku lugemise või kirjutamiseta (prefault). Lippude kasutamine võib olla kasulik, et vähendada programmi töö käigus tekkivaid viivitusi, võimaldades "page fault" töötlejal eelduslikult töötada korraga kõigi eraldamata lehtede jaoks, ootamata nende tegelikku juurdepääsu;
- üksuste testimise süsteemis kunit on lisatud toetab testide käivitamist QEMU keskkonnas;
- uus jälgimisfunktsioon: "osnoise" rakenduses viivituste jälgimiseks, mis on tingitud katkestuste töötlemisest, ning "timerlat" detailse info väljatrükiks viivituste kohta, mis tekivad ajastatükkide signaalide tõttu;
- virtualiseerimine ja turvalisus:
- lisatud süsteemikutsumine memfd_secret(), mis võimaldab luua privaatse mäluala isoleeritud aadressiruumis, nähtav ainult omanikprotsessile, mitte peegeldatav teistele protsessidele ning otse mitte ligipääsetav kärjele;
- seccomp süsteemi süsteemikutsungite filtreerimisel on kasutajaruumi blokeerimiskäitlate väljatõstmisel ette nähtud, et kasutada ühte aatomaarset operatsiooni isoleeritud ülesande jaoks faili deskripti loomiseks ja selle tagastamiseks süsteemikutsungi töötlemisel. Ettepanek lahendab probleem käitleja katkestamise kasutajaruumis, kui saabub signaal;
- lisatud uus mehhanism ressursipiirangute haldamiseks kasutaja ID-de nimedemaal, sidudes eraldi rlimit loendurid kasutajaga „user namespace”. Muudatus lahendab probleemi, mis seisneb ühiste ressursside loendurite kasutamises, kui üks kasutaja käivitab protsesse erinevates konteinerites;
- KVM hüperviisoris, mis töötab ARM64 süsteemides, on lisatud võimalus kasutada külalissüsteemides MTE-d (MemTag, mälu märgistamise laiendus), mis võimaldab siduda märgiseid iga mäludelegatsiooni operatsiooniga ja korraldada pointerite õigsuse kontrollimist, et ära hoida haavatavuste ärakasutamist, mis tuleneb juba vabastatud mäluplokkidele, puhverülevõttudele, initsialiseerimise või käimasoleva konteksti all olevate päringute tegemisest.
- ARM64 platvorm pakub pointerite autentimise (Pointer Authentication) vahendeid, mis võivad nüüd olla eraldi seadistatud tuuma ja kasutaja ruumi jaoks. Tehnoloogia võimaldab kasutada spetsialiseeritud ARM64 käsklusi tagastusadresside kontrollimiseks, kasutades digitaalallkirju, mis hoitakse ise pointeri kasutamata ülemistes bittides.
- Kasutaja režiimi Linuxis on lisatud toe pakkumine PCI-seadmete draiverite jaoks, mida rakendab PCI virtuaalbus, mida haldab PCI-over-virtio draiver.
- x86-süsteemide jaoks on lisatud toetus paravirtuaalsetele seadmetele virtio-iommu, mis võimaldab edastada IOMMU-päringuid, nagu ATTACH, DETACH, MAP ja UNMAP, virtio transporti kaudu mälulehtede tabelite emuleerimata;
- Intel CPU-de puhul, alates Skylake'i perekonnast kuni Coffee Lake'ini, on vaikimisi keelatud Intel TSX (Transactional Synchronization Extensions) laienduste kasutamine, mis pakuvad vahendeid mitme lõime rakenduste jõudluse parandamiseks dünaamilise liialduste vältimise kaudu. Laiendused on välja lülitatud potentsiaalsete rünnakute tõttu, Zombieload, mis manipuleerib külgkanalite teabelekete (TAA, TSX Asynchronous Abort) ajal, kui toimib asünkroonselt katkestamisoperatsioonide mehhanism;
- võrgusubsystem:
- MPTCP (MultiPath TCP) tuumasse integreerimine jätkub, TCP-protokolli laienduste abil, et korraldada TCP-ühenduse töö pakkide kohaletoimetamiseks samaaegselt mitme marsruudi kaudu, erinevate võrguinterfööride kaudu, mis on seotud erinevate IP-aadressidega. Uues väljaandes lisatud IPv4 ja IPv6 (multipath hash policy) liikluse hashimise poliitikate määramise mehhanism, mis võimaldab kasutaja ruumist määrata, milliseid välju pakettides, sealhulgas kapseldatud, kasutatakse hash'i arvestamisel, mis määrab paketi marsruudi;
- virtio virtuaalsesse transporti on lisatud pistikute toetus SOCK_SEQPACKET (järjestatud ja usaldusväärne datagrammide edastamine);
- SO_REUSEPORT soklite mehhanismi võimekust on laiendatud, võimaldades mitmel kuulaval sokkel ühenduda ühe porti kaudu, et vastu võtta ühendusi, jagades samaaegselt saabuvaid päringuid kõigi SO_REUSEPORT soklite vahel, mis lihtsustab mitme lõimega serveri rakenduste loomist. Uues versioonis lisatud vahendid juhtimiskontrolli edastamiseks teisele soklile juhul, kui algselt valitud sokkel ei suuda päringut töödelda (lahendab probleemi, mis on seotud üksikute ühenduste kadumisega teenuste taaskäivitusel);
- seade:
- amdgpu draiveris on rakendatud Toetatud on uusi GPU-sid AMD Radeon RX 6000, mille arendustööd kannavad koodnimesid «Beige Goby» (Navi 24) ja «Yellow Carp», samuti on parandatud GPU Aldebarani (gfx90a) ja APU Van Goughi toimetulekut. Lisatud on võimalus töötada samaaegselt mitme eDP-paneeliga. APU Renoiri jaoks on rakendatud toetus krüpteeritud puhverdate töötlemiseks videomälus (TMZ, Trusted Memory Zone). Lisatud on toetus graafikakaartide kuumäratsemiseks (hot-unplug). GPU Radeon RX 6000 (Navi 2x) ja vanemate AMD GPU-de puhul on vaikimisi sisse lülitatud energiahaldusmehhanismi ASPM (Active State Power Management) toetus, mis varem oli aktiveeritud ainult GPU-dele Navi 1x, Vega ja Polaris;
- AMD kiipide jaoks on lisatud jagatud virtuaalse mäluhalduse (SVM, shared virtual memory) tugi HMM (Heterogeneous memory management) alusel, mis võimaldab kasutada seadmeid, millel on oma mäluhalduse üksused (MMU, memory management unit), mis saavad juurde pääseda põhimenüüle. Sealhulgas HMM-i abil on võimalik korraldada ühine aadressiruumi GPU ja CPU vahel, milles GPU võib ligipääsu saada protsessi põhimenüüle;
- lisatud on algne toetus tehnoloogiale AMD Smart Shift, dünaamiliselt muutes AMD kiibistikuga ja graafikakaardiga sülearvutite CPU ja GPU energiatarbimise parameetreid, et saavutada maksimaalne jõudlus mängudes, videote redigeerimisel ja 3D-renderduses;
- Inteli i915 draiveris lisatud Inteli Alder Lake P kiipide tugi;
- lisatud drm/hyperv draiver Hyper-V virtuaalse graafikaadapteri jaoks;
- lisatud grafikadraiver simpledrm, mis kasutab EFI-GOP või VESA raami väljundiks, mille pakub UEFI-p suhvr või BIOS. Draiveri peamine eesmärk on võimaldada graafilist väljundit alglaadimise varajastes etappides, enne kui saab kasutada täisversiooni DRM-draiverit. Draiverit saab kasutada ka ajutise lahendusena riistvarale, mille jaoks ei ole veel kohalikke DRM-drajereid olemus;
- on lisatud monoblock arvuti tugi Raspberry Pi 400;
- lisatud dell-wmi-privacy draiver Dell sülearvutites tarnitud kaamera ja mikrofoni riistvaraliste lülitite toe jaoks;
- Lenovo sülearvutitele lisatud WMI liides BIOS-i parameetrite muutmiseks sysfs /sys/class/firmware-attributes/ kaudu;
- laiendatud USB4 liidese toega seadmete tugi;
- on lisatud toetab AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 ja Texas Instruments TAS2505 helikaardid ja koodekid. Parandatud helitugi HP ja ASUS sülearvutites. Lisatud patchid, et vähendada heli esitamise viivitusi USB-liidesega seadmetes.
Allikas – opennet.ru.
Allikas: linux.org.ru
