Izdanje Linux jezgra 6.8

Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje jezgre Linux 6.8. Među najistaknutijim promjenama su: Xe vozač za Intel GPU, način zaštite blok uređaja s montiranim datotečnim sustavima, mehanizam raspoređivača zadataka Deadline server, automatska optimizacija spajanja identičnih stranica memorije, prvi vozač na jeziku Rust, sistemski pozivi listmount i statmount, uklanjanje bpfilter i SLAB, mehanizam guest_memfd u KVM, profiliranje pristupa podacima.

U novu verziju uključeno je 15.641 ispravki od 2018 programera, veličina zakrpe iznosi 44 MB (promjene su obuhvatile 12.212 datoteka, dodano je 663.864 linija koda, uklonjeno 339.094 linija). U prethodnom izdanju bilo je 18.405 ispravki od 2.066 programera, veličina zakrpe iznosila je 72 MB. Oko 42% svih promjena u 6.8 vezano je uz upravljačke programe uređaja, približno 15% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 14% je povezano s mrežnim stogom, 6% s datotečnim sustavima, a 3% s unutarnjim podsustavima jezgre.

U Git repozitoriju s jezgrom 6.8 nalazi se 9.996 milijuna objekata, što ukazuje da će sljedeća jezgra 6.9 preći simboličnu granicu od 10 milijuna git objekata. Ranije su promjene brojeva grana 3.x i 4.x dobro korelirale s brojem git objekata u repozitoriju — jezgra 3.0 objavljena je kada je u repozitoriju bilo otprilike 2 milijuna objekata, a jezgra 4.0 kada je bilo 4 milijuna objekata. Međutim, u 2019. godini izdanje 5.0 prekinulo je ovaj logički slijed, jer je tijekom njegovog formiranja repozitorij uključivao otprilike 6.5 milijuna git objekata.

Glavne novosti u jezgri 6.8:

  • Sistem diska, ulaz/izlaz i datotečni sustavi
    • Dodana je funkcija blokiranja izravnog pisanja na blok uređaje na kojima su montirani datotečni sustavi (nakon aktiviranja ove funkcije, korisnik root neće moći unijeti promjene u datotečni sustav kroz manipulacije na razini blok uređaja). Zadano je funkcija isključena i zahtijeva navođenje parametra BLK_DEV_WRITE_MOUNTED prilikom sastavljanja. Za particije s Btrfs blokada još uvijek ne radi, jer potrebne promjene u Btrfs kodu još nisu prihvaćene.
    • Dodani su sistemski pozivi listmount() i statmount(), koji omogućuju iz korisničkog prostora dobivanje detaljnih informacija o montiranim datotečnim sustavima.
    • U datotečnom sustavu XFS nastavljeno je rad na implementaciji mogućnosti korištenja alata fsck za provjeru i ispravljanje otkrivenih problema u online načinu, bez odremontiranja datotečnog sustava.
    • U Ext4, za blokove manje od stranice memorije, koristi se poziv dioread_nolock koji poboljšava performanse eliminirajući suvišne blokade. Neke funkcije su prebačene na korištenje folija stranica memorije (page folios).
    • U Btrfs dodana je podrška za oznaku montiranja 'nospace_cache' koja isključuje keš slobodnih blokova. Neke funkcije su prebačene na korištenje folija stranica memorije (page folios).
    • U datotečnom sustavu EROFS (Extendable Read-Only File System), namijenjenom za korištenje na particijama dostupnim samo za čitanje, dodana je podrška za kompresiju substranica i poboljšan rad u situacijama nedostatka memorije.
    • U datotečnom sustavu F2FS poboljšana je podrška za zonirane uređaje za pohranu (odvajanje u zone grupa blokova ili sektora u koje je dozvoljeno samo sekvencijalno dodavanje podataka s ažuriranjem cijele grupe blokova).
    • Za FS SMB implementirana je mogućnost kreiranja blokovnih i simboličnih datotečnih uređaja.
    • U Bcachefs dodana je djelomična podrška za provjeru i obnavljanje integriteta montiranih FS.
    • U podsustavu device-mapper prestaje podrška za upravljače MD_LINEAR, MD_MULTIPATH i MD_FAULTY, koji su označeni kao zastarjeli 2021. godine.
  • Memorija i sistemske usluge
    • U podsustav Zswap dodana je mogućnost prisilnog ispuštanja u stvarnu particiju zamjene 'hladnih' stranica memorije, koje nisu korištene i koje vjerojatno neće biti potrebne, aktivirajući se pri nedostatku radne memorije. Zswap obavlja keširanje istisnutih stranica u particiju zamjene, držeći ih u radnoj memoriji u komprimiranom obliku bez potrebe za ispuštanjem u stvarnu nekomprimiranu particiju zamjene na disku. Uvedene promjene u uvjetima nedostatka memorije omogućuju smanjenje veličine pohrane Zswap u RAM-u i oslobađaju memoriju za sustav.
    • U Zswap predložen je novi način rada koji potpuno isključuje zakašnjelo pisanje (writeback) u stvarnu particiju zamjene ako pokušaj pisanja nije uspio, i ne ispušta prethodno postojeće stranice u Zswap u particiju zamjene.
    • U planer zadataka dodan je mehanizam SCHED_DEADLINE server, koji rješava problem nedostatka CPU resursa za obične zadatke u uvjetima monopolizacije CPU-a od strane visoko prioritetnih (realtime) zadataka. Kako bi se spriječila monopolizacija CPU-a, u jezgru je ranije korišten mehanizam Realtime throttling, koji je pokušavao rezervirati 5% za zadatke niskog prioriteta, ostavljajući 95% vremena za realtime zadatke. Ovaj mehanizam je ostavljao mnogo toga za poželjeti, jer su obični zadaci u mnogim situacijama ostajali bez procesorskog vremena. SCHED_DEADLINE server implementira učinkovitiji mehanizam rezerviranja resursa.
    • U pod sustav DAMON (Data Access MONitor), koji omogućava praćenje pristupa procesa podacima u operativnoj memoriji (na primjer, možete saznati na koje dijelove memorije je proces pristupao i koji dijelovi memorije su ostali neiskorišteni), dodat je mehanizam automatskog podešavanja agresivnosti potrošnje memorije na temelju zadatih kvota.
    • Dodana je podrška za višedimenzionalne velike stranice memorije (mTHP — multi-size Transparent Huge Pages), koja omogućava dodjeljivanje memorije u blokovima većim od osnovne stranice, ali manjim od tradicionalne THP stranice.
    • Dodana je podrška za velike folijante (page folios, spojene stranice memorije) za anonimnu memoriju (nepridruženu FS-u, na primjer, dodijeljenu kroz malloc). Promjena je usmjerena na povećanje performansi kroz dodjelu većih komada memorije tijekom pristupa neodabranim stranicama memorije (page faults). Na primjer, korištenje velikih folijanata omogućilo je smanjenje vremena ponovne izgradnje jezgre za 5% (uz smanjenje vremena provedenog na razini jezgre za 40%).
    • U konfiguracijski datoteku jezgre dodat je parametar TRANSPARENT_HUGEPAGE_NEVER, koji omogućava onemogućavanje korištenja velikih stranica memorije (Transparent Huge Pages).
    • U sustavni poziv userfaultfd(), koji omogućava stvaranje handlera za pristupe neodabranim stranicama memorije (page faults) u korisničkom prostoru, dodana je operacija UFFDIO_MOVE, koja omogućava premještanje stranica memorije u virtualnom adresnom prostoru tijekom kompaktiranja hrpe (heap compaction) bez provođenja operacije dodijeljivanja stranice memorije. U provedenim testovima, primjena UFFDIO_MOVE omogućila je smanjenje vremena kompaktiranja za 40% u usporedbi s korištenjem operacije UFFDIO_COPY.
    • Dodana je funkcionalnost „KSM savjetnika“, koja omogućuje automatsku optimizaciju parametara pod-sustava za spajanje identičnih stranica memorije (KSM — Kernel Samepage Merging).
    • Nastavljen je prijenos promjena iz grane Rust-for-Linux, vezanih uz korištenje jezika Rust kao drugog jezika za razvoj drajvera i modula jezgre (podrška za Rust nije aktivna po defaultu i ne dovodi do uključivanja Rusta među obavezne zavisnosti prilikom izgradnje jezgre). U novoj verziji uključene su promjene koje dodaju Rust-omot iznad razine apstrakcije phylib i koristeći taj omot drajver ax88796b_rust, koji omogućuje podršku za PHY sučelje Ethernet kontrolera Asix AX88772A (100MBit). Po funkcionalnosti, drajver na Rustu potpuno je ekvivalentan starom drajveru ax88796b, napisanom na jeziku C, i može se koristiti s mrežnim karticama X-Surf 100, opremljenim čipom AX88796B. Za arhitekturu LoongArch pružena je mogućnost pisanja modula na jeziku Rust. Održen je prijelaz na korištenje izdanja Rusta 1.74.1.
    • Dodana je funkcionalnost BPF tokena, koja omogućuje selektivno delegiranje obrade određenih mogućnosti BPF, kao što su učitavanje BPF programa ili kreiranje BPF mape, neprividnim procesima u korisničkom prostoru, čija je vjerodostojnost potvrđena posebnim tokenom.
    • Proširena je funkcionalnost verifikatora BPF programa.
    • U utilitu perf dodana je podrška za profiliranje podataka, omogućujući praćenje čitanja i pisanja u strukture podataka, na primjer, u svrhu otkrivanja najaktivnije modificiranih polja u strukturama. Na sustavima s procesorima koji podržavaju prikupljanje informacija o operacijama s memorijom (Intel, AMD, ARM), za prikupljanje statistike treba koristiti naredbu „perf mem record“, a za ispis izvještaja o pristupima strukturama podataka — „perf annotate —data-type“.
    • Provedena je optimizacija performansi obrade sistemskih poziva na arhitekturi s390 (IBM Z), što je u testovima dovelo do ubrzanja ulaska u sistemski poziv za otprilike 11%.
    • Omogućena je promjena veličine bafera za praćenje koji se koriste za pohranu informacija o događajima praćenja, koji se šalju u korisnički prostor.
    • Ranije je uklonjen zastarjeli mehanizam raspodjele memorije SLAB, a umjesto njega se u jezgru sada koristi samo SLUB. Kao razlog navode se problemi s održavanjem, greške u kodu i dupliciranje funkcionalnosti s naprednijim alokatorom SLUB.
    • Pri sastavljanju jezgre uključen je flag „-Wmissing-prototypes“, koji generira upozorenja za pozive globalnih funkcija koje nemaju definirani prototip.
    • Za arhitekturu RISC-V na sustavima koji podržavaju proširenje SUSP SBI implementirana je podrška za prijelaz u stanje čekanja uz pohranu stanja u RAM. Omogućena je upotreba sustavnog poziva riscv_hwprobe() za dobivanje informacija o podržanim proširenjima arhitekture skupa instrukcija RISC-V.
  • Virtualizacija i sigurnost
    • Dodani su novi sustavni pozivi lsm_list_modules(), lsm_get_self_attr() i lsm_set_self_attr() za ispis popisa učitanih LSM modula (Linux Security Modules) i za dobivanje/postavljanje atributa LSM modula. Dodana je nova struktura lsm_ctx za komunikaciju u kontekstu LSM između korisničkog prostora i jezgre.
    • Pod sustav AppArmor prešao je na korištenje algoritma SHA-256 za verifikaciju pravila, umjesto SHA-1 hashova.
    • Iz jezgre je uklonjena implementacija funkcije strlcpy(), koja je ovoga ljeta uključena u C biblioteku Glibc 3.38. Strlcpy je alternativa funkciji strncpy(), koja sadrži zaštitu od preklapanja bafera i obavezno dodaje nulti bajt koji zatvara string.
    • U hipervizoru KVM Dodana je podrška za podsustav guest_memfd (guest-first memory), koji pruža funkcije upravljanja memorijom, omogućujući postizanje mogućnosti i optimizacija koje nisu dostupne pri korištenju zajedničkog podsustava upravljanja memorijom. Na primjer, guest_memfd omogućuje alokaciju i refleksiju područja memorije na gostujući sustav, koje nije dostupno za domaće okruženje, a može se koristiti za organizaciju povjerljivih izračuna.
    • Za gostujuće sustave koji rade pod upravljanjem hipervizora KVM, omogućena je podrška za Intelove procesore s LAM (Linear Address Masking) načinom, koji omogućava korištenje dijela bitova 64-bitnih pokazivača (od 57. do 62. bita) za pohranu metapodataka koji nisu povezani s adresiranjem.
    • U KVM hipervizoru za ARM64 arhitekture dodana je podrška za 52-bitne (LPA2) fizičke adrese. Za x86 arhitekturu omogućena je izgradnja bez emulacije Hyper-V hipervizora, što smanjuje veličinu jezgre.
    • Dodali smo iaa drajver (IAA Compression Accelerator) za ubrzanje operacija kompresije i dekompresije podataka pomoću DEFLATE metode, koristeći mogućnosti Intel Analytics Accelerator (IAA) kriptografskih akceleratora.
    • Na strani host okruženja implementirana je podrška za Intel TDX (Trusted Domain Extensions) mehanizam, koji uz KVM hipervizor omogućava stvaranje zaštićenih gostujućih okruženja sa enkripcijom memorije. virtualnih mašina.
    • U SELinux je dodan SID identifikator "init", koji omogućava odvajanje procesa pokrenutih tokom inicijalne faze podizanja sustava, a koji su pokrenuti pre primene SELinux politika. Unapređen je interfejs /sys/fs/selinux za upravljanje SELinux-om.
  • Mrežni subsistem
    • Provedena je niskonivelska reorganizacija osnovnih mrežnih struktura podataka kako bi se poboljšala efikasnost keširanja. Prethodno su se polja u strukturnom mrežnom okviru socks, netdev, netns i mibs nalazila po redosledu dodavanja, što je ograničavalo korišćenje procesorskog keša. Preispitivanje postavljanja promenljivih u strukturama rezultiralo je značajnim poboljšanjem brzine TCP rada, zahvaljujući minimizaciji korišćenja redova keša u fazi prenosa podataka i optimizaciji pristupa promenljivim. U slučajevima obrade više paralelnih TCP veza, ubrzanje može dostići 40%.
    • Uklonjena je bpfilter podsistem koja koristi BPF za filtriranje paketa. Bpfilter je dostupan od verzije 4.18, ali nikada nije doveden do nivoa pogodnog za široku upotrebu. U poslednjim godinama kod bpfilter-a u jezgru nije se razvijao, a razvoj je nastavljen od strane Facebooka u zasebnom repozitoriju.
  • Oprema
    • Uključena je nova drm-vozača (Direct Rendering Manager) Xe za GPU temeljen na arhitekturi Intel Xe, koja se koristi u grafičkim karticama Intel obitelji Arc i integriranoj grafici, počevši s procesorima Tiger Lake. Xe vozač se pozicionira kao osnova za osiguranje rada novih čipova, neovisno o kodu za podršku starijim platformama. Vozač je izgrađen koristeći novu arhitekturu, u kojoj se aktivnije koriste već postojeće komponente DRM podsustava, kao i tipične komponente vozača i915, koje nisu vezane uz određene GPU-ove, poput koda za interakciju s ekranima, modelom memorije i implementacijom execbuf. U Mesu, rad OpenGL-a i Vulkana na vrhu Xe vozača implementiran je na razini promjena koje su napravljene u postojećim Mesa vozačima Iris i ANV.
    • U vozaču i915 nastavljena je realizacija podrške za čipove Intel LunarLake (Xe 2). Poboljšana je podrška za čipove Intel Meteor Lake.
    • U vozaču Nouveau implementirana je postavka za korištenje po defaultu funkcija firmware GSP za rad s NVIDIA GPU-ima temeljenim na mikroarhitekturama Turing i Ampere, u kojima se operacije inicijalizacije i upravljanja GPU-om izvršavaju putem odvojenog mikroprocesora GSP (GPU System Processor). Kada je opcija uključena, vozač će raditi putem pristupa firmware-u, umjesto izravnog programiranja operacija interakcije s hardverom.
    • U vozaču AMDGPU realizirana je podrška za ACPI WBRF i VPE DPM, izmijenjena je obrada brzine kanala PCIe, u redovima korištenim za usklađivanje uključeni su 64-bitni sekvencijalni brojevi, dodana je podrška za specifične mehanizme upravljanja bojom od strane AMD-a, riješen je problem s prelaskom u stanje mirovanja.
    • Dodana je inicijalna implementacija vozača za GPU Broadcom VideoCore 7.1, koji se koristi na pločama Raspberry Pi 5.
    • Dodana je vozačka podrška za GPU serije PowerVR 6 temeljen na mikroarhitekturi Rogue tvrtke Imagination Technologies.
    • Dodana je podrška za kontrolere Thunderbolt/USB4, integrirane u čipove temeljenim na mikroarhitekturi Intel Lunar Lake.
    • Dodani su vozači za kamere korištene u SoC Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave i THine THP7312.
    • Dodana je podrška za igre kontrolere NSO (Nintendo Switch Online) - varijante starih kontrolera iz SNES (Super Nintendo), Genesis i N64 (Nintendo 64), prilagođene za Nintendo Switch. Dodan je vozač za gamepad Adafruit Seesaw. U vozač xpad dodana je podrška za kontrolere Lenovo Legion Go.
    • U DTS drajveru dodana je podrška za igraće uređaje Powkiddy RK2023, Powkiddy X55 i Anbernic RG351V.
    • Dodana podrška za zvučne sisteme korištene u NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 i X1E80100 čipovima.
    • Tvrtka AMD je napravila promjene vezane uz podršku za budući niz procesora temeljenih na novoj mikroarhitekturi Zen 5.
    • Dodana 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 UMS9620 (Tanggula 7).
    • Dodana podrška za ARM platforme 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 temeljene na Marvell CN913x, Chromebook Lenovo, Asus i Acer temeljen na Mediatek MT8183, Toradex Verdin AM62, ploče temeljene na Allwinner H616/H618.
    • Prekinuta podrška za ARM11 ARMv6K SMP procesore.

U isto vrijeme, latinoamerička Zaklada slobodnog softvera oblikovala je varijantu potpuno slobodnog jezgra 6.8 – Linux-libre 6.8-gnu, očišćenu od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili dijelove koda čija je upotreba ograničena od strane proizvođača. U izdanju 6.8 ažuriran je kod čišćenja blobova u različitim drajverima i podsustavima. Očistili su se drajveri Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY i Realtek rtw8922a. Zbog uklanjanja iz jezgra, prestala je čišćenja drajvera atmel, hermes, orinoco_usb, libertas_cs i zd1201. Očistila su se imena blobova u DTS datotekama (devicetree) za arhitekture ARM i Aarch64. Rješeni su problemi s čišćenjem drajvera i915.

Izvor: opennet.ru

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