Izdaja jedra Linuxa 6.0

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 6.0. Pomembna sprememba številke različice je iz estetskih razlogov in je uradni korak za lajšanje nelagodja zaradi kopičenja velikega števila težav v seriji (Linus se je pošalil, da je razlog za spremembo številke podružnice bolj verjetno, da mu je zmanjkalo prstov in prsti na nogah za štetje številk različic). Med najbolj opaznimi spremembami: podpora za asinhrono pisanje v medpomnilnik v XFS, gonilnik blokov ublk, optimizacija razporejevalnika opravil, mehanizem za preverjanje pravilnega delovanja jedra, podpora za šifro blokov ARIA.

Glavne novosti v jedru 6.0:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Datotečni sistem XFS ima dodano podporo za asinhrono pisanje v medpomnilnik z uporabo mehanizma io_uring. Preizkusi zmogljivosti, opravljeni z orodji fio (1 nit, velikost bloka 4kB, 600 sekund, zaporedno pisanje), kažejo povečanje vhodno/izhodnih operacij na sekundo (IOPS) s 77k na 209k, hitrost prenosa podatkov s 314MB/s na 854MB/s, in padec zakasnitve z 9600ns na 120ns (80-krat).
    • Datotečni sistem Btrfs implementira drugo različico protokola za ukaz »pošlji«, ki implementira podporo za dodatne metapodatke, pošilja podatke v večjih blokih (več kot 64K) in prenaša obsege v stisnjeni obliki. Zmogljivost operacij neposrednega branja je bila znatno povečana (do 3-krat) zaradi hkratnega branja do 256 sektorjev. Zmanjšanje spora pri zaklepanju in pospešeno preverjanje metapodatkov z zmanjšanjem rezerviranih metapodatkov za odložene elemente.
    • Novi operaciji ioctl EXT4_IOC_GETFSUUID in EXT4_IC_SETFSUUID sta bili dodani v datotečni sistem ext4 za pridobivanje ali nastavitev UUID-ja, shranjenega v superbloku.
    • Datotečni sistem F2FS ponuja način nizke porabe pomnilnika, ki optimizira delovanje na napravah z majhno količino RAM-a in omogoča zmanjšanje porabe pomnilnika za ceno zmanjšane zmogljivosti.
    • Dodana podpora za preverjanje pristnosti pogona NVMe.
    • Strežnik NFSv4 izvaja omejitev števila aktivnih odjemalcev, ki je nastavljena na 1024 veljavnih odjemalcev za vsak gigabajt RAM-a v sistemu.
    • Izvedba odjemalca CIFS je izboljšala zmogljivost v večkanalnem načinu prenosa.
    • Nova zastavica FAN_MARK_IGNORE je bila dodana v podsistem za sledenje dogodkov v fanotify FS, da se prezrejo določeni dogodki.
    • V Overlayfs FS, ko je nameščen na vrhu FS s preslikavo ID-ja uporabnika, je zagotovljena pravilna podpora za sezname za nadzor dostopa, skladne s POSIX.
    • Dodan gonilnik bloka ublk, ki premakne specifično logiko na stran procesa v ozadju v uporabniškem prostoru in uporablja podsistem io_uring.
  • Pomnilniške in sistemske storitve
    • V podsistem DAMON (Data Access MONitor) so bile dodane nove funkcije, ki omogočajo ne samo spremljanje dostopa procesov do RAM-a iz uporabniškega prostora, temveč tudi vplivanje na upravljanje pomnilnika. Zlasti je bil predlagan nov modul »LRU_SORT«, ki omogoča prerazvrščanje seznamov LRU (najmanj uporabljenih) za povečanje prioritete določenih pomnilniških strani.
    • Zmožnost ustvarjanja novih pomnilniških regij je bila implementirana z uporabo zmogljivosti vodila CXL (Compute Express Link), ki se uporablja za organizacijo hitre interakcije med CPU in pomnilniškimi napravami. CXL vam omogoča, da povežete nove pomnilniške regije, ki jih zagotavljajo zunanje pomnilniške naprave, in jih uporabite kot dodatne vire fizičnega naslovnega prostora za razširitev pomnilnika z naključnim dostopom (DDR) ali trajnega pomnilnika (PMEM).
    • Odpravljene težave z zmogljivostjo procesorjev AMD Zen, ki jih je povzročila koda, dodana pred 20 leti, da bi odpravila težavo s strojno opremo v nekaterih naborih čipov (dodano je bilo dodatno navodilo WAIT za upočasnitev procesorja, tako da je nabor čipov imel čas, da preide v stanje mirovanja). Sprememba je povzročila zmanjšano zmogljivost pri delovnih obremenitvah, ki se pogosto spreminjajo med stanjem mirovanja in zasedenostjo. Na primer, po onemogočanju rešitve so se povprečni rezultati testa tbench povečali s 32191 MB/s na 33805 MB/s.
    • Iz razporejevalnika opravil je bila odstranjena koda s hevristiko, ki zagotavlja selitev procesov na najmanj obremenjene procesorje ob upoštevanju predvidenega povečanja porabe energije. Razvijalci so ugotovili, da hevristika ni bila dovolj uporabna in da jo je bilo lažje odstraniti in preseliti procese brez dodatnega vrednotenja, kadar koli bi taka migracija potencialno lahko povzročila nižjo porabo energije (na primer, ko je ciljni CPE v nižji ravni porabe energije). Onemogočanje hevristike je povzročilo zmanjšanje porabe energije pri izvajanju intenzivnih nalog, na primer pri testu dekodiranja videa se je poraba energije zmanjšala za 5.6 %.
    • Porazdelitev nalog po jedrih CPE v velikih sistemih je bila optimizirana, kar je izboljšalo zmogljivost za določene vrste delovnih obremenitev.
    • Asinhroni V/I vmesnik io_uring ponuja novo zastavico, IORING_RECV_MULTISHOT, ki vam omogoča uporabo načina večkratnega snemanja s sistemskim klicem recv() za izvedbo več operacij branja iz iste omrežne vtičnice hkrati. io_uring podpira tudi omrežni prenos brez vmesnega medpomnilnika (ničelna kopija).
    • Implementirana možnost preklopa programov BPF, povezanih z uprobe, v stanje mirovanja. BPF dodaja tudi nov iterator ksym za delo s tabelami simbolov jedra.
    • Zastareli vmesnik »efivars« v sysfs, namenjen dostopu do zagonskih spremenljivk UEFI, je bil odstranjen (navidezni FS efivarfs se zdaj univerzalno uporablja za dostop do podatkov EFI).
    • Pripomoček perf ima nova poročila za analizo konfliktov zaklepanja in časa, ki ga procesor porabi za izvajanje komponent jedra.
    • Nastavitev CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 je bila odstranjena, kar je omogočilo gradnjo jedra v načinu optimizacije "-O3". Opozoriti je treba, da je poskuse z načini optimizacije mogoče izvesti s podajanjem zastavic med sestavljanjem (»make KCFLAGS=-O3«), dodajanje nastavitve v Kconfig pa zahteva ponovljivo profiliranje zmogljivosti, kar kaže, da odvijanje zanke, uporabljeno v načinu »-O3«, daje prednost v primerjavi s stopnjo optimizacije »-O2«.
    • Dodan je bil vmesnik debugfs za pridobivanje informacij o delovanju posameznih »memory shrinkerjev« (obdelovalci, ki se kličejo, ko ni dovolj pomnilnika in pakirajo podatkovne strukture jedra, da zmanjšajo njihovo porabo pomnilnika).
    • Za arhitekturi OpenRISC in LoongArch je implementirana podpora za vodilo PCI.
    • Za arhitekturo RISC-V je bila implementirana razširitev »Zicbom« za upravljanje naprav z DMA, ki ni skladen s predpomnilnikom.
  • Virtualizacija in varnost
    • Dodan je bil verifikacijski mehanizem RV (Runtime Verification) za preverjanje pravilnega delovanja na zelo zanesljivih sistemih, ki zagotavljajo brez okvar. Preverjanje se izvede v času izvajanja s pritrditvijo upravljavcev na točke sledenja, ki preverjajo dejanski napredek izvajanja glede na vnaprej določen referenčni deterministični model stroja, ki definira pričakovano vedenje sistema. Preverjanje z modelom med izvajanjem je pozicionirano kot lahkejša in enostavnejša metoda za potrditev pravilnosti izvajanja na kritičnih sistemih, ki dopolnjuje klasične metode preverjanja zanesljivosti. Med prednostmi RV je zmožnost zagotavljanja stroge verifikacije brez ločene implementacije celotnega sistema v modelnem jeziku ter prilagodljiv odziv na nepredvidene dogodke.
    • Integrirane komponente jedra za upravljanje enklav na osnovi tehnologije Intel SGX2 (Software Guard eXtensions), ki omogoča aplikacijam izvajanje kode v izoliranih šifriranih območjih pomnilnika, do katerih ima preostali sistem omejen dostop. Tehnologija Intel SGX2 je podprta v čipih Intel Ice Lake in Gemini Lake, od Intel SGX1 pa se razlikuje po dodatnih navodilih za dinamično upravljanje pomnilnika enklav.
    • Za arhitekturo x86 je bila implementirana možnost prenosa semena za generator psevdonaključnih števil prek nastavitev zagonskega nalagalnika.
    • Modul SafeSetID LSM ima zdaj možnost upravljanja sprememb, narejenih prek klica setgroups(). SafeSetID omogoča sistemskim storitvam varno upravljanje uporabnikov brez stopnjevanja privilegijev (CAP_SETUID) in brez pridobitve korenskih privilegijev.
    • Dodana podpora za blokovno šifro ARIA.
    • Modul za upravljanje varnosti, ki temelji na BPF, omogoča pripenjanje upravljavcev posameznim procesom in skupinam procesov (cgroups).
    • Dodan je bil mehanizem z implementacijo čuvaja za zaznavanje zastojov gostujočih sistemov na podlagi spremljanja dejavnosti vCPE.
  • Omrežni podsistem
    • V podsistem BPF so bili dodani upravljalci za generiranje in preverjanje piškotkov SYN. Dodan je tudi nabor funkcij (kfunc) za dostop in spreminjanje stanja povezav.
    • Brezžični sklad ima dodano podporo za mehanizem MLO (Multi-Link Operation), ki je opredeljen v specifikaciji WiFi 7 in omogoča napravam, da istočasno sprejemajo in pošiljajo podatke z uporabo različnih frekvenčnih pasov in kanalov, na primer za istočasno vzpostavitev več komunikacijskih kanalov med dostopno točko do odjemalske naprave.
    • Delovanje protokola TLS, vgrajenega v jedro, je bilo izboljšano.
    • Dodana možnost ukazne vrstice jedra "hostname=", ki omogoča nastavitev imena gostitelja zgodaj v procesu zagona, preden se zaženejo komponente uporabniškega prostora.
  • Оборудование
    • Gonilnik i915 (Intel) zagotavlja podporo za ločene grafične kartice Intel Arc (DG2/Alchemist) A750 in A770. Predlagana je bila začetna izvedba podpore za grafične procesorje Intel Ponte Vecchio (Xe-HPC) in Meteor Lake. Nadaljuje se delo za podporo platformi Intel Raptor Lake.
    • Gonilnik amdgpu še naprej zagotavlja podporo za platformi AMD RDNA3 (RX 7000) in CDNA (Instinct).
    • Gonilnik Nouveau je preoblikoval podporno kodo za zaslonske motorje NVIDIA nv50 GPU.
    • Dodan nov gonilnik logicvc DRM za zaslone LogiCVC.
    • Gonilnik v3d (za Broadcom Video Core GPE) podpira plošče Raspberry Pi 4.
    • Gonilniku msm dodana podpora za Qualcomm Adreno 619 GPU.
    • Gonilniku Panfrost dodana podpora za GPU ARM Mali Valhall.
    • Dodana začetna podpora za procesorje Qualcomm Snapdragon 8cx Gen3, ki se uporabljajo v prenosnikih Lenovo ThinkPad X13s.
    • Dodani zvočni gonilniki za platforme AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake in Mediatek MT8186.
    • Dodana podpora za pospeševalnike strojnega učenja Intel Habana Gaudi 2.
    • Dodana podpora za ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Istočasno je Latinskoameriška fundacija za prosto programsko opremo oblikovala različico popolnoma brezplačnega jedra 6.0 - Linux-libre 6.0-gnu, očiščeno elementov vdelane programske opreme in gonilnikov, ki vsebujejo neproste komponente ali dele kode, katere obseg je omejen s strani proizvajalca. Nova izdaja onemogoča uporabo madežev v gonilniku HD-avdio CS35L41 in gonilniku UCSI za mikrokontrolerje STM32G0. Datoteke DTS za čipe Qualcomm in MediaTek so bile očiščene. Onemogočanje blob v gonilniku MediaTek MT76 je bilo predelano. Posodobljena koda za čiščenje madežev v gonilnikih in podsistemih AMDGPU, Adreno, Tegra VIC, Netronome NFP in Habanalabs Gaudi2. Ustavljeno čiščenje gonilnika VXGE, ki je bil odstranjen iz jedra.

Vir: opennet.ru

Dodaj komentar