Izdanje kernela Linux 6.8

Nakon dva mjeseca razvoja, Linus Torvalds je objavio kernel. Linux 6.8. Među najznačajnijim promjenama: Xe drajver za Intel GPU-ove, način zaštite za blok uređaje sa montiranim datotečnim sistemima, mehanizam za raspoređivanje zadataka Deadline servera, automatska optimizacija spajanja identičnih memorijskih stranica, prvi drajver u Rust jeziku, sistemski pozivi listmount i statmount, uklanjanje bpfilter i SLAB, mehanizam guest_memfd u KVM-u, profiliranje pristupa podacima.

Nova verzija uključuje 15641 popravke od programera iz 2018., veličina zakrpe je 44 MB (promjene su uticale na 12212 datoteka, dodano je 663864 reda koda, 339094 linije je obrisano). Posljednje izdanje je imalo 18405 popravki od 2066 programera, veličina zakrpe je bila 72 MB. Oko 42% svih promjena uvedenih u 6.8 odnosi se na drajvere uređaja, otprilike 15% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 14% se odnosi na mrežni stog, 6% se odnosi na sistem datoteka i 3% odnose se na interne podsisteme kernela.

Postoji 6.8 miliona objekata u Git repozitorijumu sa kernelom 9.996, što ukazuje da će sledeći kernel 6.9 probiti prekretnicu od 10 miliona Git objekata. Ranije je promjena brojeva grana 3.x i 4.x dobro korelirala sa brojem git objekata u spremištu - kernel 3.0 je objavljen kada je u spremištu bilo približno 2 miliona objekata, a kernel 4.0 - 4 miliona objekata. U isto vrijeme, 2019. godine, izdanje 5.0 prekinulo je ovaj logički lanac, budući da je, kada je formirano, spremište uključivalo približno 6.5 miliona git objekata.

Ključne inovacije u kernelu 6.8:

  • Diskovni podsistem, I/O i sistemi datoteka
    • Dodan mod za blokiranje direktnog pisanja na blokiranje uređaja koji imaju montirane sisteme datoteka (nakon omogućavanja režima, root korisnik neće moći vršiti promjene u FS kroz manipulacije na nivou blok uređaja). Podrazumevano, režim je onemogućen i zahteva navođenje parametra BLK_DEV_WRITE_MOUNTED prilikom izgradnje. Za particije sa Btrfs, blokiranje još ne radi, jer potrebne promjene još nisu napravljene u Btrfs kodu.
    • Dodati sistemski pozivi listmount() i statmount(), koji omogućavaju dobijanje detaljnih informacija o montiranim sistemima datoteka iz korisničkog prostora.
    • U sistemu datoteka XFS, nastavlja se rad na implementaciji mogućnosti korištenja fsck uslužnog programa za provjeru i ispravljanje identificiranih problema na mreži, bez demontaže sistema datoteka.
    • Ext4 koristi poziv dioread_nolock za blokove manje od memorijske stranice, što poboljšava performanse eliminacijom nepotrebnih zaključavanja. Neke funkcije su konvertovane da koriste folije stranica.
    • Btrfs je dodao podršku za "nospace_cache" oznaku za montiranje kako bi se onemogućila besplatna keš memorija blokova. Neke funkcije su konvertovane da koriste folije stranica.
    • Sistem datoteka EROFS (Proširivi sistem datoteka samo za čitanje), dizajniran za upotrebu na particijama samo za čitanje, dodao je podršku za kompresiju podstranica i poboljšane performanse u situacijama male memorije.
    • F2FS sistem datoteka ima poboljšanu podršku za zonirane uređaje za skladištenje (podjela grupa blokova ili sektora u zone, u koje je dozvoljeno samo sekvencijalno dodavanje podataka uz ažuriranje cijele grupe blokova).
    • Za SMB sistem datoteka implementirana je mogućnost kreiranja blokova i datoteka simboličkih uređaja.
    • Bcachefs-u je dodana djelomična podrška za provjeru i vraćanje integriteta montiranih sistema datoteka.
    • Podsistem mapiranja uređaja više ne podržava MD_LINEAR, MD_MULTIPATH i MD_FAULTY rukovaoce, koji su zastarjeli 2021.
  • Memorijski i sistemski servisi
    • Zswap podsistem je dopunjen mogućnošću prinudnog učitavanja “hladnih” memorijskih stranica kojima se nije pristupilo i koje će najvjerovatnije ostati nepotražene, aktivirane kada postoji nedostatak RAM-a. Zswap kešira stranice koje su izbačene na swap particiju, pohranjujući ih u RAM-u u komprimiranom obliku kad god je to moguće bez ispranja u stvarnu nekomprimiranu swap particiju na disku. Promjene napravljene kada je memorija mala omogućavaju vam da smanjite veličinu Zswap spremišta pohranjenog u RAM-u i oslobodite memoriju za sistem.
    • Zswap nudi novi način rada koji potpuno onemogućuje povratni upis na stvarnu swap particiju ako je pokušaj pisanja neuspješan i ne ispušta stranice koje su već u zswap spremištu na swap particiju.
    • Mehanizam servera SCHED_DEADLINE je dodat planeru zadataka, koji rješava problem nedovoljne iskorištenosti CPU resursa uobičajenim zadacima kada je CPU monopoliziran zadacima visokog prioriteta (u realnom vremenu). Da bi spriječio monopolizaciju CPU-a, kernel je prethodno koristio mehanizam prigušenja u realnom vremenu, koji je pokušavao rezervisati 5% za zadatke niskog prioriteta, ostavljajući 95% vremena za zadatke u realnom vremenu. Ovaj mehanizam je ostavio mnogo da se poželi, budući da obični zadaci u mnogim situacijama nisu dobili dovoljno procesorskog vremena. SCHED_DEADLINE server implementira efikasniji mehanizam za rezervaciju resursa.
    • DAMON (Data Access MONitor) podsustav, koji vam omogućava da nadgledate pristup procesa podacima u RAM-u (na primjer, možete saznati kojim memorijskim područjima je proces pristupio i koja memorijska područja su ostala nepotražena), dodao je mehanizam za automatsko podešavanje agresivnost potrošnje memorije na osnovu specificiranih kvota.
    • Dodata podrška za stranice velike memorije više veličina (mTHP - Transparent Huge Pages više veličina), omogućavajući vam da dodijelite memoriju u blokovima većim od osnovne stranice, ali manjim od tradicionalne THP stranice.
    • Dodata podrška za velike folije (folio stranica, kombinovane memorijske stranice) za anonimnu memoriju (nije vezana za FS, na primjer, dodijeljena preko malloc-a). Promjena ima za cilj poboljšanje performansi dodjeljivanjem velikih komada memorije tokom pristupa nedodijeljenim memorijskim stranicama (greške stranice). Na primjer, korištenje velikih količina omogućilo je smanjenje vremena ponovnog sastavljanja jezgre za 5% (dok je vrijeme provedeno na nivou jezgre smanjeno za 40%).
    • Parametar TRANSPARENT_HUGEPAGE_NEVER je dodat u konfiguracionu datoteku kernela, što omogućava da se onemogući upotreba Transparent Huge Pages.
    • Sistemski poziv userfaultfd(), koji omogućava kreiranje rukovalaca za pristup nedodeljenim memorijskim stranicama (greške stranice) u korisničkom prostoru, dodao je operaciju UFFDIO_MOVE, koja omogućava, tokom sažimanja hrpe, da se memorijske stranice pomeraju u virtuelnom adresnom prostoru bez izvođenje operacije dodjele memorijske stranice. U obavljenim testovima, upotreba UFFDIO_MOVE nam je omogućila da smanjimo vrijeme pakovanja za 40% u odnosu na korištenje operacije UFFDIO_COPY.
    • Dodan je mehanizam “KSM savjetnik” koji vam omogućava da automatski optimizirate parametre podsistema za spajanje identičnih memorijskih stranica (KSM - Kernel Samepage Merging).
    • Nastavak migracije promjena iz Rust-for-branchLinux, vezano za korištenje Rusta kao drugog jezika za razvoj drajvera i kernel modula (Rust podrška nije aktivna po defaultu i ne rezultira uključivanjem Rusta među obavezne zavisnosti izgradnje kernela). Nova verzija uključuje promjene koje dodaju Rust omotač iznad phylib sloja apstrakcije i ax88796b_rust drajver koji koristi ovaj omotač, pružajući podršku za PHY interfejs Asix AX88772A (100MBit) Ethernet kontrolera. Što se tiče funkcionalnosti, Rust drajver je potpuno ekvivalentan starom ax88796b drajveru, napisanom u C-u, i može se koristiti sa X-Surf 100 mrežnim karticama opremljenim AX88796B čipom. Za LoongArch arhitekturu predviđena je mogućnost pisanja modula u Rustu. Izvršen je prelazak na korištenje Rust izdanja 1.74.1.
    • Dodan je mehanizam BPF tokena koji vam omogućava da selektivno delegirate obradu određenih BPF mogućnosti, kao što je učitavanje BPF programa ili kreiranje BPF mape, neprivilegiranim procesima u korisničkom prostoru, čija je valjanost potvrđena posebnim tokenom.
    • Funkcionalnost verifikatora BPF programa je proširena.
    • Perf uslužni program je dodao podršku za profilisanje podataka, što vam omogućava da pratite čitanje i pisanje u strukture podataka, na primer, kako biste identifikovali najaktivnije modifikovana polja u strukturama. Na sistemima sa procesorima koji podržavaju prikupljanje informacija o memorijskim operacijama (Intel, AMD, ARM), trebali biste koristiti naredbu “perf mem record” za akumuliranje statistike i “perf annotate –data-type” za prikaz izvještaja o pristupima podacima strukture.
    • Performanse obrade sistemskih poziva na arhitekturi s390 (IBM Z) su optimizirane, što je na testovima dovelo do ubrzanja unosa sistemskog poziva za približno 11%.
    • Osigurana je mogućnost promjene veličine međuspremnika praćenja koji se koriste za baferiranje informacija o događajima praćenja koji se prenose u korisnički prostor.
    • Ranije zastarjeli mehanizam dodjeljivanja SLAB memorije je uklonjen, zamjenjujući koji kernel sada koristi samo SLUB. Navedeni razlozi su problemi sa održavanjem, problemi u kodu i dupliciranje funkcionalnosti sa naprednijim SLUB alokatorom.
    • Prilikom izrade kernela, omogućena je zastavica "-Wmissing-prototypes", koja generiše upozorenja za pozive globalnim funkcijama koje nemaju definiciju prototipa.
    • Za RISC-V arhitekturu na sistemima koji podržavaju ekstenziju SUSP SBI, implementirana je podrška za ulazak u standby mod sa čuvanjem stanja u RAM-u. Pruža mogućnost korištenja sistemskog poziva riscv_hwprobe() za dobivanje informacija o podržanim ekstenzijama za arhitekturu skupa instrukcija RISC-V.
  • Virtuelizacija i sigurnost
    • Dodani su novi sistemski pozivi lsm_list_modules(), lsm_get_self_attr() i lsm_set_self_attr() za prikaz učitanih LSM modula (Linux Sigurnosni moduli) i dobijanje/postavljanje atributa LSM modula. Dodana je nova struktura lsm_ctx za komunikaciju u LSM kontekstu između korisničkog prostora i kernela.
    • AppArmor podsistem je prebačen na korištenje SHA-256 algoritma za verifikaciju pravila, umjesto SHA-1 heševa.
    • Implementacija funkcije strlcpy(), koja je u ljeto uključena u biblioteku Glibc 3.38 C, uklonjena je iz kernela. Strlcpy je alternativa funkciji strncpy(), koja sadrži zaštitu od prepunjavanja bafera i uvijek postavlja završni null bajt.
    • U hipervizoru KVM Dodana je podrška za podsistem guest_memfd (memorija za gosta), koji pruža funkcije upravljanja memorijom koje omogućavaju funkcije i optimizacije koje se ne mogu postići općim podsistemom za upravljanje memorijom. Na primjer, guest_memfd omogućava alokaciju i mapiranje memorije nedostupne gostujućem sistemu, a koja se može koristiti za povjerljivo računanje.
    • Za gostujuće sisteme koji pokreću KVM hipervizor, uključena je podrška za LAM (Linear Address Masking) način rada koji se pruža u Intelovim procesorima, koji omogućava korištenje dijela bitova 64-bitnih pokazivača (od 57 do 62 bita) za pohranjivanje metapodataka koji se ne odnose na adresiranje.
    • KVM hipervizor za sisteme bazirane na ARM64 arhitekturi ima dodatnu podršku za 52-bitne (LPA2) fizičke adrese. Za sisteme sa x86 arhitekturom, moguće je graditi bez emulacije Hyper-V hiperpoziva, što omogućava smanjenje veličine kernela.
    • Iaa (IAA Compression Accelerator) drajver je dodat da ubrza kompresiju i dekompresiju podataka koristeći DEFLATE metodu, koristeći mogućnosti Intel Analytics Accelerator (IAA) kriptografskih akceleratora.
    • Na strani hosta, implementirana je podrška za Intel TDX (Trusted Domain Extensions) mehanizam, koji omogućava kreiranje sigurnih okruženja za goste koja koriste enkripciju memorije prilikom korištenja KVM hipervizora. virtuelne mašine.
    • Na jugoistokuLinux Dodan je "init" SID kako biste mogli identificirati procese pokrenute u početnoj fazi pokretanja, a koji su pokrenuti prije primjene SE politika.LinuxInterfejs /sys/fs/selinux za upravljanje SE je poboljšan.Linux.
  • Mrežni podsistem
    • Provedena je reorganizacija niskog nivoa osnovnih mrežnih struktura podataka kako bi se poboljšala efikasnost keširanja. Ranije su polja u strukturama mrežnog steka socks, netdev, netns i mib bila raspoređena kako su dodana, što je ograničavalo upotrebu keš memorije procesora. Revizija smještaja varijabli u strukture dovela je do primjetnog povećanja TCP brzine, zahvaljujući minimiziranju upotrebe keš linija u fazi prijenosa podataka i optimizaciji pristupa varijablama. U slučajevima kada se obrađuje više paralelnih TCP veza, ubrzanje može doseći 40%.
    • Podsistem bpfilter, koji koristi BPF za filtriranje paketa, je uklonjen. Bpfilter se isporučuje od izdanja 4.18, ali nikada nije razvijen do nivoa pogodnog za široku upotrebu. Poslednjih godina kod bpfilter nije razvijen u jezgru, a Facebook je nastavio razvoj u hotelskom repozitorijumu.
  • Oprema
    • Paket uključuje novi drm drajver (Direct Rendering Manager) Xe za GPU zasnovane na Intel Xe arhitekturi, koji se koristi u Intel Arc familiji video kartica i integrisane grafike, počevši od Tiger Lake procesora. Xe drajver je pozicioniran kao osnova za rad novih čipova, bez vezivanja za kod za podršku starijim platformama. Drajver je napravljen korišćenjem nove arhitekture koja više koristi postojeće DRM komponente, kao i generičke i915 komponente drajvera koje nisu vezane za specifične GPU, kao što su kod interakcije sa ekranom, memorijski model i implementacija execbuf-a. U Mesi, pokretanje OpenGL-a i Vulkan-a na vrhu Xe drajvera implementirano je kroz promjene napravljene na postojećim Mesa Iris i ANV drajverima.
    • U drajveru i915 se nastavlja rad na implementaciji podrške za Intel LunarLake (Xe 2) čipove. Poboljšana podrška za Intel Meteor Lake čipove.
    • Nouveau drajver je konfigurisan da koristi funkcije GSP firmvera prema zadanim postavkama za rad sa NVIDIA GPU-ovima baziranim na Turing i Ampere mikroarhitekturama, u kojima GPU inicijalizaciju i kontrolne operacije obavlja poseban GSP mikrokontroler (GPU sistemski procesor). Kada je postavka omogućena, upravljački program će raditi pristupajući firmveru, umjesto da direktno programira operacije za interakciju s opremom.
    • AMDGPU drajver sada podržava ACPI WBRF i VPE DPM, mijenja obradu brzine PCIe kanala, koristi 64-bitne sekvence u redovima koji se koriste za sinhronizaciju, dodaje podršku za AMD-specifične mehanizme upravljanja bojama i rješava problem s prebacivanjem u stanje mirovanja način rada.
    • Dodata početna implementacija drajvera za Broadcom VideoCore 7.1 GPU koji se koristi u Raspberry Pi 5 pločama.
    • Dodan drajver za PowerVR 6 seriju grafičkih procesora zasnovanih na Rogue mikroarhitekturi od Imagination Technologies.
    • Dodata podrška za Thunderbolt/USB4 kontrolere integrisane u čipove zasnovane na mikroarhitekturi Intel Lunar Lake.
    • Dodati drajveri za kamere koje se koriste u SoC Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave i THine THP7312.
    • Dodata podrška za NSO (Nintendo Switch Online) kontrolere za igre - varijante starih kontrolera iz SNES (Super Nintendo), Genesis i N64 (Nintendo 64), prilagođene za Nintendo Switch. Dodan drajver za igrice Adafruit Seesaw. Podrška za Lenovo Legion Go kontrolere dodata je upravljačkom programu za xpad.
    • Dts drajver sada podržava Powkiddy RK2023, Powkiddy X55 i Anbernic RG351V igračke uređaje.
    • Dodata podrška za zvučne sisteme koji se koriste u NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 i X1E80100 čipovima.
    • AMD je napravio promjene vezane za podršku za buduću seriju procesora baziranih na novoj Zen 5 mikroarhitekturi.
    • Dodata podrška za ARM64 SoC: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 i Unisoc UMSanggula 9620.
    • Dodata podrška za ARM ploče i uređaje: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress baziran na Marvell CN913x, A Chromebook, A Chromebook baziran na Mediatek MT8183, Toradex Verdin AM62, ploče bazirane na Allwinner H616/H618.
    • Podrška za ARM11 ARMv6K SMP procesore je ukinuta.

Istovremeno, Latinoamerička fondacija za slobodni softver kreirala je verziju potpuno besplatnog kernela 6.8 - Linux-libre 6.8-gnu, očišćen od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili dijelove koda s ograničenim opsegom od strane proizvođača. Izdanje 6.8 uključuje ažurirani kod za čišćenje blobova u raznim drajverima i podsistemima. Drajveri za Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY i Realtek rtw8922a su očišćeni. Čišćenje drajvera za atmel, hermes, orinoco_usb, libertas_cs i zd1201 je prekinuto zbog njihovog uklanjanja iz kernela. Imena blobova u datotekama devicetree (dts) za ARM i Aarch64 arhitekture su očišćena. Problemi s čišćenjem drajvera za i915 su riješeni.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster