Izdanje kernela Linux 7.2

Nakon dva mjeseca razvoja, Linus Torvalds je objavio kernel. Linux 7.2. Među najznačajnijim promjenama: mehanizam strujanja podataka USB4STREAM, optimizacije performansi btrfs, xfs i ext4, nastavak uklanjanja koda za podršku i486 CPU-a, mogućnost stvaranja ugniježđenih SCHED_EXT planera, smanjena potrošnja memorije u swap podsustavu, ubrzane neimenovane cijevi, podrška za Intel MBEC i AMD GMET proširenja u KVM-u, uklanjanje AppleTalk protokola, početna podrška za HDMI 2.1 FRL u AMDGPU upravljačkom programu.

Glavne nove značajke u kernelu 7.2 (1, 2, 3):

  • Diskovni podsustav, I/O i datotečni sustavi
    • U mehanizmu iomap uklonjen je dodatni poziv funkcije memset za već dovršene iteracije u funkciji iomap_iter(), što je, uz visoki intenzitet ulazno/izlaznih operacija na brzim NVMe diskovima, povećalo broj ulazno/izlaznih operacija u sekundi (IOPS) za 5% u testovima provedenim korištenjem datotečnih sustava ext4 i xfs.
    • XFS je proglašen stabilnim za podršku zonskih uređaja za pohranu (dijeljenje grupa blokova ili sektora u zone, u koje je dopušteno samo sekvencijalno dodavanje podataka, ažuriranje cijele grupe blokova).
    • Btrfs sada prema zadanim postavkama podržava velike folije, smanjujući opterećenje i poboljšavajući performanse tijekom intenzivnog sekvencijalnog I/O. Dodana je eksperimentalna podrška za ogromne folije (do 2 MB). Dodan je novi ioctl, GET_CSUMS, za dohvaćanje informacija o kontrolnom zbroju u korisničkom prostoru, na primjer, za uslužni program mkfs i optimizaciju deduplikacije. Performanse sekvencijalnog pisanja povećane su za 15%, a performanse izravnog I/O za 59%.
    • Mehanizam "brzog potvrđivanja" datotečnog sustava Ext4 značajno je redizajniran kako bi se uklonili sukobi i zastoji. Dodan je izvoz statistike snimki inodea putem /proc/fs/ext4/*/fc_info. Optimizirane su performanse izračuna hash-a direktorija (gotovo udvostručena brzina za imena od 255 znakova, 27% za imena od 64 znaka i 11% za imena od 32 znaka).
    • F2FS sada podržava vraćanje pogreške fserror, što omogućuje praćenje problema s datotečnim sustavom iz korisničkog prostora. Vrijeme provedeno u obradi prekida je smanjeno.
    • Novi dm-inlinecrypt rukovatelj dodan je u Device Mapper (DM) za transparentno šifriranje i dešifriranje blokovskih uređaja pomoću hardverskih uređaja s funkcionalnošću inline šifriranja.
    • Pružena je dokumentacija o dodavanju novih datotečnih sustava u kernel.
    • U NFS-u je zadana veličina bloka povećana na 4 MB na sustavima s najmanje 16 GB RAM-a (možete koristiti /proc/fs/nfsd/max_block_size za ručnu promjenu veličine bloka). Dodana je podrška za delegiranje direktorija, što omogućuje izvođenje operacija s određenim direktorijem određeno vremensko razdoblje bez provjere promjena stanja na poslužitelja.
    • SMB poslužitelj sada podržava datoteke pohranjene u komprimiranom obliku, kao i kompresiju podataka tijekom prijenosa preko mreže.
    • Nova NTFS implementacija (ntfsplus) dodaje podršku za simboličke veze. Windows i osigurana je ispravna obrada mnogih vrsta korupcije metapodataka.
    • Uklonjen je fscache backend za keširanje podataka EROFS-a (Enhanced Read-Only File System), koji je zastario prije dvije godine.
    • Ceph FS sada podržava ručno resetiranje klijentskih sesija.
    • 9P datotečni sustav je optimiziran za poboljšanje performansi u scenarijima kao što su izrada projekata.
    • Zastavice za dohvaćanje informacija o osjetljivosti datotečnog sustava na velika i mala slova dodane su sistemskom pozivu file_getattr(). Zastavica FS_XFLAG_CASEFOLD označava da se provjera imena datoteke provodi bez razlikovanja velikih i malih slova, a zastavica FS_XFLAG_CASENONPRESERVING označava da se informacije o velikim i malim slovima ne čuvaju prilikom stvaranja novih imena datoteka. Ove zastavice mogu se koristiti u NFS klijentima koji ne razlikuju velika i mala slova.
    • Zastavica O_EMPTYPATH dodana je sistemskom pozivu openat2(), što omogućuje prosljeđivanje putanje prazne datoteke. U ovom slučaju, put do datoteke koja se otvara određuje se na temelju proslijeđenog deskriptora datoteke.
    • Zastavica OPENAT2_REGULAR dodana je sistemskom pozivu openat2(), što dopušta otvaranje samo regularnih datoteka (vratit će se greška EFTYPE ako se pokuša otvoriti posebna datoteka poput socketa, pipea ili uređaja).
  • Memorija i usluge sustava
    • Mehanizam USB4STREAM implementiran je za strujanje podataka između računala spojenih putem USB4 priključaka. Dodan je uređaj /dev/tbstreamX koji omogućuje čitanje i pisanje podataka pomoću standardnih funkcija read() i write(), slično čitanju i pisanju datoteka. Na primjer, na jednom hostu možete slati informacije pomoću naredbe "echo hello > /dev/tbstream0", a na drugom ih čitati pomoću naredbe "cat /dev/tbstream0". Mehanizam USB4STREAM može se kombinirati s mogućnošću uspostavljanja mrežne veze putem USB4 kabela (thunderbolt_net) ili koristiti zasebno za prijenos podataka između aplikacija koje ne podržavaju mrežne utičnice.
    • Uključena je druga serija promjena za uklanjanje podrške za i486 procesore. Uklonjeno je preko 13 redaka koda vezanih uz emulaciju jedinica s pomičnim zarezom za procesore bez FPU-a. Uklonjena je podrška za i486 procesore bez hardverskih operacija CX8 (usporedi i zamijeni 8 bajtova) i TSC (brojač ciklusa CPU-a koji se koristi u raspoređivaču zadataka), kao i kod za emulaciju za njih.
    • Podrška za AMD Geode procesore korištene u OLPC XO-1 računalu najavljena je kao napuštena.
    • Dodana je podrška za ažuriranje implementacije Intelovog TDX-a (Trusted Domain Extensions), mehanizma koji se koristi za šifriranje RAM-a gostujućeg sustava. TDX je implementiran kao poseban softverski modul za izvođenje koji BIOS prenosi iz flash memorije u RAM tijekom pokretanja. Jezgra sada uključuje mogućnosti upravljanja ovim modulom i njegove zamjene novijom verzijom na pokrenutom sustavu bez potrebe za ponovnim pokretanjem.
    • Implementiran je novi planer alokacije GPU resursa (Fair GPU scheduler). Koristi se za određivanje redoslijeda kojim se rad koji predaju procesi koji koriste GPU izvršava na GPU-u. Umjesto korištenja tradicionalnog FIDO reda čekanja za GPU zahtjeve, novi planer koristi mehanizme pravedne alokacije resursa temeljene na planeru zadataka Completely Fair Scheduler (CFS), koji koristi plan pokretanja s vremenom prijelaza za sljedeći proces. Najuočljiviji učinak novog planera uočen je tijekom paralelnog izvršavanja interaktivnih zadataka koji uvelike koriste GPU. U zadnji čas prije izlaska kernela 7.2, Fair GPU scheduler je deaktiviran, a stari FIFO planer je vraćen zbog potrebe za otklanjanjem pogrešaka regresije, što je uzrokovalo smanjenje performansi i 100% iskorištenost GPU-a pri pokretanju određenih igara u Protonu.
    • Promjene u eBPF podsustavu: Dodana je mogućnost povezivanja jednog BPF programa s više točaka praćenja. BPF programi povezani s točkama praćenja sada mogu pristupiti memoriji komponenti korisničkog prostora, uz ispravno rukovanje nedodijeljenim memorijskim stranicama (pogreškama stranica). Sistemski poziv bpf() sada podržava standardne atribute (log_buf, log_size, log_level i log_true_size), što omogućuje objedinjeni prijenos metapodataka u svim BPF naredbama, ne ograničavajući se na BPF_PROG_LOAD, BPF_BTF_LOAD i BPF_MAP_CREATE. Uklonjeno je ograničenje prosljeđivanja najviše 5 parametara BPF funkcijama. Dodana je mogućnost sigurnog pristupa dijeljenoj memoriji bpf_arena bez straha od pristupa nedodijeljenim memorijskim stranicama (pogreškama stranica). Implementirana je nova verzija BPF strukture hash mape, koja omogućuje dinamičku promjenu veličine.
    • Optimizirano je generiranje izlaza "/proc/interrupts" sa statistikom prekida, a modernizirane su strukture za pohranjivanje brojača prekida i dodano je predmemoriranje.
    • Generiranje datoteke "/proc/filesystems" koja se koristi u libselinuxu je ubrzano.
    • Raspoređivač zadataka sada podržava uravnoteženje opterećenja između jezgri CPU-a, uzimajući u obzir stanje interne predmemorije procesora. Raspoređivač sada pokušava grupirati procese koristeći dijeljene resurse, poput niti unutar jednog procesa, kako bi dijelili istu predmemoriju visoke razine, poboljšavajući učinkovitost pristupa podacima povećanjem vjerojatnosti da će se potrebni podaci pronaći u predmemoriji.
    • Mehanizam SCHED_EXT, koji omogućuje korištenje BPF-a za stvaranje CPU planera, nastavio je implementirati mogućnost stvaranja ugniježđenih planera (podplanera), koji omogućuju svakoj cgrupi korištenje vlastitog planera zadataka.
    • Nastavak migracije promjena iz Rust-for-branchLinux, vezano uz korištenje Rusta kao drugog jezika za razvoj upravljačkih programa i modula kernela (podrška za Rust nije omogućena prema zadanim postavkama i ne uključuje Rust kao obaveznu ovisnost izgradnje kernela). Podrška za Rust u kernelu implementirana je za arhitekturu s390. Uključen je paket "zerocopy", koji pruža brze memorijske primitive za kod u "nesigurnom" načinu rada.
    • Minimalna verzija LLVM alata potrebna za izgradnju kernela povećana je na 17.0.1.
    • U minimalističkoj C biblioteci nolibc, koja se isporučuje s izvornim kodom kernela Linux i pruža okvir za osnovne sistemske pozive, podržavajući OpenRISC i 32-bitne PA-RISC arhitekture.
    • Podsustav swap-a optimiziran je za poboljšanje performansi i smanjenje potrošnje memorije unutar samog podsustava uklanjanjem opterećenja pri pohranjivanju statičkih metapodataka i objedinjavanjem anonimne i dijeljene memorije pri korištenju tomova. Smanjenje memorije je prilično značajno; na primjer, montiranje swap particije od 1 TB smanjuje potrošnju memorije za približno 512 MB.
    • Poboljšane su performanse mehanizma za uklanjanje memorije, koji briše ili premješta memoriju u swap prostor kako bi oslobodio memoriju kada je sustav pod opterećenjem. Pod određenim opterećenjima, kao što je testiranje MongoDB-a pomoću YCSB-a (Yahoo! Cloud Serving Benchmark), uočeno je povećanje performansi do 30%.
    • Naredba "make sbom" dodana je u sustav za izradu kako bi generirala SBOM (Software Bill Of Materials) popise koji odražavaju komponente, biblioteke i ovisnosti korištene u trenutnoj izradi kernela, kao i njihove podatke o licenci dobivene iz SPDX zaglavlja u datotekama koda.
    • Implementacija neimenovanih cijevi optimizirana je za rukovanje bravama (operacije dodjeljivanja memorije premještene su izvan opsega brave), što je povećalo propusnost neimenovanih cijevi za 21-48% i smanjilo latenciju za 17-33%.
  • Virtualizacija i sigurnost
    • Alokator slaba sada podržava korištenje tokena za alokaciju, implementiranih u kompajleru Clang 22. Tokeni omogućuju jedinstvene identifikatore za operacije alokacije memorije i odvojenu alokaciju različitih vrsta objekata kako bi se otežalo iskorištavanje ranjivosti prelijevanja međuspremnika (s odvajanjem, prelijevanje međuspremnika u jednoj vrsti objekta nije lako iskoristiti za oštećenje drugih vrsta objekata).
    • Mehanizam AF_ALG, iskorišten u ranjivosti Copy Fail za izmjenu podataka u predmemoriji stranice, zastario je i planirano je uklanjanje u budućem izdanju. AF_ALG omogućuje hardverske akceleratore za kriptografska izračunavanja u Crypto API-ju kernela, ali se koristi u prilično specifičnim situacijama. U kernelu 7.2, podrška za asinhroni I/O, naslijeđene upravljačke programe i mehanizam nulte kopije u implementacijama skcipher i aead uklonjena je iz AF_ALG. Zadržane su samo softverske implementacije kriptografskih algoritama, a podrška za hardverske kriptografske akceleratore u Crypto API-ju kernela je uklonjena, jer AF_ALG značajno proširuje površinu napada, ali ne pruža nikakvu prednost u performansama u usporedbi s implementacijama kriptografije u korisničkom prostoru. AF_ALG se koristio u Cryptsetup alatima, ali je njegova podrška uklonjena u nedavnom izdanju 2.8.7.
    • Mehanizam IMA (Integrity Measurement Architecture), koji omogućuje vanjskoj usluzi provjeru stanja podsustava jezgre kako bi se osigurala njihova autentičnost, dopunjen je podrškom za izvoz internih tablica s rezultatima mjerenja u korisnički prostor i njihovo brisanje iz međuspremnika jezgre radi uštede memorije.
    • U modulu Landlock, koji neprivilegiranim programima pruža sredstva za ograničavanje korištenja objekata kernela Linux (hijerarhije datoteka, mrežni utičnice, ioctl itd.), dodana je podrška za kontrolu pristupa UDP utičnicama, kao i mogućnost selektivnog onemogućavanja ispisa informacija o zaključavanju objekata u zapisnik kako bi se spriječilo zatrpavanje zapisnika nebitnim informacijama.
    • Jezgra je zastarjela u korištenju funkcije strncpy(), koja kopira određeni broj bajtova iz ulaznog niza. Korištenje strncpy() stvorilo je rizik od pogrešaka zbog nedostajućeg null znaka na kraju niza ili dodatnog popunjavanja nulama. Umjesto strncpy(), preporučuje se korištenje funkcija strscpy() i strscpy_pad() za kopiranje nizova koji završavaju null znakom, kao i strtomem_pad(), memcpy_and_pad() i memcpy() za kopiranje nizova poznate fiksne veličine. Rad na zastarivanju korištenja strncpy() u jezgri započeo je 2020. godine i zahtijevao je 362 commita od 70 programera.
    • U hipervizoru KVM Dodana je podrška za proširenja Intel MBEC (Mode-Based Execution Control) i AMD GMET (Guest-Mode Execution Trap), koja omogućuju odvojeno rukovanje pravima izvršavanja kernela i korisničkog prostora u gostujućim sustavima u tablicama prijevoda memorije. Prije su proširenja za virtualizaciju hardvera Intela i AMD-a omogućavala označavanje memorijskih stranica kao izvršnih s samo jednim bitom, uz softversko odvajanje prava kernela i korisničkog prostora na razini hipervizora. Korištenje MBEC-a i GMET-a eliminira provjere dozvola na strani hipervizora i značajno smanjuje prijenose kontrola s gostujućeg sustava na VMexit hipervizor koji zahtijevaju puno resursa.
  • Mrežni podsustav
    • Proširenje TCP-AO (TCP Authentication Option, RFC 5925) migrirano je u novu kriptografsku biblioteku libcrypto, čime je pojednostavljen kod i poboljšane njegove performanse. TCP-AO omogućuje provjeru TCP zaglavlja pomoću MAC (Message Authentication Code) kodova, koristeći modernije algoritme HMAC-SHA-1-96 i AES-128-CMAC-96, zamjenjujući prethodno dostupnu opciju TCP-MD5, koja se oslanjala na zastarjeli algoritam MD5.
    • Broj podstreamova podržanih za Multipath TCP (MPTCP) veze povećan je s 8 na 64.
    • Nastavio se rad na smanjenju korištenja globalne brave rtnl_lock u mrežnom stogu kernela.
    • Jezgra je uklonila implementaciju AppleTalk protokolnog stoga, koji se koristio u Apple računalima od 1985. godine, a zamijenjen je 1990-ih TCP/IPOsim toga, uklonjene su komponente tehnologije prijenosa podataka ATM koje nisu povezane s PPPoATM-om, kao i ARCnet mrežna sučelja temeljena na ISA i PCMCIA sabirnicama, Bluetooth adapteri s PCMCIA sučeljem, Chelsea TLS akceleratori, kod za integraciju TLS-a sa sockmapom i podrška za frekvencijske pojaseve od 5/10 MHz u bežičnom stogu cfg80211/mac80211. Zbog neriješenih problema s blokiranjem i nedostatka održavatelja, uklonjena je specifična implementacija ubrzanja obrade TLS-a temeljena na TCP Offload Engineu (zadržana je češća implementacija TLS offloada). Kod za kompatibilnost s 32-bitnim x_tables na 64-bitnim sustavima je onemogućen i planirano je uklanjanje.
    • PPpoe upravljački program sada podržava mehanizme GRO (Generic Receive Offload) i GSO (Generic Segmentation Offload) za hardversko ubrzanje ponovnog sastavljanja i segmentacije paketa. Korištenje GRO i GSO značajno povećava propusnost dolaznog prometa. Na primjer, na MediaTek MT7621 uređajima konfiguriranim s prevoditeljem adresa, maksimalna propusnost povećala se sa 130 Mbit/s na 630 Mbit/s.
  • Оборудование
    • AMDGPU upravljački program sada uključuje početnu podršku za HDMI 2.1 FRL (Fixed Rate Link) tehnologiju, omogućujući prijenos nekomprimiranog videa pri 4K/120Hz i 8K/60Hz. Podrška za HDMI 2.1 prije je bila nedostižna u upravljačkim programima otvorenog koda zbog zahtjeva za licenciranje HDMI Foruma, ali AMD je sada osigurao sličnu implementaciju.
    • Upravljački program i915 sada podržava postavljanje boje pozadine za kontroler zaslona. Implementiran je parametar pin_params.needs_low_address.
    • Nastavio se rad na Xe DRM (Direct Rendering Manager) upravljačkom programu za GPU-ove temeljene na Intel Xe arhitekturi, koja se koristi u grafičkim karticama Intel Arc serije i integriranoj grafici, počevši od Tiger Lake procesora. Dodana je početna podrška za CRI (Crescent Island) platformu. Implementiran je sistemski kontroler za Xe3p dGPU platforme.
    • Nouveau upravljački program rješava probleme s NVIDIA GA100 GPU-om.
    • v3d upravljački program je ažuriran kako bi uključio mogućnost upravljanja potrošnjom energije v3D GPU-a na Raspberry Pi pločama.
    • Nastavili smo integrirati Nova komponente upravljačkog programa za NVIDIA GPU-ove opremljene GSP firmwareom koji se koristi od NVIDIA GeForce RTX 2000 serije temeljene na Turing mikroarhitekturi. Upravljački program napisan je u Rustu. Dodana je podrška za NVIDIA GA100, Hopper i Blackwell serije GPU-ova.
    • Dodana podrška za ARM ploče, SoC i uređaje: 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.

Istovremeno, Latinoamerička zaklada za slobodni softver stvorila je verziju potpuno besplatne jezgre 7.2 - Linux-libre 7.2-gnu, očišćen od elemenata firmvera i upravljačkih programa koji sadrže neslobodne komponente ili dijelove koda s ograničenim opsegom od strane proizvođača. Izdanje 7.2 uključuje čišćenje blobova za nove upravljačke programe rt722-sdca i tac5xx2. Ažuriran je kod za čišćenje upravljačkih programa amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 i mt792x. Prilagođena su sučelja za učitavanje firmvera. Očišćena su imena blobova u datotekama devicetree (dts) za ARM čipove.

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster