Izdanje jezgre Linux 7.2

Nakon dva meseca razvoja, Linus Torvalds je predstavio izdanje jezgre Linux 7.2. Među najistaknutijim promenama su: mehanizam prenosa podataka USB4STREAM, optimizacije performansi btrfs, xfs i ext4, nastavak uklanjanja koda za podršku CPU i486, mogućnost kreiranja ugnježdenih planera SCHED_EXT, smanjena potrošnja memorije u podsystemu razmene, ubrzani nenamenski kanali, podrška za Intel MBEC i AMD GMET ekstenzije u KVM-u, uklanjanje AppleTalk protokola, i početna podrška za HDMI 2.1 FRL u AMDGPU drajveru.

Glavne novine u jezgri 7.2 (1, 2, 3):

  • Дисковая подсистема, ввод/вывод и файловые системы
    • U mehanizmu iomap uklonjen je suvišni poziv funkcije memset za već završene iteracije u funkciji iomap_iter(), što je, pri visokom intenzitetu ulaza/izlaza na brzim NVMe uređajima, u testovima povećalo broj operacija ulaza/izlaza u sekundi (IOPS) za 5% pri korišćenju FSa ext4 i xfs.
    • U XFS je stabilno proglašena podrška za zonirane uređaje za skladištenje (podela na zone grupa blokova ili sektora, za koje je dozvoljeno samo sekvencijalno dodavanje podataka uz ažuriranje cele grupe blokova).
    • U Btrfs je po defaultu uključena podrška za velike folije memorijskih stranica (large folios), što omogućava smanjenje troškova i povećanje performansi pri intenzivnom sekvencijalnom ulazu/izlazu. Dodata je eksperimentalna podrška za ogromne folije (‘huge folios’), veličine do 2 MB. Dodata je nova ioctl GET_CSUMS za dobijanje informacija o kontrolnim sumama u korisničkom prostoru, na primer za mkfs alat i optimizaciju deduplikacije. Povećane su performanse sekvencijalnog pisanja podataka za 15% i direktnog ulaza/izlaza za 59%.
    • U FSu Ext4 je značajno preuređena implementacija mehanizma ‘fast commit’ za isključivanje nastanka konkurentnih i međusobnih zaključavanja. Dodan je izvoz statistike o snapshotovima inode kroz /proc/fs/ext4/*/fc_info. Optimizovane su performanse računanja hešova direktorijuma (za imena od 255 znakova ubrzanje skoro duplo, 64 znaka 27%, 32 znaka — 11%).
    • U F2FS je dodata podrška za vraćanje grešaka fserror, koja omogućava praćenje problema s FSom iz korisničkog prostora. Smanjeno je vreme provedeno u kontekstu obrade prekida.
    • V Device Mapper (DM) je dodan nov obdelovalec dm-inlinecrypt za organizacijo prosojnega šifriranja in dešifriranja blokovnih napravam, z uporabo strojnih naprav s funkcijo inline-šifriranja.
    • Predlagana je dokumentacija za dodajanje novih datotečnih sistemov v jedro.
    • V NFS je privzeta velikost bloka povečana na 4 MB na sistemih, ki imajo najmanj 16 GB pomnilnika (za ročno spreminjanje velikosti bloka lahko uporabite /proc/fs/nfsd/max_block_size). Dodana je podpora za delegacijo upravljanja z imeniki stranki (directory delegation), kar omogoča izvajanje operacij s tem imenikom brez preverjanja sprememb stanja. strežnikom.
    • V strežniku SMB je dodana podpora za datoteke, shranjene v stisnjeni obliki, ter stiskanje podatkov med prenosom po omrežju.
    • V novi izvedbi NTFS (ntfsplus) je dodana podpora za simbolične povezave Windows in zagotovljeno pravilno obdelovanje mnogih vrst poškodb metapodatkov.
    • Izbrisan je bil vmesnik fscache za predpomnjenje podatkov datotečnega sistema EROFS (Enhanced Read-Only File System), ki je bil razglašen za zastarel pred dvema letoma.
    • V datotečnem sistemu Ceph je dodana podpora za ročno ponastavitev klientskih sej.
    • V datotečni sistem 9P so bile vnesene optimizacije, ki so pospešile delovanje v scenarijih, kot je sestavljanje projektov.
    • V sistemski klic file_getattr() so dodane zastavice za pridobivanje informacij o upoštevanju velike in majhne začetnice v datotečnem sistemu. Zastavica FS_XFLAG_CASEFOLD pomeni, da se preverjanje imen datotek izvaja brez upoštevanja velike in majhne začetnice, medtem ko zastavica FS_XFLAG_CASENONPRESERVING pomeni, da se ob ustvarjanju novih imen datotek ne shranjuje informacija o veliki in majhni začetnici. Omenjene zastavice se lahko uporabljajo v NFS-strankah, ki delujejo brez upoštevanja velike in majhne začetnice.
    • V sistemski klic openat2() je dodana zastavica O_EMPTYPATH, ki omogoča predajo prazne datotečne poti. V tem primeru je pot do odpirane datoteke določena na podlagi posredovanega datotečnega descriptorja.
    • V sistemski klic openat2() je dodana zastavica OPENAT2_REGULAR, ki dovoljuje odpiranje le običajnih datotek (ob poskusu odpiranja posebne datoteke, na primer soketa, kanala ali naprave, bo vrnjena napaka EFTYPE).
  • Pomnilnik in sistemske storitve
    • Uveden je mehanizam USB4STREAM za prenos podataka između računara povezanih kablom preko USB4 priključaka. Dodan je uređaj /dev/tbstreamX, pomoću kojeg je moguće čitati i pisati podatke koristeći standardne funkcije read() i write() slično čitanju i pisanju u datoteke. Na primer, na jednom hostu može se poslati informacija komandom „echo hello > /dev/tbstream0“, a na drugom se može pročitati komandom „cat /dev/tbstream0“. Mehanizam USB4STREAM može se kombinovati s mogućnošću uspostavljanja mrežne veze preko USB4 kabla (thunderbolt_net) ili koristiti odvojeno u slučaju prenosa podataka između aplikacija koje ne podržavaju mrežne sokete.
    • Uključena je druga serija izmena za prekid podrške procesorima i486. Uklonjeno je više od 13 redova koda vezanih za simulaciju jedinice za izračunavanje sa pomičnom zarezom za procesore bez FPU. Uklonjena je podrška za procesore i486 bez hardverskih operacija CX8 (uporedi i zameni 8 bajtova) i TSC (brojač ciklusa CPU koji se koristi u planeru zadataka), čiji je kod za simulaciju uklonjen.
    • Objavljena je podrška koja više nije održavana (orphaned) za procesore AMD Geode, korišćene u računaru OLPC XO-1.
    • Dodana je podrška za ažuriranje implementacije mehanizma Intel TDX (Trusted Domain Extensions), korišćenog za enkripciju radne memorije gostujućih sistema. TDX je implementiran u obliku posebnog programskog runtime modula, koji tokom inicijalnog pokretanja prebacuje BIOS iz Flash memorije u radnu memoriju. U kernel su dodate mogućnosti za upravljanje ovim modulom i zamenu novijom verzijom na aktivnom sistemu bez potrebe za ponovnim pokretanjem.
    • Uveden je novi planer raspodjele GPU resursa (Fair GPU scheduler), koji se koristi za određivanje redoslijeda izvršavanja GPU zadataka koje šalju procesi koji koriste GPU. Umjesto korištenja tradicionalne FIDO-queue za zahtjeve prema GPU, novi planer koristi mehanizme pravedne raspodjele resursa, inspirirane planerom zadataka CFS (Completely Fair Scheduler) koji primjenjuje raspored sa vremenom prijelaza na izvršenje sljedećeg procesa. Najznačajniji učinak korištenja novog planera primjetan je pri paralelnom izvršavanju interaktivnih zadataka koji intenzivno koriste GPU. U posljednjem trenutku prije izdavanja jezgre 7.2, uključivanje Fair GPU schedulera je otkazano i vraćen je stari FIFO-planer zbog potrebe za otklanjanjem grešaka koje dovode do smanjenja performansi i 100% opterećenja GPU-a prilikom pokretanja pojedinih igara u Proton.
    • Promjene u eBPF podsustavu: Dodana je mogućnost pridruživanja jedne BPF-programa više točkama praćenja (tracepoint). U BPF-programama, vezanim uz točke praćenja, dodana je mogućnost pristupa memoriji komponenti koje rade u korisničkom prostoru, s pravilnom obradom poziva prema nealokiranim stranicama memorije (page fault). U sustavni poziv bpf() dodana je podrška za tipične atribute (log_buf, log_size, log_level i log_true_size), koja omogućava unifikaciju prijenosa metapodataka u svim BPF naredbama, ne ograničavajući se samo na BPF_PROG_LOAD, BPF_BTF_LOAD i BPF_MAP_CREATE. Uklonjeno je ograničenje na prijenos više od 5 parametara u BPF funkcijama. Dodana je mogućnost sigurnog pristupa zajedničkoj memoriji bpf_arena bez straha od pozivanja nealokiranih stranica memorije (page fault). Implementirana je nova verzija strukture BPF hash mapa, koja dopušta dinamičko mijenjanje veličine.
    • Optimizirano je formiranje izlaza „/proc/interrupts” sa statistikama prekida, kao i modernizirane strukture za pohranu brojača prekida i dodano keširanje.
    • Povećana je brzina generiranja datoteke „/proc/filesystems”, koja se koristi u libselinux.
    • V načrtovalniku nalog je bila uvedena podpora za uravnoteženje obremenitve med jedri CPU, ki upošteva stanje notranje predpomnilnika procesorja. Načrtovalnik zdaj poskuša skupiti procese, ki uporabljajo skupne vire, na primer niti enega procesa, za njihovo uporabo v kontekstu istega predpomnilnika najvišje ravni, kar povečuje učinkovitost dostopa do podatkov zaradi višje verjetnosti, da se potrebni podatki nahajajo v predpomnilniku.
    • V mehanizmu SCHED_EXT, ki omogoča uporabo BPF za ustvarjanje načrtovalnikov CPU, je bila nadalje razširjena možnost za ustvarjanje vključenih načrtovalnikov (sub-scheduler), s pomočjo katerih je mogoče za vsak cgroup uporabiti svoj načrtovalnik nalog.
    • Nadaljuje se prenos sprememb iz veje Rust-for-Linux, povezanih z uporabo jezika Rust kot drugega jezika za razvoj gonilnikov in modulov jedra (podpora za Rust ni privzeto aktivirana in ne vpliva na vključitev Rust v obvezne gradbene odvisnosti jedra). Možnost uporabe Rust v jedru je bila uvedena za arhitekturo s390. Vključena je bila tudi knjižnica "zerocopy" z hitrimi primi pridelave spomina za kodo v načinu "unsafe".
    • Minimalna različica orodij LLVM, potrebna za gradnjo jedra, je bila dvignjena na 17.0.1.
    • V minimalistični knjižnici C nolibc, ki je vključena v izvorna besedila jedra Linux in nudi ovitek nad osnovnimi sistemskimi klici, je bila izvedena podpora za arhitekturi OpenRISC in 32-bit PA-RISC.
    • V podrejo zamenjave (swap) so bile uvedene optimizacije, ki povečujejo zmogljivost in zmanjšujejo porabo pomnilnika v sami podreji z odpravo stroškov pri shranjevanju statičnih metapodatkov in poenotenjem dela z anonimnim in skupnim spominom pri uporabi foliantov. Zmanjšanje porabe pomnilnika je precej opazno; na primer, pri montaži swap particije velikosti 1 TB opazimo zmanjšanje porabe pomnilnika za približno 512 MB.
    • Povečana je učinkovitost mehanizma izmetavanja pomnilnika, ki odstranjuje ali prenaša v zamenjavo področja pomnilnika za sprostitev pomnilnika, ko ga v sistemu primanjkuje. Pri nekaterih vrstah obremenitve, na primer pri testiranju MongoDB z uporabo YCSB (Yahoo! Cloud Serving Benchmark), opazimo povečanje zmogljivosti do 30%.
    • V sistem za sestavljanje je dodana ukaz «make sbom» za generiranje seznama SBOM (Software Bill Of Materials), ki odražajo komponente, knjižnice in odvisnosti, uporabljene v trenutni sestavi jedra, ter informacije o njihovih licencah, pridobljene iz headerjev SPDX v datotekah s kodo.
    • V izvajanju brezimenih kanalov (pipe) je bila optimizacija dela z zaklepanjem (operacije dodeljevanja pomnilnika so bile prenesene iz območja veljavnosti zaklepanja), kar je povečalo prepustnost brezimenih kanalov za 21-48 % in zmanjšalo zakasnitve za 17-33 %.
  • Virtualizacija in varnost
    • V mehanizem dodeljevanja pomnilnika slab (slab allocator) je bila dodana možnost uporabe dodelitvenih žetonov (Allocation Token), ki so bili implementirani v prevajalniku Clang 22. Žetoni omogočajo označevanje operacij dodelitve pomnilnika z edinstvenimi identifikatorji in organiziranje ločenega dodeljevanja različnih tipov objektov za otežitev izkoriščanja ranljivosti, povzročene z vsebnostjo pomnilnika (pri ločevanju ni enostavno izkoristiti prelivanja pomnilnika v enem tipu objektov za poškodovanje drugih tipov objektov).
    • Mehanizem AF_ALG, ki izkorišča ranljivost Copy Fail za spremembo podatkov v predpomnilniku strani, je bil razglašen za zastarelega in je načrtovan za odstranitev v eni od prihodnjih izdaj. AF_ALG omogoča uporabo strojnih pospeševalnikov za kriptografske izračune v Crypto API jedra, vendar se uporablja v precej specifičnih situacijah. V jedru 7.2 je bila iz AF_ALG odstranjena podpora za asinhrono vhodno/izhodno, stare gonilnike in mehanizem zero-copy v implementaciji skcipher in aead. Oblečene so bile samo programske implementacije kriptoalgoritmov, podpora strojnih kripto pospeševalnikov v crypto API jedra pa je bila odstranjena, ker AF_ALG bistveno širi površino napada, ne da bi prinesel kakršne koli koristi v zmogljivosti v primerjavi z implementacijo kriptografije v uporabniškem prostoru. AF_ALG je bil uporabljen v orodju Cryptsetup, vendar je bila njegova podpora odstranjena v nedavni izdaji 2.8.7.
    • V mehanizem IMA (Integrity Measurement Architecture), ki omogoča zunanjim storitvam, da preverijo stanje podsistemov jedra, da se prepričajo o njihovi pristnosti, je bila dodana podpora za izvoz notranjih tabel z rezultati meritev v uporabniški prostor z odstranitvijo iz jeder pomnilnika za varčevanje s pomnilnikom.
    • V modulu Landlock, ki neprivilegiranim programom zagotavlja sredstva za omejevanje uporabe objektov jedra Linux (hierarhije datotek, omrežnih soketov, ioctl itd.), je bila dodana podpora za upravljanje dostopa do UDP-soketov, poleg tega pa možnost selektivnega izklopa beleženja informacij o blokiranju objektov, da se prepreči zasičenje dnevnika z nesorazmernimi informacijami.
    • Jadro je osvobojeno uporabe funkcije strncpy(), ki kopira določeno število bajtov iz vhodnega niza. Uporaba strncpy() je predstavljala nevarnost za napake zaradi izpuščanja ničelnega znaka na koncu niza ali dodatnega polnjenja z ničlami. Namesto strncpy() je priporočljivo uporabljati funkciji strscpy() in strscpy_pad() za kopiranje nizov, ki se končajo z ničelnim znakom, ter strtomem_pad(), memcpy_and_pad() in memcpy() za kopiranje nizov znanega fiksnega velikosti. Delo na osvobajanju jedra od uporabe strncpy() se je začelo leta 2020 in zahtevalo sprejetje 362 sprememb s strani 70 razvijalcev.
    • V hipervizor KVM je bila dodana podpora za razširitve Intel MBEC (Mode-Based Execution Control) in AMD GMET (Guest-Mode Execution Trap), ki omogočajo ločeno obravnavo pravic za izvajanje kode za jedro in prostor uporabnika v gostujočih sistemih v tabelah prevajanja pomnilnika. Prej so razširitve strojne virtualizacije Intel in AMD omogočale označevanje strani pomnilnika kot dostopne za izvajanje z enim bitom s programsko ločitvijo pravic za jedro in prostor uporabnika na ravni hipervizorja. Uporaba MBEC in GMET daje možnost izključiti preverjanja pooblastil na strani hipervizorja in znatno zmanjšati intenzivnost virov za prenos nadzora iz gostujočega sistema na hipervizor VMexit.
  • Mrežna podsistem
    • Izvedba razširitve TCP-AO (TCP Authentication Option, RFC 5925) je prešla na uporabo nove kriptografske knjižnice libcrypto, kar je poenostavilo kodo in povečalo učinkovitost delovanja. TCP-AO omogoča preverjanje TCP-glav s MAC-kodami (Message Authentication Code), pri čemer uporablja sodobnejše algoritme HMAC-SHA-1-96 in AES-128-CMAC-96 namesto prej razpoložljive možnosti TCP-MD5, temelječe na zastarelem algoritmu MD5.
    • Število podniti, podprtih za povezave Multipath TCP (MPTCP), je povečano s 8 na 64.
    • Nadaljuje se delo na zmanjšanju uporabe globalne blokade rtnl_lock v omrežnem skladu jedra.
    • Iz jedra je odstranjena realizacija protokolskega sklada AppleTalk, ki je bil uporabljen v računalnikih Apple od leta 1985 in je bil v 90. letih nadomeščen s TCP/IP. Poleg tega so odstranjeni komponenti tehnologije prenosov podatkov ATM, ki niso povezani s PPPoATM, ter omrežni vmesniki ARCnet na osnovi vodil ISA in PCMCIA, Bluetooth adapterji s PCMCIA vmesnikom, TLS pospeševalniki Chelsea, koda za integracijo TLS s sockmap in podpora frekvenčnim pasovom 5/10 MHz v brezžičnem skladu cfg80211/mac80211. Zaradi nerešenih težav z zaklepi in pomanjkanja vzdrževanja je bila specifična realizacija pospeševanja obdelave TLS na osnovi TCP Offload Engine odstranjena (bolj razširjena realizacija TLS offload je ohranjena). Koda za združljivost s 32-bitnimi x_tables na 64-bitnih sistemih je bila izklopljena in načrtovana za odstranitev.
    • V gonilniku pppoe je bila dodana podpora mehanizmom GRO (Generic Receive Offload) in GSO (Generic Segmentation Offload) za strojno pospeševanje ponovne sestave in segmentacije paketov. Uporaba GRO in GSO omogoča znatno povečanje prepustnosti za vhodni promet, na primer na napravah MediaTek MT7621 v konfiguraciji z prevajalnikom naslovov se je maksimalna prepustnost povečala s 130 Mbit/s na 630 Mbit/s.
  • Oprema
    • V gonilniku AMDGPU je prišla začetna podpora za tehnologijo HDMI 2.1 FRL (Fixed Rate Link), ki omogoča prenos nesnanjenih videov z ločljivostjo 4K/120Hz in 8K/60Hz. Pred tem realizacije podpore za HDMI 2.1 dolgo časa ni bilo mogoče doseči v odprtih gonilnikih zaradi licenčnih zahtev HDMI Foruma, vendar je podjetje AMD sedaj uspelo uskladiti to realizacijo.
    • V gonilniku i915 je bila dodana podpora za nastavitev barve ozadja, ki jo upravlja prikazni krmilnik. Uvedena je bila parametra pin_params.needs_low_address.
    • Nadaljuje se delo na drm-gonilniku (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe, ki se uporablja v grafičnih karticah Intel družine Arc in integrirani grafiki, ki začnejo s procesorji Tiger Lake. Dodana je bila začetna podpora za platformo CRI (Crescent Island). Za dGPU platforme Xe3p je bil uveden sistemski krmilnik.
    • V gonilniku Nouveau so bile rešene težave z GPU NVIDIA GA100.
    • V gonilniku v3d je bila dodana možnost upravljanja z energijsko porabo v3D GPU na ploščah Raspberry Pi.
    • Nadaljevanje integracije komponent GPU Nova za NVIDIA, opremljenih GSP-firmware, ki se uporablja od serije NVIDIA GeForce RTX 2000, ki temeljijo na mikroarhitekturi Turing. Država je napisana v jeziku Rust. Dodana je podpora za GPU NVIDIA GA100 ter serijo Hopper in Blackwell.
    • Dodana podpora za ARM-platforme, SoC in naprave: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.

Ob tem je latinskoameriška Fundacija prostega programske opreme oblikovala različico popolnoma prostega jedra 7.2 — Linux-libre 7.2-gnu, očiščenega od elementov firmware in gonilnikov, ki vsebujejo nelicne komponente ali odlomke kode, katerih uporaba je omejena s proizvajalcem. V izdanju 7.2 je bila očiščena nova gonilnika rt722-sdca in tac5xx2. Posodobljen je bil koda čiščenja v gonilnikih amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 in mt792x. Opravljena je bila korekcija vmesnikov za nalaganje firmware. Očiščena so imena blobov v dts-datotekah (devicetree) za ARM-čipe.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster