Izdanje jezgre Linuxa 5.19

Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje Linux kernela 5.19. Među najznačajnijim promjenama: podrška za procesorsku arhitekturu LoongArch, integracija "BIG TCP" zakrpa, način rada na zahtjev u fscacheu, uklanjanje koda radi podrške a.out formatu, mogućnost korištenja ZSTD-a za kompresiju firmvera, sučelje za upravljanje izbacivanjem memorije iz korisničkog prostora, povećanje pouzdanosti i performansi generatora pseudoslučajnih brojeva, podrška za Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) i ARM SME (Scalable Matrix Extension) proširenja.

U najavi, Linus je rekao da će najvjerojatnije sljedeće izdanje kernela biti označeno brojem 6.0, budući da je grana 5.x prikupila dovoljno izdanja za promjenu prvog broja u broju verzije. Promjena numeracije provodi se iz estetskih razloga i formalni je korak koji ublažava nelagodu zbog gomilanja velikog broja brojeva u seriji.

Linus je također spomenuo da je koristio Apple prijenosno računalo temeljeno na ARM64 arhitekturi (Apple Silicon) s Linux okruženjem temeljenim na Asahi Linux distribuciji za izradu izdanja. To nije Linusova primarna radna stanica, ali on je koristio platformu da testira njezinu prikladnost za rad s kernelom i da osigura da može proizvoditi izdanja kernela dok putuje s laganim prijenosnim računalom pri ruci. Prethodno, prije mnogo godina, Linus je imao iskustva s korištenjem Appleove opreme za razvoj - jednom je koristio računalo temeljeno na ppc970 CPU-u i prijenosno računalo Macbook Air.

Nova verzija uključuje 16401 popravka od 2190 programera (u prethodnom izdanju bilo je 16206 popravka od 2127 programera), veličina zakrpe je 90 MB (promjene su utjecale na 13847 datoteka, dodano je 1149456 redaka koda, 349177 redaka je izbrisano). Oko 39% svih promjena uvedenih u 5.19 odnosi se na upravljačke programe uređaja, približno 21% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 11% se odnosi na mrežni stog, 4% se odnosi na sustav datoteka, a 3% povezani su s unutarnjim podsustavima jezgre.

