После двух месяцев разработки Линус Торвальдс представил izdavanje jezgra Linux 5.14. Među najočiglednijim promenama su: nove sistemske pozive quotactl_fd() i memfd_secret(), uklanjanje drajvera ide i raw, novi kontroler prioriteta unosa/izlaza za cgroup, softverski raspored zadataka SCHED_CORE, infrastruktura za kreiranje pokretača verifikovanih BPF programa.
U novu verziju je uključeno 15883 ispravki od 2002 programera, veličina patch-a iznosi 69 MB (promene su se dotakle 12580 datoteka, dodato je 861501 redova koda, uklonjeno 321654 reda). Približno 47% svih predstavljenih izmena u 5.14 su vezane za drajvere uređaja, oko 14% promena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 13% je povezano s mrežnim stekom, 3% s datotečnim sistemima i 3% s unutrašnjim podsistemima jezgra.
- diskovni podsistem, unos/izlaz i datotečni sistemi:
- za cgroup je realiziran novi kontroler prioriteta unosa/izlaza — rq-qos, koji može upravljati prioritetom obrade zahteva za blok uređaje koje generišu učesnici svake cgroup. Podrška za novi kontroler prioriteta je dodata u raspoređivač unosa/izlaza mq-deadline;
- u datotečnom sistemu ext4 je bila uvedena nova ioctl komanda EXT4_IOC_CHECKPOINT, koja prisiljava da se na disk upišu svi čekajući transakcije iz dnevnika i povezane sa njima baferi, kao i da se ponovo upisuje oblast koja se koristi u dnevniku u skladište. Ova promena je pripremljena kao deo inicijative za sprečavanje curenja informacija iz datotečnih sistema;
- u Btrfs внесены optimizacija performansi: zbog isključenja suvišnog dnevničkog beleženja proširenih atributa tokom izvršenja fsync, performanse intenzivnih operacija s proširenim atributima povećane su za do 17%. Pored toga, tokom izvođenja operacija skraćivanja koje ne utiču na ekstenzije, isključeno je izvršavanje pune sinhronizacije, što je smanjilo vreme izvršavanja operacije za 12%. U sysfs je dodata opcija za ograničavanje propusnosti unosa/izlaza prilikom provere FS. Dodati su ioctl pozivi za otkazivanje operacija promene veličine i uklanjanje uređaja;
- u XFS preuređena implementacija bafernog keša, koja je prebačena na alokaciju stranica memorije u paketu. Povećana efikasnost rada keša;
- V F2FS je dodana možnost za rad u režimu samo za čitanje, a implementiran je i režim keširanja komprimovanih blokova (compress_cache) radi poboljšanja performansi nasumičnog čitanja. Implementirana je podrška za kompresiju datoteka koje se reflektiraju u memoriju pomoću operacije mmap(). Za selektivno isključivanje kompresije datoteka po maski, predložena je nova opcija montiranja nocompress;
- U exFAT drajveru su napravljene nadogradnje radi poboljšanja kompatibilnosti sa skladištima nekih digitalnih kamera;
- Dodana je sistemska funkcija quotactl_fd(), koja omogućava upravljanje kvotama ne putem datoteke posebnog uređaja, već putem navođenja deskriptora datoteke povezanog s datotečnim sistemom na koji se kvota primenjuje;
- Iz jezgra su uklonjeni stari drajveri za blok uređaje sa IDE interfejsom, koje je davno zamenila podlista libata. Podrška za stare uređaje je potpuno očuvana, izmene se odnose samo na mogućnost korišćenja starih drajvera, pri čemu su uređaji imenovani \/dev\/hd*, a ne \/dev\/sd*;
- Iz jezgra je uklonjen drajver „raw“, koji omogućava nebufferizovan pristup blok uređajima putem interfejsa \/dev\/raw. Pomenuta funkcionalnost se već dugo implementira u aplikacijama pomoću zastavice O_DIRECT;
- Memorija i sistemske usluge:
- U planeru zadataka implementiran je novi režim planiranja SCHED_CORE, koji omogućava upravljanje tim koje procese mogu zajednički raditi na jednoj CPU jezgri. Svakom procesu može biti dodeljen cookie identifikator koji određuje područje poverenja između procesa (na primer, pripadnost jednom korisniku ili kontejneru). Prilikom organizacije izvršenja koda, planer može osigurati zajedničko korišćenje jedne CPU jezgre samo za procese povezane s jednim vlasnikom, što se može koristiti za blokiranje nekih napada klase Spectre sprečavanjem izvršavanja u jednom SMT (Hyper Threading) toku poverljivih i nepoverenih zadataka;
- Za cgroup mehanizam implementirana je podrška za operaciju kill, koja omogućava jednocrtno završavanje svih procesa povezanih s grupom (slanje SIGKILL), upisivanjem „1“ u virtuelnu datoteku cgroup.kill;
- razširjene so možnosti, povezane z reakcijo na odkrivanje razcepljenih zaklepov („split lock“), ki se pojavijo pri dostopu do neporavnane podatkov v pomnilniku, ker pri izvajanju atomske instrukcije podatki prečkajo dve liniji predpomnilnika CPU. Takšni zaklepi povzročajo pomemben padec zmogljivosti, zato je bila prej na voljo možnost prisilnega zaključka aplikacije, ki je povzročila zaklep. V novi različici je dodana možnost ukaza jedra „split_lock_detect=ratelimit:N“, ki omogoča določitev skupnega sistema omejitve intenzivnosti operacij zaklepa na sekundo, po katerih se vsak proces, ki postane vir razcepljenega zaklepa, namesto zaključka prisilno ustavi za 20 ms;
- v nadzoru pasovne širine CFS (CFS bandwidth controller), ki določa, koliko procesorskega časa je mogoče dodeliti vsakemu cgroupu, je bila实现ovana možnost določanja omejitev, omejenih z določenim časom trajanja, kar omogoča boljše uravnavanje obremenitev, občutljivih na zakasnitve. Na primer, nastavitev vrednosti cpu.cfs_quota_us na 50000 in cpu.cfs_period_us na 100000 bo omogočila skupini procesov, da vsakih 100 ms porabi 50 ms procesorskega časa;
- je dodana začetna infrastruktura za ustvarjanje nalagalnikov BPF-programov, ki bo v nadaljevanju omogočila nalaganje samo BPF-programov, podpisanih s priznanjem vrednim digitalnim ključem;
- dodana je nova futex-operacija FUTEX_LOCK_PI2, ki uporablja monotonski časomer za izračun časovne omejitve, ki upošteva čas, preživet v mirovanju;
- za arhitekturo RISC-V je bila实现ovana podpora za velike strani pomnilnika (Transparent Huge-Pages) in možnost uporabe mehanizma KFENCE za odkrivanje napak pri delu s pomnilnikom;
- v sistemski klic madvise(), ki nudi sredstva za optimizacijo upravljanja pomnilnika procesa, dodano so dodane zastavice MADV_POPULATE_READ in MADV_POPULATE_WRITE za generiranje „page fault“ na vseh straneh pomnilnika, ki so bile vključene za operacije branja ali pisanja, brez dejanskega branja ali pisanja (prefault). Uporaba zastavic lahko koristi za zmanjšanje zakasnitev med delovanjem programa, zahvaljujoč preventivnemu izvajanju obdelovalca „page fault“ hkrati za vse neuzete strani, ne da bi čakali na dejanski dostop do njih;
- v sistemu unit-testiranja kunit je dodana podpora za zagon testov v okolju QEMU;
- dodani novi sledilniki: «osnoise» za sledenje zamudam v aplikacijah, ki jih povzroča obdelava prekinitev, ter «timerlat» za prikaz podrobnih informacij o zamudah ob zbujanju po signalu časovnika;
- virtualizacija in varnost:
- dodano sistemski klic memfd_secret(), ki omogoča ustvarjanje zasebnega območja pomnilnika v izoliranem naslovnem prostoru, vidnem le procesu lastnika, ki ni prikazano v drugih procesih in ni neposredno dostopno jedru;
- v sistemu filtriranja sistemskih klicev seccomp pri izvajanju obdelovalcev zaklepanja v uporabniškem prostoru je dana možnost uporabe ene atomske operacije za ustvarjanje datotečnega descriptorja za izolirano nalogo in njegovo vračanje pri obdelavi sistemskega klica. Predlagana operacija rešuje težavo s prekinitvijo obdelovalca v uporabniškem prostoru ob prejemu signala;
- dodano nov mehanizem za upravljanje omejevanja virov v prostoru imen uporabniških identificatorjev, ki povezuje posamezne števcem rlimit s uporabnikom v 'user namespace'. Sprememba rešuje težavo z uporabo skupnih števcev virov pri zagonu procesov s strani enega uporabnika v različnih kontejnerjih;
- v hipervizorju KVM za sisteme ARM64 je dodana možnost uporabe razširitve MTE (MemTag, Memory Tagging Extension) v gostujočih sistemih, ki omogoča povezavo oznak z vsakim delovanjem dodeljevanja pomnilnika in organizira preverjanje pravilne uporabe kazalcev za preprečevanje izkoriščanja ranljivosti, ki jih povzroča dostop do že osvobojenih pomnilniških blokov, prelivanja pomnilnika, dostopanja pred inicializacijo in uporabe zunaj trenutnega konteksta;
- ponujena sredstva platforme ARM64 za overjanje kazalcev (Pointer Authentication) zdaj lahko posebej nastavimo za jedro in uporabniški prostor. Tehnologija omogoča uporabo specializiranih ukazov ARM64 za preverjanje naslovov vrnitve s pomočjo digitalnih podpisov, ki se shranijo v neizkoriščenih zgornjih bitih samega kazalca;
- v User-mode Linux je dodana podpora za uporabo gonilnikov za PCI naprave z virtualno PCI napravo, ki jo implementira gonilnik PCI-over-virtio;
- Za x86 sisteme je dodana podrška za para-virtualizovani uređaj virtio-iommu, koji omogućava slanje IOMMU zahteva, kao što su ATTACH, DETACH, MAP i UNMAP, preko virtio transporta bez emulacije tabela stranica memorije;
- Za Intel CPU, počevši od Skylake serije do Coffee Lake, po defaultu je isključena upotreba Intel TSX (Transactional Synchronization Extensions) ekstenzija, koje obezbeđuju sredstva za poboljšanje performansi višedretvenih aplikacija kroz dinamičko izbegavanje suvišnih operacija sinhronizacije. Ekstenzije su isključene zbog potencijalne mogućnosti napada Zombieload, koji manipuliše curenjem informacija kroz sporedne kanale koje nastaju prilikom rada mehanizma asinhronog prekida operacija (TAA, TSX Asynchronous Abort);
- Mrežna podsistem:
- Nastavljena je integracija u MPTCP (MultiPath TCP) jezgru, ekstenziji TCP protokola koja omogućava rad TCP veze sa slanjem paketa istovremeno preko više puteva kroz različite mrežne interfejse, vezane za različite IP adrese. U novom izdanju dodano mehanizam za postavljanje vlastitih politika heširanja prometa za IPv4 i IPv6 (multipath hash policy), koji omogućava korisnicima da definišu koja polja u paketima, uključujući enkapsulirane, će biti korišćena prilikom izračunavanja heša koji određuje izbor puta za paket;
- U virtio transport dodata je podrška za sokete SOCK_SEQPACKET (uređeno i pouzdano slanje datagrame);
- Proširene su mogućnosti mehanizma soketa SO_REUSEPORT, koji omogućava više slušajućih soketa da se povežu na jedan port za primanje veza, raspodeljući dolazne zahteve među svim povezanim soketima kroz SO_REUSEPORT, što olakšava kreiranje višedretvenih serverskih aplikacija. U novoj verziji dodano obezbeđena su sredstva za prebacivanje kontrole na drugi soket u slučaju greške prilikom obrade zahteva od strane izvorno odabranog soketa (rešava problem gubitka pojedinačnih veza prilikom ponovnog pokretanja servisa);
- Oprema:
- u amdgpu drajveru je bila uvedena podpora novih serij GPU AMD Radeon RX 6000, razvijajočih se pod kodnimi imeni «Beige Goby» (Navi 24) in «Yellow Carp», ter izboljšana podpora za GPU Aldebaran (gfx90a) in APU Van Gogh. Dodana je možnost hkratnega dela z več eDP zasloni. Za APU Renoir je bila implementirana podpora za delo s šifriranimi pomnilniki v video pomnilniku (TMZ, Trusted Memory Zone). Dodana je podpora za vroče izključitev grafičnih kartic (hot-unplug). Za GPU Radeon RX 6000 (Navi 2x) in starejše GPU AMD je privzeto vključena podpora energetsko varčnega mehanizma ASPM (Active State Power Management), ki je bil prej aktiviran le za GPU Navi 1x, Vega in Polaris;
- za čipe AMD je dodana podpora za deljeno virtualno pomnilnik (SVM, shared virtual memory) na osnovi podsystems HMM (Heterogeneous memory management), ki omogoča uporabo naprav z lastnimi enotami za upravljanje pomnilnika (MMU, memory management unit), ki lahko dostopajo do glavnega pomnilnika. Med drugim je z HMM mogoče organizirati skupen naslovni prostor med GPU in CPU, v katerem GPU lahko dostopa do glavnega pomnilnika procesa;
- dodana začetna podpora za tehnologijo AMD Smart Shift, ki dinamično spreminja parametre porabe energije CPU in GPU na prenosnikih s čipovjem in grafično kartico AMD za dosego boljše zmogljivosti pri igranju iger, urejanju videa in 3D-renderiranju;
- v gonilniku i915 za grafične kartice Intel je vključena podpora za čipe Intel Alder Lake P;
- dodano je gonilo drm/hyperv za virtualni grafični adapter Hyper-V;
- dodano grafični gonilnik simpledrm, ki uporablja za izhodni okvir EFI-GOP ali VESA, ki ga zagotavlja UEFI-ov firmware ali BIOS. Glavni namen gonila je omogočiti grafični izhod v zgodnjih fazah nalaganja, preden je možno uporabiti polno DRM-gonilo. Gonilo se lahko uporablja tudi kot začasna rešitev za strojno opremo, za katero trenutno ni na voljo izvornih DRM-gonil;
- je dodana podpora za računalnik all-in-one Raspberry Pi 400;
- dodano je gonilo dell-wmi-privacy za podporo strojnih stikalo kamer in mikrofonov, dostavljenih v prenosnikih Dell;
- za prenosnike Lenovo dodano WMI vmesnik za spreminjanje nastavitev BIOS-a preko sysfs /sys/class/firmware-attributes/;
- razširjena podpora za naprave z USB4 vmesnikom;
- je dodana podpora zvočnih kartic in kodekov AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 in Texas Instruments TAS2505. Izboljšana podpora zvoka na prenosnih računalnikih HP in ASUS. Dodani popravki za zmanjšanje zakasnitve pred začetkom predvajanja zvoka na napravah z USB vmesnikom.
Vir – opennet.ru.
Izvor: linux.org.ru
