Izdanje kernela Linux 6.0

Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje Linux 6.0 kernela. Značajna promjena u broju verzije je iz estetskih razloga i formalni je korak za ublažavanje nelagode gomilanja velikog broja izdanja u seriji (Linus se našalio da je razlog promjene broja grane vjerovatniji jer mu je ponestalo prstiju i nožni prsti za brojanje brojeva verzija). Među najznačajnijim promjenama: podrška za asinkrono baferirano pisanje u XFS-u, drajver bloka ublk, optimizacija planera zadataka, mehanizam za provjeru ispravnog rada kernela, podrška za ARIA blok šifru.

Ključne inovacije u kernelu 6.0:

  • Diskovni podsistem, I/O i sistemi datoteka
    • XFS sistem datoteka je dodao podršku za asinkrono upisivanje u baferu koristeći mehanizam io_uring. Testovi performansi sprovedeni pomoću fio alata (1 nit, veličina bloka 4kB, 600 sekundi, sekvencijalno upisivanje) pokazuju povećanje ulazno/izlaznih operacija u sekundi (IOPS) sa 77k na 209k, brzinu prenosa podataka sa 314MB/s na 854MB/s, i pad latencije sa 9600ns na 120ns (80 puta).
    • Datotečni sistem Btrfs implementira drugu verziju protokola za naredbu “send”, koja implementira podršku za dodatne metapodatke, slanje podataka u većim blokovima (više od 64K) i prijenos ekstenata u komprimiranom obliku. Performanse direktnih operacija čitanja značajno su povećane (do 3 puta) zbog istovremenog čitanja do 256 sektora. Smanjena svađa oko zaključavanja i ubrzana provjera metapodataka smanjenjem rezerviranih metapodataka za odgođene elemente.
    • Nove ioctl operacije EXT4_IOC_GETFSUUID i EXT4_IC_SETFSUUID su dodane u ext4 sistem datoteka za preuzimanje ili postavljanje UUID-a pohranjenog u superbloku.
    • F2FS sistem datoteka nudi režim niske potrošnje memorije, koji optimizuje rad na uređajima sa malom količinom RAM-a i omogućava vam da smanjite potrošnju memorije po cenu smanjenih performansi.
    • Dodata podrška za autentifikaciju NVMe diska.
    • NFSv4 server implementira ograničenje broja aktivnih klijenata, koje je postavljeno na 1024 validna klijenta za svaki gigabajt RAM-a u sistemu.
    • Implementacija CIFS klijenta je poboljšala performanse u višekanalnom načinu prijenosa.
    • Nova zastavica FAN_MARK_IGNORE je dodana u podsistem za praćenje događaja u fanotify FS da ignoriše određene događaje.
    • U Overlayfs FS, kada se montira na vrh FS-a sa mapiranjem ID-a korisnika, pruža se ispravna podrška za liste kontrole pristupa usklađene sa POSIX-om.
    • Dodan drajver bloka ublk, koji pomiče specifičnu logiku na stranu pozadinskog procesa u korisničkom prostoru i koristi io_uring podsistem.
  • Memorijski i sistemski servisi
    • Nove karakteristike su dodate u DAMON (Data Access MONitor) podsistem, omogućavajući ne samo praćenje procesa pristupa RAM-u iz korisničkog prostora, već i utjecaj na upravljanje memorijom. Konkretno, predložen je novi modul “LRU_SORT” koji omogućava pregrupisavanje LRU (Least Recently Used) lista za povećanje prioriteta određenih memorijskih stranica.
    • Mogućnost kreiranja novih memorijskih regija implementirana je korištenjem mogućnosti CXL (Compute Express Link) magistrale, koja se koristi za organiziranje interakcije velike brzine između CPU-a i memorijskih uređaja. CXL vam omogućava da povežete nove memorijske regione koje pružaju eksterni memorijski uređaji i koristite ih kao dodatne resurse fizičkog adresnog prostora za proširenje sistemske memorije sa slučajnim pristupom (DDR) ili trajne memorije (PMEM).
    • Rešeni problemi sa performansama sa AMD Zen procesorima uzrokovani kodom koji je dodat pre 20 godina da se zaobiđe hardverski problem u nekim čipsetima (dodatna je instrukcija WAIT da uspori procesor tako da je čipset imao vremena da pređe u stanje mirovanja). Promjena je rezultirala smanjenim performansama pod radnim opterećenjima koja se često mijenjaju između stanja mirovanja i zauzetosti. Na primjer, nakon onemogućavanja zaobilaznog rješenja, prosječni rezultati tbench testa su se povećali sa 32191 MB/s na 33805 MB/s.
    • Kod sa heuristikom je uklonjen iz planera zadataka, osiguravajući migraciju procesa na najmanje opterećene CPU, uzimajući u obzir predviđeni dobitak u potrošnji energije. Programeri su zaključili da heuristika nije bila dovoljno korisna i da je lakše ukloniti ju i migrirati procese bez dodatne evaluacije kad god bi takva migracija potencijalno mogla rezultirati manjom potrošnjom energije (na primjer, kada je ciljni CPU na nižem nivou snage). Onemogućavanje heuristike dovelo je do smanjenja potrošnje energije pri obavljanju intenzivnih zadataka, na primjer, u testu video dekodiranja potrošnja energije smanjena je za 5.6%.
    • Optimizirana je distribucija zadataka kroz CPU jezgre na velikim sistemima, što je poboljšalo performanse za određene vrste opterećenja.
    • Io_uring asinhroni I/O interfejs nudi novu zastavicu, IORING_RECV_MULTISHOT, koja vam omogućava da koristite režim više snimaka sa sistemskim pozivom recv() za izvođenje više operacija čitanja iz iste mrežne utičnice odjednom. io_uring također podržava mrežni prijenos bez međuspremnika (nulta kopija).
    • Implementirana je mogućnost stavljanja BPF programa prikačenih na usondu u stanje mirovanja. BPF takođe dodaje novi iterator ksym za rad sa tabelama simbola kernela.
    • Zastarjelo “efivars” sučelje u sysfs-u, namijenjeno za pristup UEFI varijablama pokretanja, je uklonjeno (efivarfs virtuelni FS sada se univerzalno koristi za pristup EFI podacima).
    • Perf uslužni program ima nove izvještaje za analizu sukoba zaključavanja i vremena provedenog od strane procesora u izvršavanju komponenti kernela.
    • Postavka CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 je uklonjena, što je omogućilo da se kernel izgradi u "-O3" optimizacijskom modu. Napominje se da se eksperimenti sa načinima optimizacije mogu izvoditi prenošenjem zastavica tokom sastavljanja (“napravi KCFLAGS=-O3”), a dodavanje postavke u Kconfig zahtijeva ponovljivo profilisanje performansi, pokazujući da odmotavanje petlje korišteno u “-O3” modu daje prednost u odnosu na nivo optimizacije “-O2”.
    • Dodano je sučelje za debugfs kako bi se dobile informacije o radu pojedinačnih “smanjivača memorije” (handleri koji se pozivaju kada nema dovoljno memorije i strukture podataka za pakiranje kernela da bi se smanjila njihova potrošnja memorije).
    • Za OpenRISC i LoongArch arhitekture implementirana je podrška za PCI magistralu.
    • Za RISC-V arhitekturu implementirana je ekstenzija “Zicbom” za upravljanje uređajima sa DMA koji nije koherentan u keš memoriji.
  • Virtuelizacija i sigurnost
    • Dodan je mehanizam verifikacije RV (Runtime Verification) za verifikaciju ispravnog rada na visoko pouzdanim sistemima koji garantuju da nema kvarova. Provjera se izvodi u vrijeme izvođenja pričvršćivanjem rukovalaca na tačke praćenja koje provjeravaju stvarni napredak izvršenja u odnosu na unaprijed određeni referentni deterministički model mašine koji definira očekivano ponašanje sistema. Verifikacija sa modelom u runtime-u pozicionirana je kao lakša i lakša za implementaciju metoda za potvrdu ispravnosti izvršenja na kritičnim sistemima, dopunjujući klasične metode verifikacije pouzdanosti. Među prednostima RV-a je i mogućnost pružanja stroge verifikacije bez odvojene implementacije čitavog sistema u jeziku modeliranja, kao i fleksibilan odgovor na nepredviđene događaje.
    • Integrisane komponente kernela za upravljanje enklavama zasnovane na Intel SGX2 (Software Guard eXtensions) tehnologiji, koja omogućava aplikacijama da izvršavaju kod u izolovanim šifrovanim oblastima memorije, kojima ostatak sistema ima ograničen pristup. Intel SGX2 tehnologija je podržana u Intel Ice Lake i Gemini Lake čipovima, a razlikuje se od Intel SGX1 po dodatnim uputstvima za dinamičko upravljanje memorijom enklava.
    • Za arhitekturu x86 implementirana je mogućnost prijenosa sjemena za generator pseudoslučajnih brojeva kroz postavke pokretačkog programa.
    • SafeSetID LSM modul sada ima mogućnost upravljanja promjenama napravljenim putem setgroups() poziva. SafeSetID omogućava sistemskim uslugama da bezbedno upravljaju korisnicima bez eskalacije privilegija (CAP_SETUID) i bez dobijanja root privilegija.
    • Dodata podrška za ARIA blok šifru.
    • Modul za upravljanje sigurnošću baziran na BPF-u pruža mogućnost povezivanja rukovatelja pojedinačnim procesima i grupama procesa (cgroups).
    • Dodan je mehanizam sa implementacijom watchdog-a za otkrivanje zastoja gostujućih sistema na osnovu praćenja aktivnosti vCPU-a.
  • Mrežni podsistem
    • Rukovaoci za generisanje i provjeru SYN kolačića su dodani u BPF podsistem. Dodan je i skup funkcija (kfunc) za pristup i promjenu stanja veza.
    • Bežični stog ima dodatnu podršku za mehanizam MLO (Multi-Link Operation), definisan u WiFi 7 specifikaciji i koji omogućava uređajima da istovremeno primaju i šalju podatke koristeći različite frekvencijske opsege i kanale, na primjer, da istovremeno uspostave nekoliko komunikacijskih kanala između pristupnu tačku klijentskom uređaju.
    • Performanse TLS protokola ugrađenog u kernel su poboljšane.
    • Dodana je opcija komandne linije kernela "hostname=" kako bi se omogućilo postavljanje imena hosta rano u procesu pokretanja, prije pokretanja komponenti korisničkog prostora.
  • Oprema
    • i915 (Intel) drajver pruža podršku za Intel Arc (DG2/Alchemist) A750 i A770 diskretne video kartice. Predložena je početna implementacija podrške za Intel Ponte Vecchio (Xe-HPC) i Meteor Lake GPU. Nastavlja se rad na podršci platformi Intel Raptor Lake.
    • Amdgpu drajver nastavlja da pruža podršku za AMD RDNA3 (RX 7000) i CDNA (Instinct) platforme.
    • Nouveau drajver je preradio kod podrške za NVIDIA nv50 GPU motore za prikaz.
    • Dodan novi logicvc DRM drajver za LogiCVC ekrane.
    • V3d drajver (za Broadcom Video Core GPU) podržava Raspberry Pi 4 ploče.
    • Dodata podrška za Qualcomm Adreno 619 GPU za msm drajver.
    • Dodata podrška za ARM Mali Valhall GPU Panfrost drajveru.
    • Dodata inicijalna podrška za Qualcomm Snapdragon 8cx Gen3 procesore koji se koriste u laptopovima Lenovo ThinkPad X13s.
    • Dodati zvučni drajveri za AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake i Mediatek MT8186 platforme.
    • Dodata podrška za Intel Habana Gaudi 2 akceleratore mašinskog učenja.
    • Dodata podrška za ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Istovremeno, Latinoamerička fondacija za slobodni softver formirala je verziju potpuno besplatnog kernela 6.0 - Linux-libre 6.0-gnu, očišćenu od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili delove koda, čiji je opseg ograničeno od strane proizvođača. Novo izdanje onemogućava upotrebu blob-ova u CS35L41 HD-audio drajveru i UCSI drajveru za STM32G0 mikrokontrolere. DTS fajlovi za Qualcomm i MediaTek čipove su očišćeni. Onemogućavanje blob-ova u MediaTek MT76 drajveru je prerađeno. Ažuriran kod za čišćenje mrlja u upravljačkim programima i podsistemima AMDGPU, Adreno, Tegra VIC, Netronome NFP i Habanalabs Gaudi2. Zaustavljeno je čišćenje VXGE drajvera, koji je uklonjen iz kernela.

izvor: opennet.ru

Dodajte komentar