Ključne inovacije u kernelu 5.19:

  • Diskovni podsustav, I/O i datotečni sustavi
    • Datotečni sustav EROFS (Enhanced Read-Only File System), namijenjen za korištenje na particijama samo za čitanje, pretvoren je u korištenje podsustava fscache, koji omogućuje predmemoriju podataka. Promjena je značajno poboljšala performanse sustava u kojima se veliki broj spremnika pokreće iz slike temeljene na EROFS-u.
    • Podsustavu fscache dodan je način čitanja na zahtjev koji se koristi za optimizaciju EROFS-a. Novi način vam omogućuje organiziranje predmemoriranja čitanja iz FS slika smještenih u lokalnom sustavu. Za razliku od inicijalno dostupnog načina rada, koji je fokusiran na predmemoriju u lokalnom datotečnom sustavu podataka koji se prenose kroz mrežne datotečne sustave, način rada “na zahtjev” delegira funkcije dohvaćanja podataka i njihovog pisanja u predmemoriju zasebnom pozadinski proces koji se izvodi u korisničkom prostoru.
    • XFS pruža mogućnost pohranjivanja milijardi proširenih atributa u i-čvor. Maksimalan broj ekstenata za jednu datoteku povećan je s 4 milijarde na 247. Implementiran je način za atomsko ažuriranje nekoliko atributa proširene datoteke odjednom.
    • Datotečni sustav Btrfs optimizirao je rad s bravama, što je omogućilo približno 7% povećanja performansi pri izravnom pisanju u načinu rada Nowait. Performanse rada u načinu rada NOCOW (bez kopiranja na pisanje) povećane su za približno 3%. Opterećenje predmemorije stranice prilikom pokretanja naredbe "pošalji" je smanjeno. Minimalna veličina podstranica je smanjena sa 64K na 4K (mogu se koristiti podstranice manje od stranica kernela). Izvršen je prijelaz s korištenja radix stabla na algoritam XArrays.
    • NFS poslužitelju je dodan način za produženje očuvanja stanja zaključavanja koje je postavio klijent koji je prestao odgovarati na zahtjeve. Novi način vam omogućuje da odgodite brisanje zaključavanja do jednog dana osim ako drugi klijent ne zatraži konkurentsko zaključavanje. U normalnom načinu rada, blokada se briše 90 sekundi nakon što klijent prestane odgovarati.
    • Podsustav za praćenje događaja u fanotify FS-u implementira oznaku FAN_MARK_EVICTABLE, pomoću koje možete onemogućiti prikvačivanje ciljnih i-čvorova u predmemoriju, na primjer, da biste zanemarili podgrane bez prikvačivanja njihovih dijelova u predmemoriju.
    • Upravljački program za datotečni sustav FAT32 dodao je podršku za dobivanje informacija o vremenu kreiranja datoteke putem statx sistemskog poziva uz implementaciju učinkovitije i funkcionalnije verzije stat(), koja vraća proširene informacije o datoteci.
    • Učinjene su značajne optimizacije exFAT pogonitelja kako bi se omogućilo istovremeno brisanje grupe sektora kada je aktivan 'dirsync' način rada, umjesto sekvencijalnog brisanja sektor-po-sektor. Smanjenjem broja zahtjeva za blokiranjem nakon optimizacije, izvedba stvaranja velikog broja direktorija na SD kartici porasla je za više od 73-85%, ovisno o veličini klastera.
    • Kernel uključuje prvo korektivno ažuriranje upravljačkog programa ntfs3. Budući da je ntfs3 uključen u 5.15 kernel prošlog listopada, upravljački program nije ažuriran i komunikacija s programerima je izgubljena, ali programeri su sada nastavili s objavljivanjem promjena. Predložene zakrpe eliminirale su pogreške koje su dovele do curenja memorije i padova, riješile probleme s izvršavanjem xfstestova, očistile neiskorišteni kod i popravile pogreške pri upisu.
    • Za OverlayFS implementirana je mogućnost mapiranja korisničkih ID-ova montiranih datotečnih sustava, što se koristi za podudaranje datoteka određenog korisnika na montiranoj stranoj particiji s drugim korisnikom na trenutnom sustavu.
  • Memorija i usluge sustava
    • Dodana početna podrška za arhitekturu skupa instrukcija LoongArch koja se koristi u procesorima Loongson 3 5000, koja implementira novi RISC ISA, sličan MIPS-u i RISC-V. Arhitektura LoongArch dostupna je u tri verzije: skraćena 32-bitna (LA32R), obična 32-bitna (LA32S) i 64-bitna (LA64).
    • Uklonjen kod za podršku formata izvršne datoteke a.out, koji je zastario u izdanju 5.1. Format a.out odavno je zastario na Linux sustavima, a generiranje a.out datoteka nije podržano modernim alatima u zadanim konfiguracijama Linuxa. Učitavač za a.out datoteke može se u potpunosti implementirati u korisnički prostor.
    • Podrška za opcije pokretanja specifične za x86 je ukinuta: nosp, nosmap, nosmep, noexec i noclflush).
    • Ukinuta je podrška za zastarjelu CPU h8300 arhitekturu (Renesas H8/300), koja je dugo bila bez podrške.
    • Proširene mogućnosti koje se odnose na odgovor na otkrivanje podijeljenih zaključavanja ("split locks") do kojih dolazi prilikom pristupa neusklađenim podacima u memoriji zbog činjenice da prilikom izvođenja atomske instrukcije podaci prelaze dvije linije CPU predmemorije. Takve blokade dovode do značajnog pada performansi. Ako je prije prema zadanim postavkama kernel izdavao upozorenje s informacijama o procesu koji je uzrokovao blokadu, sada će se problematični proces dodatno usporiti kako bi se očuvale performanse ostatka sustava.
    • Dodana podrška za IFS (In-Field Scan) mehanizam implementiran u Intelovim procesorima, koji vam omogućuje pokretanje CPU dijagnostičkih testova niske razine koji mogu identificirati probleme koji nisu otkriveni standardnim alatima na temelju kodova za ispravljanje pogrešaka (ECC) ili paritetnih bitova . Provedeni testovi su u obliku firmvera koji se može preuzeti, dizajniranog slično ažuriranjima mikrokoda. Rezultati testa dostupni su putem sysfs-a.
    • Dodana je mogućnost ugradnje bootconfig datoteke u kernel, što omogućuje, uz opcije naredbenog retka, određivanje parametara kernela putem datoteke postavki. Ugradnja se provodi pomoću opcije asemblera 'CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»'. Prethodno se bootconfig određivao pripajanjem na initrd sliku. Integracija u kernel omogućuje korištenje bootconfig-a u konfiguracijama bez initrd-a.
    • Implementirana je mogućnost preuzimanja komprimiranog firmvera korištenjem Zstandard algoritma. Skup kontrolnih datoteka /sys/class/firmware/* dodan je u sysfs, što vam omogućuje pokretanje učitavanja firmvera iz korisničkog prostora.
    • Asinkrono I/O sučelje io_uring nudi novu zastavu, IORING_RECVSEND_POLL_FIRST, koja će, kada je postavljena, prvo poslati mrežnu operaciju koja će se obraditi korištenjem prozivanja, što može uštedjeti resurse u situacijama u kojima je prihvatljiva obrada operacije s određenim kašnjenjem. io_uring je također dodao podršku za socket() sistemski poziv, predložio nove zastavice za pojednostavljenje upravljanja deskriptorima datoteka, dodao "multi-shot" način za prihvaćanje nekoliko veza odjednom u accept() pozivu i dodao operacije za prosljeđivanje NVMe naredbe izravno u uređaj.
    • Arhitektura Xtensa pruža podršku za alat za otklanjanje pogrešaka KCSAN (Kernel Concurrency Sanitizer), dizajniran za dinamičko otkrivanje uvjeta utrke unutar kernela. Dodana je i podrška za način mirovanja i koprocesore.
    • Za arhitekturu m68k (Motorola 68000) implementiran je virtualni stroj (simulator platforme) temeljen na emulatoru Android Goldfish.
    • Za AArch64 arhitekturu implementirana je podrška za Armv9-A SME (Scalable Matrix Extension) ekstenzije.
    • Podsustav eBPF omogućuje pohranjivanje unesenih pokazivača u strukture karte, a također dodaje podršku za dinamičke pokazivače.
    • Predlaže se novi proaktivni mehanizam vraćanja memorije koji podržava kontrolu korisničkog prostora pomoću datoteke memory.reclaim. Zapisivanje broja u navedenu datoteku pokušat će izbaciti odgovarajući broj bajtova iz skupa povezanog s cgroupom.
    • Poboljšana točnost korištenja memorije prilikom sažimanja podataka u swap particiji pomoću mehanizma zswap.
    • Za RISC-V arhitekturu, omogućena je podrška za pokretanje 32-bitnih izvršnih datoteka na 64-bitnim sustavima, dodan je način za vezanje restriktivnih atributa na memorijske stranice (na primjer, za onemogućavanje predmemoriranja), a implementirana je funkcija kexec_file_load(). .
    • Implementacija podrške za 32-bitne Armv4T i Armv5 sustave prilagođena je za korištenje u univerzalnim višeplatformskim verzijama kernela prikladnim za različite ARM sustave.
  • Virtualizacija i sigurnost
    • Podsustav EFI implementira mogućnost povjerljivog prijenosa tajnih informacija na gostujuće sustave bez njihovog otkrivanja glavnom sustavu. Podaci se pružaju putem direktorija security/coco u securityfs.
    • Zaštitni način zaključavanja, koji ograničava pristup root korisnika jezgri i blokira UEFI Secure Boot zaobilazne staze, eliminirao je rupu koja je dopuštala zaobilaženje zaštite manipuliranjem programom za ispravljanje pogrešaka jezgre.
    • Uključene su zakrpe usmjerene na poboljšanje pouzdanosti i performansi generatora pseudoslučajnih brojeva.
    • Prilikom izgradnje pomoću Clang 15, implementirana je podrška za mehanizam za nasumično raspoređivanje struktura jezgre.
    • Mehanizam Landlock, koji vam omogućuje da ograničite interakciju grupe procesa s vanjskim okruženjem, pruža podršku za pravila koja vam omogućuju kontrolu izvršenja operacija preimenovanja datoteka.
    • Podsustav IMA (Integrity Measurement Architecture), dizajniran za provjeru integriteta komponenti operativnog sustava pomoću digitalnih potpisa i hashova, prebačen je na korištenje modula fs-verity za provjeru datoteka.
    • Promijenjena je logika radnji prilikom onemogućavanja neprivilegiranog pristupa podsustavu eBPF - prethodno su bile onemogućene sve naredbe povezane sa sistemskim pozivom bpf(), a počevši od verzije 5.19 ostavljen je pristup naredbama koje ne dovode do stvaranja objekata . Ovo ponašanje zahtijeva povlašteni proces za učitavanje BPF programa, ali tada neprivilegirani procesi mogu komunicirati s programom.
    • Dodana podrška za proširenje AMD SEV-SNP (Secure Nested Paging), koje pruža siguran rad s ugniježđenim tablicama memorijskih stranica i štiti od napada "undeSErVed" i "SEVerity" na AMD EPYC procesore, koji omogućuju zaobilaženje AMD SEV (Secure Encrypted Virtualization ) zaštitni mehanizam.
    • Dodana je podrška za mehanizam Intel TDX (Trusted Domain Extensions), koji vam omogućuje blokiranje pokušaja trećih strana da pristupe šifriranoj memoriji virtualnih strojeva.
    • Upravljački program virtio-blk, koji se koristi za oponašanje blok uređaja, dodao je podršku za I/O korištenjem prozivanja, što je, prema testovima, smanjilo kašnjenje za oko 10%.
  • Mrežni podsustav
    • Paket uključuje niz VELIKIH TCP zakrpa koje vam omogućuju povećanje maksimalne veličine TCP paketa na 4 GB kako biste optimizirali rad internih mreža podatkovnih centara velike brzine. Slično povećanje veličine paketa sa 16-bitnom veličinom polja zaglavlja postiže se implementacijom "jumbo" paketa, čija je veličina u IP zaglavlju postavljena na 0, a stvarna veličina se prenosi u zasebnom 32-bitnom polje u zasebnom priloženom zaglavlju. U testiranju performansi, postavljanje veličine paketa na 185 KB povećalo je propusnost za 50% i značajno smanjilo kašnjenje prijenosa podataka.
    • Nastavljen je rad na integraciji alata u mrežni skup za praćenje razloga za ispuštanje paketa (šifre razloga). Šifra razloga šalje se kada se memorija povezana s paketom oslobodi i dopušta situacije kao što je odbacivanje paketa zbog pogrešaka u zaglavlju, otkrivanje lažiranja rp_filterom, nevažeći kontrolni zbroj, nedostatak memorije, pokrenuta IPSec XFRM pravila, nevažeći redni broj TCP itd.
    • Dodana podrška za vraćanje MPTCP (MultiPath TCP) veza za korištenje regularnog TCP-a u situacijama kada se određene MPTCP značajke ne mogu koristiti. MPTCP je proširenje TCP protokola za organiziranje rada TCP veze s isporukom paketa istovremeno duž nekoliko ruta kroz različita mrežna sučelja povezana s različitim IP adresama. Dodan API za kontrolu MPTCP tokova iz korisničkog prostora.
  • Оборудование
    • Dodano više od 420 tisuća redaka koda koji se odnose na amdgpu upravljački program, od čega su oko 400 tisuća redaka automatski generirane datoteke zaglavlja za podatke ASIC registra u AMD GPU upravljačkom programu, a još 22.5 tisuća redaka pruža početnu implementaciju podrške za AMD SoC21. Ukupna veličina upravljačkog programa za AMD GPU premašila je 4 milijuna linija koda. Uz SoC21, AMD driver uključuje podršku za SMU 13.x (System Management Unit), ažuriranu podršku za USB-C i GPUVM te pripreme za podršku sljedećim generacijama RDNA3 (RX 7000) i CDNA (AMD Instinct) platformi .
    • Upravljački program i915 (Intel) ima proširene mogućnosti vezane uz upravljanje napajanjem. Dodani identifikatori za Intel DG2 (Arc Alchemist) GPU-ove koji se koriste na prijenosnim računalima, pružena početna podrška za platformu Intel Raptor Lake-P (RPL-P), dodane informacije o grafičkim karticama Arctic Sound-M), implementiran ABI za računalne motore, dodan za DG2 kartice podržavaju format Tile4; za sustave temeljene na mikroarhitekturi Haswell implementirana je podrška za DisplayPort HDR.
    • Upravljački program Nouveau prešao je na korištenje rukovatelja drm_gem_plane_helper_prepare_fb; statička dodjela memorije primijenjena je na neke strukture i varijable. Što se tiče korištenja modula jezgre otvorenog koda od strane NVIDIA-e u Nouveau, dosadašnji rad se svodi na prepoznavanje i uklanjanje grešaka. U budućnosti se planira koristiti objavljeni firmware za poboljšanje performansi upravljačkog programa.
    • Dodan je upravljački program za NVMe kontroler koji se koristi u Apple računalima na temelju M1 čipa.

U isto vrijeme, Latinoamerička zaklada za slobodni softver formirala je verziju potpuno besplatnog kernela 5.19 - Linux-libre 5.19-gnu, očišćenu od elemenata firmvera i upravljačkih programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničeno od strane proizvođača. Novo izdanje čisti upravljačke programe za pureLiFi X/XL/XC i TI AMx3 Wkup-M3 IPC. Ažurirani kod za čišćenje mrlja u Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu drajveri i podsustavi. Implementirana je obrada datoteka Qualcomm AArch64 devicetree. Dodana podrška za novu shemu imenovanja komponente Sound Open Firmware. Zaustavljeno čišćenje upravljačkog programa ATM Ambassador, koji je uklonjen iz kernela. Upravljanje čišćenjem mrlja u HDCP-u i Mellanox Coreu premješteno je u zasebne kconfig oznake.

Izvor: opennet.ru

Dodajte komentar