Pärast kahte kuud arendusteline Linus Torvalds tugevdamise südamik . Märkimisväärsed muudatused hõlmavad uut liidest асинхронse sisendi/väljundi io_uring, NVDIMM-de kasutamise võimalust RAM-ina, Nouveau toega jagatud virtuaalset mälu, väga suurte failisüsteemide skaleeritavat jälgimist fanotify kaudu, Zstd tihendustaseme seadistamise võimalust Btrfs-is, uut cpuidle TEO töötlejat, süsteemikõnede implementeerimist 2038. aasta probleemi lahendamiseks, seadme-mapper'i seadmest käivitamise võimalust ilma initramfs-ta, LSM-mooduli SafeSetID ja kombineeritud live-patchide toetust.
:
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- Uus асинхронse sisendi/väljundi liides on rakendatud — , mille eripära on sisendi/väljundi pollimise tugi ja võimalus töötada nii puhversüsteemiga kui ka ilma. Tuletame meelde, et varasemalt pakutud асинхронne sisendi/väljundi mehhanism „aio” ei toetanud puhversüsteemist väljundit, töötas ainult O_DIRECT režiimis (ilma puhversüsteemi ja vahemäluta), omas probleemide, mis põhjustasid lukustuid, kuna oodati metaandmete kättesaadavust ja näitas suurenenud kulusid andmete kopeerimise tõttu mällu.
API raames
io_uring arendajad püüdsid kõrvaldada vana aio liidese puudused. Üks io_uring on väga lähedal ja ületab libaio märkimisväärselt, kui polling on sisse lülitatud. io_uring'i kasutamiseks kasutajaruumi rakendustes on valmistatud raamatukogu , mis pakub kõrgema taseme mähist kerneli liidese üle; - fs-i sündmuste jälgimise mehhanism fanotify() toetab superbloki ja struktuuri muutuste jälgimist (kaustade loomise, kustutamise ja liigutamise sündmused). Esitatud võimalused aitavad lahendada mastaapsuse probleemid, mis tekivad muudatuste rekursiivsel jälgimisel väga suurtes FS-ides inotify mehhanismi abil (dirent'i muudatusi sai varem jälgida ainult inotify kaudu, kuid
mastaapsus suurte sisemiste kaustade rekursiivsel jälgimisel oli kehv). Nüüd on selline jälgimine efektiivselt teostatav fanotify kaudu; - Btrfs failisüsteemis võimalus seadistada zstd algoritmi tihendustaset, mida võib pidada optimaalseks kompromissiks kiire, kuid ebaefektiivse lz4 ja aeglase, kuid hästi tihendava xz vahel. Sarnaselt sellele, kuidas varem sai zlib'i kasutamisel seadistada tihendustaset, on zstd jaoks lisatud mälu mountimise valiku toetus „-o compress=zstd:level“. Testimisel tagas madalaim esmaklass, et andmed tihendati 2,658 korda kiirusel 438,47 MB/s, dekompressioonikiirus oli 910,51 MB/s ning mälu tarbimine 780 MB, samas kui maksimaalne 15. tase tagas 3,126 kordse tihenduse, kuid tihendamise kiirus oli 37,30 MB/s, dekompressioonikiirus 878,84 MB/s ja mälu tarbimine 2547 MB;
- võimalus laadida failisüsteemilt, mis on paigutatud device-mapper seadmest, ilma initramfsi kasutamata. Alates praegusest seadme kernel’i versioonist saab device-mapperit otse käivitamisel kasutada, näiteks juur FS'i partitsioonina. Partitsiooni seadistamine toimub käivitamisparameetri „dm-mod.create” kaudu. Lubatud device-mapper moodulite hulka kuuluvad: „crypt”, „delay”, „linear”, „snapshot-origin” ja „verity”;
- Flash-põhistele salvestusseadmetele orienteeritud failisüsteemile F2FS on lisatud lipp F2FS_NOCOW_FL, mis võimaldab keelata copy-on-write režiimi määratud faili jaoks;
- Kernelist on eemaldatud failisüsteem , mis on ext2 variatsioon, kohandatud objektide salvestusseadmete OSD (Object-based Storage Device) jaoks. Samuti on eemaldatud SCSI-protokolli tugi sellistele objektipõhistele salvestusseadmetele;
- Uus асинхронse sisendi/väljundi liides on rakendatud — , mille eripära on sisendi/väljundi pollimise tugi ja võimalus töötada nii puhversüsteemiga kui ka ilma. Tuletame meelde, et varasemalt pakutud асинхронne sisendi/väljundi mehhanism „aio” ei toetanud puhversüsteemist väljundit, töötas ainult O_DIRECT režiimis (ilma puhversüsteemi ja vahemäluta), omas probleemide, mis põhjustasid lukustuid, kuna oodati metaandmete kättesaadavust ja näitas suurenenud kulusid andmete kopeerimise tõttu mällu.
- Virtualiseerimine ja turvalisus
- prctl() on lisatud võimalus PR_SPEC_DISABLE_NOEXEC, et juhtida valitud protsessi spekuleerimise täitmistegevust. Uus valik võimaldab valikuliselt keelata spekuleerimise teostamise protsesside jaoks, mis võivad olla potentsiaalselt rünnatavad Spectre tüüpi rünnakute kaudu. Keelamine kehtib kuni esimese exec() kutsumiseni;
- Rakendatud on LSM-moodul , mis võimaldab süsteemiteenustel turvaliselt hallata kasutajaid ilma privileege (CAP_SETUID) tõstmata ja ilma root-kasutaja õigusi saamatta. Privileegide määramine toimub securityfs-s olevate valgete loendite põhjal, määrates õigused kujul „UID1:UID2“;
- Lisatud madala taseme muudatused, mis on vajalikud turvaseoste (LSM) moduleerimise laadimiste korraldamiseks. Tutvustatud on tuuma laadimisparameetrit «lsm», mis võimaldab hallata, millised moodulid laaditakse ja millises järjekorras;
- Auditeerimise alamprogramm toetab nüüd failide nimekirju;
- GCC plugina structleak, mis võimaldab vältida võimalikke mälu sisendi leke. Tagatud on kõikide muutuja algatamine, mida kasutatakse koodis viidete kaudu, mälus;
- Võrgu alamsüsteem
- Socketite jaoks uus valik «SO_BINDTOIFINDEX», mis sarnaneb
«SO_BINDTODEVICE», kuid võtab argumentidena võrgu liidese indeksinumbri, mitte liidese nime; - Mac80211 teeki on lisatud võimalus määrata ühele seadmele mitu BSSID (MAC-aadresse). WiFi jõudluse optimeerimise projekti raames on mac80211 teeki lisatud eetriaja jaotuse arvestamine ning võimalus jaotada eetriaeg mitme jaama vahel (juurdepääsupunkti režiimis aegade mitteühtlane jaotamine aeglasematele traadita jaamadele, mitte nende vahel ühtlase jaotamise asemel);
- Lisatud mehhanism „«, mis annab teateid, kui võrguvõrguga seotud probleeme esineb;
- Socketite jaoks uus valik «SO_BINDTOIFINDEX», mis sarnaneb
- Mälu ja süsteemiteenused
- turvaline signaalide edastamine, mis arvestab PID-i taaskasutamise võimalust. Näiteks varem, kui kutsuti välja kill, võis tekkida olukord, kus kohe pärast signaali saatmist vabastati siht-PID protsessi lõpetamise tõttu ja see võidi hõivata muu protsessi poolt, mille tulemuseks oli signaali edastamine teisele protsessile. Selliste olukordade vältimiseks on lisatud uus süsteemikõne pidfd_send_signal, mis kasutab failikirjeldajaid kaustast /proc/pid, et tagada stabiilne seotus protsessiga. Isegi kui PID taastatakse süsteemikõne töötlemise ajal, ei muutu failikirjeldaja ja seda saab ohutult kasutada signaali saatmiseks protsessile;
- võimalus kasutada püsiva mälu seadmeid (persistent-memory, näiteks ) RAM-ina. Varasemalt olid sarnased seadmed tuumal tugi ainult salvestusseadmetena, kuid nüüd saab neid kasutada ka täiendava operatiivmälu jaoks. See võimalus on rakendatud kasutajate soovidele vastates, kes on valmis leppima jõudluse mahajäämusega ja soovivad kasutada Linuxi tuuma mälu haldamise API-d, selle asemel et kasutada olemasolevaid, kasutaja ruumis töötavaid mäluhaldussüsteeme, mis töötavad mmap dax-faili peal;
- Lisatud on uus CPU seisaku töötleja (cpuidle, mis otsustab, millal saab CPU sügava energiasäästu režiimidesse viia; mida sügavam režiim, seda suurem on sääst, kuid ka väljaärkamise aeg pikeneb) — TEO (Timer Events Oriented Governor). Seni on olnud pakutud kaks cpuidle töötlejat — „menu“ ja „ladder“, mis erinevad heuristikast. „Menu“ töötlejal on tuntud probleeme heuristiliste otsuste vastuvõtmisel, mille kõrvaldamiseks valmistati ette uus töötleja. TEO positsioneeritakse alternatiivina „menu“ töötlejale, pakkudes paremat jõudlust sama energiatootluse taseme juures.
Uue töötleja aktiveerimiseks saab kasutada laadimisparameetrit „cpuidle.governor=teo“; - Tõrgete kõrvaldamise raames , mis on põhjustatud 32-bitise time_t tüübi ülevoolust, on süsteemikutsed, mis pakuvad 64-bitiseid ajaloendeid 32-bitiste arhitektuuride jaoks, lisatud. Lõpuks saab 64-bitist time_t struktuuri nüüd kasutada kõikidel arhitektuuridel. Sarnased muudatused on tehtud ka võrgualases alamsüsteemis valikute jaoks võrgusokkide jaoks;
- Kerneli kuumad plaastri süsteem (live patching) võime "Atomic Replace" atomaarsete muudatuste rakendamiseks ühe funktsiooni puhul. See võimalus võimaldab jagada kokkuvõtvaid plaastreid, mis katavad korraga mitmeid muudatusi, selle asemel, et järgida keerulist järjestikuste live-plaastrite rakendamise protsessi rangelt määratud järjekorras. Kui varem pidid kõik järgmised muudatused põhinema eelneva muudatuse seisundil, siis nüüd on võimalik jagada mitmeid muudatusi, mis on seotud ühe algse seisundiga (st hooldajad saavad toetada ühte kokkuvõtvat plaasterdust põhituuma suhtes, mitte sõltuvate Plaastrite ahelat);
- a.out teostatud failide formaadi tugi on vananenud
kood, mis genereerib core-failid a.out formaadis, mis on seisakus. Formaati a.out ei ole juba ammu Linuxi süsteemides kasutatud ning a.out failide genereerimine pole juba pikka aega kaasaegsete tööriistadega vaikimisi Linuxi konfiguratsioonides toetatud. Lisaks saab a.out failide laadijat täielikult kasutaja ruumis rakendada; - BPF-programmide verifitseerimismehhanismi on lisatud võimalus määrata ja eemaldada kasutamata kood. Ka kernel sisaldab spinlocki toetavaid plaate BPF-alamsüsteemi jaoks, mis pakuvad täiendavaid võimalusi BPF-programmide paralleelseks täitmiseks;
- Seadmed
- Nouveau draiveris heterogeense mäluhalduse tugi, mis võimaldab CPU-l ja GPU-l pääseda ühiste sünkroonitud mälu aladele. Jagatud virtuaalse mälu süsteem (SVM, jagatud virtuaalne mälu) on rakendatud HMM (heterogeense mälu haldamise) alamsüsteemi põhjal, mis võimaldab kasutada seadmeid, millel on oma mälu haldamise blokid (MMU, mälu haldamise üksus), mis võivad pääseda põhisuletud mälule. HMM abil on võimalik korraldada ühine aadressiruumi GPU ja CPU vahel, kus GPU võib pääseda protsessi põhisuletud mälule. SVM-i tugi on praegu lubatud ainult Pascal'i perekonna GPU-dele, kuigi tugi on tagatud ka Volta ja Turing GPU-dele. Lisaks, Nouveau uus ioctl protsesside mälu alade migreerimise haldamiseks GPU mälu;
- DRM-juhikprogrammis Intel GPU Skylake ja uuematele (gen9+) vaikimisi fastboot režiim, mis välistab tarbetud režiimide vahetused käivitamise ajal. seadmeliidendid Coffelake ja Ice Lake mikroarhitektuuride põhjal. Coffelake'i kiipide jaoks GVT toe (). Virtuaalsetele GPU-dele VFIO EDID toe. LCD paneelide jaoks MIPI/DSI ACPI/PMIC elementide tugi. uued TV-režiimid 1080p30/50/60 TV;
- Driver amdgpu lisatud tugi GPU Vega10/20 BACO. Rakendatud toitehalduse meetodid Vega 10/20 jaoks ja jahutustabelid Vega 10. Lisatud uued PCI seadme identifikaatorid GPU Picasso jaoks. planeeritud sõltuvuste juhtimise liides vastaste lukustuste vältimiseks;
- DRM/KMS-draiver ekraanitegevuste kiirendamiseks (Mali D71);
- Lisatud tugi ekraanipaneelidele Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 ja Kingdisplay kd097d04;
- Lisatud tugi heli koodekitele Rockchip RK3328, Cirrus Logic CS4341 ja CS35L36, MediaTek MT6358, Qualcomm WCD9335 ja Ingenic JZ4725B, samuti heliplatvormile Mediatek MT8183;
- Lisatud tugi NAND-kontrolleritele Flash STMicroelectronics FMC2, Amlogic Meson;
- Lisatud tugi kiirenditele masinõppe süsteemide jaoks Habana AI;
- Lisatud tugi gigabitriste Ethernet-kontrolleritele NXP ENETC ja juhtmeta liidesele MediaTek MT7603E (PCIe) ja MT76x8.
Samas ajal, Ladina-Ameerika vaba tarkvara fond
variant — , puhastatud kõigist tahvelarvutite ja draiverite elementidest, mis sisaldavad mittevaba komponente või koodilõike, mille kasutamine on piiratud tootja poolt. Uues versioonis on keelatud mt7603 ja goya draiverites blobide laadimine. Uuendatud on blobide puhastamise kood draiverites ja alamvõrkudes wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk ja touchscreen_dmi. Blobide puhastamine lantiq xrx200 püsivara laadimisest on lõpetatud, kuna see on eemaldatud tuumast.
Allikas: opennet.ru
