Izdaja jedra Linuxa 5.14

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linuxa 5.14. Med najbolj opaznimi spremembami: novi sistemski klici quotactl_fd() in memfd_secret(), odstranitev ide in neobdelanih gonilnikov, nov I/O prednostni krmilnik za cgroup, način razporejanja opravil SCHED_CORE, infrastruktura za ustvarjanje preverjenih programskih nalagalnikov BPF.

Nova različica vključuje 15883 popravkov 2002 razvijalcev, velikost popravka je 69 MB (spremembe so vplivale na 12580 datotek, dodanih je bilo 861501 vrstic kode, izbrisanih je bilo 321654 vrstic). Približno 47 % vseh sprememb, uvedenih v 5.14, je povezanih z gonilniki naprav, približno 14 % sprememb je povezanih s posodabljanjem kode, specifične za arhitekture strojne opreme, 13 % je povezanih z omrežnim skladom, 3 % je povezanih z datotečnimi sistemi in 3 % so povezani z notranjimi podsistemi jedra.

Glavne novosti:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Za cgroups je bil implementiran nov I/O krmilnik prioritete, rq-qos, ki lahko nadzira prioriteto obdelave zahtev za blokiranje naprav, ki jih ustvarijo člani vsake cgroup. V razporejevalnik V/I mq-deadline je bila dodana nova podpora za prednostni krmilnik.
    • Datotečni sistem ext4 implementira nov ukaz ioctl, EXT4_IOC_CHECKPOINT, ki prisili, da se vse čakajoče transakcije iz dnevnika in z njimi povezanih medpomnilnikov izpraznijo na disk, poleg tega pa prepiše območje, ki ga uporablja dnevnik v pomnilniku. Sprememba je bila pripravljena v okviru pobude za preprečevanje uhajanja informacij iz datotečnih sistemov.
    • V Btrfs so bile narejene optimizacije delovanja: z odpravo nepotrebnega beleženja razširjenih atributov med izvajanjem fsync se je zmogljivost intenzivnih operacij z razširjenimi atributi povečala za do 17 %. Poleg tega je pri izvajanju operacij obrezovanja, ki ne vplivajo na obsege, onemogočena popolna sinhronizacija, kar je zmanjšalo čas operacije za 12 %. V sysfs je bila dodana nastavitev za omejitev V/I pasovne širine pri preverjanju FS. Dodani klici ioctl za preklic spreminjanja velikosti in brisanja operacij naprave.
    • V XFS je bila preoblikovana izvedba medpomnilnika, ki je bil preklopljen na dodeljevanje pomnilniških strani v paketnem načinu. Izboljšana učinkovitost predpomnilnika.
    • F2FS doda možnost delovanja v načinu samo za branje in implementira način predpomnilnika stisnjenih blokov (compress_cache), da izboljša zmogljivost naključnega branja. Izvedena je bila podpora za stiskanje datotek, preslikanih v pomnilnik z operacijo mmap(). Za selektivno onemogočanje stiskanja datotek na podlagi maske je bila predlagana nova možnost priklopa nocompress.
    • V gonilniku exFAT je bilo narejeno delo za izboljšanje združljivosti z nekaterimi shrambami digitalnih fotoaparatov.
    • Dodan je sistemski klic quotactl_fd(), ki vam omogoča upravljanje kvot ne prek posebne datoteke naprave, temveč z navedbo deskriptorja datoteke, povezanega z datotečnim sistemom, za katerega je uporabljena kvota.
    • Stari gonilniki za blokovne naprave z vmesnikom IDE so bili odstranjeni iz jedra; že dolgo jih je nadomestil podsistem libata.
    • "Surovi" gonilnik je bil odstranjen iz jedra, kar zagotavlja neomejen dostop do blokovnih naprav prek vmesnika /dev/raw. Ta funkcionalnost je že dolgo implementirana v aplikacije z uporabo zastavice O_DIRECT.
  • Pomnilniške in sistemske storitve
    • Razporejevalnik opravil implementira nov način načrtovanja, SCHED_CORE, ki vam omogoča nadzor nad tem, kateri procesi se lahko izvajajo skupaj v istem jedru CPU. Vsakemu procesu je mogoče dodeliti identifikator piškotka, ki določa obseg zaupanja med procesi (na primer pripadnost istemu uporabniku ali vsebniku). Pri organiziranju izvajanja kode lahko razporejevalnik zagotovi, da je eno jedro CPU v skupni rabi samo med procesi, povezanimi z istim lastnikom, kar se lahko uporabi za blokiranje nekaterih napadov Spectre, tako da prepreči izvajanje zaupanja vrednih in nezaupnih nalog v isti niti SMT (Hyper Threading). .
    • Za cgroup je implementirana podpora za operacijo uničenja, ki vam omogoča, da uničite vse procese, povezane s skupino naenkrat (pošljite SIGKILL), tako da v virtualno datoteko cgroup.kill zapišete »1«.
    • Razširjene zmožnosti, povezane z odzivom na zaznavanje deljenih zaklepov (»split locks«), ki se pojavijo pri dostopu do neporavnanih podatkov v pomnilniku zaradi dejstva, da pri izvajanju atomskega ukaza podatki prečkajo dve vrstici predpomnilnika CPU. Takšna blokada vodi do občutnega padca zmogljivosti, zato je bilo prej mogoče prisilno prekiniti aplikacijo, ki je povzročila blokado. Nova izdaja doda parameter ukazne vrstice jedra »split_lock_detect=ratelimit:N«, ki vam omogoča, da določite sistemsko omejitev hitrosti operacij zaklepanja na sekundo, po kateri se kateri koli proces, ki je postal vir deljene ključavnice, zaklene. se bo prisiljen ustaviti za 20 ms namesto prekinitve.
    • Krmilnik pasovne širine cgroup CFS (CFS bandwidth controller), ki določa, koliko procesorskega časa se lahko dodeli posamezni cgroup, implementira možnost definiranja časovno omejenih omejitev, kar omogoča boljšo regulacijo obremenitev, občutljivih na zakasnitve. Če na primer nastavite cpu.cfs_quota_us na 50000 in cpu.cfs_period_us na 100000, bo skupina procesov omogočila, da vsakih 100 ms izgubi 50 ms CPU časa.
    • Dodana začetna infrastruktura za ustvarjanje nalagalnikov programov BPF, kar bo nadalje omogočalo nalaganje samo programov BPF, podpisanih z zaupanja vrednim digitalnim ključem.
    • Dodana je nova futex operacija FUTEX_LOCK_PI2, ki uporablja monotoni časovnik za izračun časovne omejitve, ki upošteva čas, ki ga sistem porabi v načinu mirovanja.
    • Za arhitekturo RISC-V je implementirana podpora za velike pomnilniške strani (Transparent Huge-Pages) in možnost uporabe mehanizma KFENCE za odkrivanje napak pri delu s pomnilnikom.
    • Sistemski klic madvise(), ki zagotavlja sredstvo za optimizacijo upravljanja pomnilnika procesa, je dodal zastavici MADV_POPULATE_READ in MADV_POPULATE_WRITE za ustvarjanje "napake strani" na vseh pomnilniških straneh, ki so preslikane za operacije branja ali pisanja, brez izvajanja dejanskega branja ali pisanja (prednapaka). Uporaba zastavic je lahko uporabna za zmanjšanje zamud pri izvajanju programa, zaradi proaktivnega izvajanja obdelovalca »page fault« za vse nedodeljene strani hkrati, brez čakanja na dejanski dostop do njih.
    • Sistem za testiranje enot kunit je dodal podporo za izvajanje testov v okolju QEMU.
    • Dodani so bili novi sledilniki: »osnoise« za sledenje zakasnitvam aplikacij, ki jih povzroča obdelava prekinitve, in »timerlat« za prikaz podrobnih informacij o zakasnitvah ob prebujanju iz signala časovnika.
  • Virtualizacija in varnost
    • Sistemski klic memfd_secret() je bil dodan za ustvarjanje zasebnega pomnilniškega območja v izoliranem naslovnem prostoru, ki je viden samo lastniškemu procesu, se ne odraža drugim procesom in ni neposredno dostopen jedru.
    • V sistemu za filtriranje sistemskih klicev seccomp je pri premikanju obdelovalcev blokiranja v uporabniški prostor mogoče uporabiti eno samo atomsko operacijo za ustvarjanje deskriptorja datoteke za izolirano nalogo in ga vrniti pri obdelavi sistemskega klica. Predlagana operacija rešuje problem prekinitve upravljalnika v uporabniškem prostoru, ko prispe signal.
    • Dodan je nov mehanizem za upravljanje omejitev virov v imenskem prostoru ID-ja uporabnika, ki posamezne števce rlimit veže na uporabnika v »imenskem prostoru uporabnika«. Sprememba rešuje težavo z uporabo skupnih števcev virov, ko en uporabnik izvaja procese v različnih vsebnikih.
    • Hipervizor KVM za sisteme ARM64 je dodal možnost uporabe razširitve MTE (MemTag, Memory Tagging Extension) v gostujočih sistemih, ki vam omogoča, da vežete oznake na vsako operacijo dodeljevanja pomnilnika in organizirate preverjanje pravilne uporabe kazalcev za blokiranje izkoriščanja ranljivosti, ki nastanejo zaradi dostopa do že sproščenih pomnilniških blokov, prelivanja medpomnilnika, dostopov pred inicializacijo in uporabe zunaj trenutnega konteksta.
    • Zmožnosti avtentikacije kazalca platforme ARM64 je zdaj mogoče konfigurirati ločeno za jedro in uporabniški prostor. Tehnologija vam omogoča uporabo specializiranih navodil ARM64 za preverjanje povratnih naslovov z uporabo digitalnih podpisov, ki so shranjeni v neuporabljenih zgornjih bitih samega kazalca.
    • Linux v uporabniškem načinu je dodal podporo za uporabo gonilnikov za naprave PCI z navideznim vodilom PCI, ki ga izvaja gonilnik PCI-over-virtio.
    • Za sisteme x86 dodana podpora za paravirtualizirano napravo virtio-iommu, ki omogoča pošiljanje zahtev IOMMU, kot so ATTACH, DETACH, MAP in UNMAP, prek transporta virtio brez posnemanja tabel pomnilniških strani.
    • Za procesorje Intel, od družine Skylake do Coffee Lake, je privzeto onemogočena uporaba Intel TSX (Transactional Synchronization Extensions), ki zagotavljajo orodja za izboljšanje zmogljivosti večnitnih aplikacij z dinamičnim odpravljanjem nepotrebnih operacij sinhronizacije. Razširitve so onemogočene zaradi možnosti napadov Zombieload, ki manipulirajo z uhajanjem informacij prek kanalov tretjih oseb, do katerega pride med delovanjem mehanizma TAA (TSX Asynchronous Abort).
  • Omrežni podsistem
    • Integracija v jedro MPTCP (MultiPath TCP), razširitev protokola TCP za organizacijo delovanja povezave TCP z dostavo paketov hkrati po več poteh prek različnih omrežnih vmesnikov, povezanih z različnimi naslovi IP. Nova izdaja dodaja mehanizem za nastavitev lastnih pravilnikov zgoščevanja prometa za IPv4 in IPv6 (politika zgoščevanja več poti), kar omogoča, da iz uporabniškega prostora določite, katera polja v paketih, vključno z inkapsuliranimi, bodo uporabljena pri izračunu zgoščevanja, ki določa izbira poti za paket.
    • Virtualnemu transportu virtio je bila dodana podpora za vtičnice SOCK_SEQPACKET (urejen in zanesljiv prenos datagramov).
    • Zmogljivosti mehanizma vtičnic SO_REUSEPORT so bile razširjene, kar omogoča, da se več poslušajočih vtičnic poveže z enimi vrati hkrati, da prejmejo povezave z distribucijo dohodnih zahtev hkrati po vseh vtičnicah, povezanih prek SO_REUSEPORT, kar poenostavlja ustvarjanje večnitnih strežniških aplikacij . Nova različica dodaja orodja za prenos nadzora na drugo vtičnico v primeru napake pri obdelavi zahteve s strani prvotno izbrane vtičnice (rešuje težavo z izgubo posameznih povezav ob ponovnem zagonu storitev).
  • Оборудование
    • Gonilnik amdgpu zagotavlja podporo za novo serijo grafičnih procesorjev AMD Radeon RX 6000 s kodnim imenom »Beige Goby« (Navi 24) in »Yellow Carp« ter izboljšano podporo za grafični procesor Aldebaran (gfx90a) in Van Gogh APU. Dodana možnost hkratnega dela z več ploščami eDP. Za APU Renoir je bila implementirana podpora za delo s šifriranimi medpomnilniki v video pomnilniku (TMZ, Trusted Memory Zone). Dodana podpora za grafične kartice z vročim odklopom. Za grafične procesorje Radeon RX 6000 (Navi 2x) in starejše grafične procesorje AMD je privzeto omogočena podpora za ASPM (Active State Power Management), ki je bila prej omogočena samo za grafične procesorje Navi 1x, Vega in Polaris.
    • Za čipe AMD je dodana podpora za deljeni virtualni pomnilnik (SVM, shared virtual memory) na osnovi podsistema HMM (Heterogeneous memory management), ki omogoča uporabo naprav z lastnimi enotami za upravljanje pomnilnika (MMU, memory management unit), ki lahko dostopa do glavnega pomnilnika. Zlasti z uporabo HMM lahko organizirate skupni naslovni prostor med GPE in CPE, v katerem lahko GPE dostopa do glavnega pomnilnika procesa.
    • Dodana začetna podpora za tehnologijo AMD Smart Shift, ki dinamično spreminja nastavitve moči CPE in GPE na prenosnikih z naborom čipov AMD in grafično kartico za povečanje zmogljivosti za igranje iger, urejanje videa in 3D upodabljanje.
    • Gonilnik i915 za grafične kartice Intel vključuje podporo za čipe Intel Alderlake P.
    • Dodan gonilnik drm/hyperv za virtualni grafični adapter Hyper-V.
    • Dodana podpora za računalnik Raspberry Pi 400 vse v enem.
    • Dodan gonilnik dell-wmi-privacy za podporo stikal za kamero in mikrofon strojne opreme, vključenih v prenosnike Dell.
    • Za prenosnike Lenovo je dodan vmesnik WMI za spreminjanje nastavitev BIOS-a preko sysfs /sys/class/firmware-attributes/.
    • Razširjena podpora za naprave z vmesnikom USB4.
    • Dodana podpora za zvočne kartice in kodeke AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 in Texas Instruments TAS2505. Izboljšana zvočna podpora na prenosnikih HP in ASUS. Dodani popravki za zmanjšanje zamud, preden se zvok začne predvajati na napravah USB.

Vir: opennet.ru

Dodaj komentar