Izdaja jedra Linux 6.16

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 6.16. Med najopaznejšimi spremembami so: gonilnik za pospeševanje OpenVPN, mehanizem Kexec HandOver, privzeto vključitev petstopenjskih tabel strani pomnilnika za x86, odstranitev protokola DCCP, blokovni gonilnik zloop, možnost pošiljanja core-dumpov preko UNIX-socketov, podpora atomski zapis v XFS, obdelava zvoka offload za USB naprave, optimizacije v Ext4, virtualni gonilnik TPM (Trusted Platform Module), polna realizacija Device Memory TCP, podpora neimenovanim kanalom v io_uring, priprava na integracijo DRM-gonilnika Asahi, mehanizem „usermode queue“ v gonilniku AMDGPU, podpora Intel TDE (Trusted Domain Extensions) in Intel APE (Advanced Performance Extensions).

V novo različico je vključeno 15924 popravkov od 2145 razvijalcev, velikost popravka je 50 MB (spremembe so zadele 13793 datotek, dodanih je bilo 655451 vrstic kode, odstranjeno 316441 vrstica). V prejšnji izdaji je bilo 15945 popravkov od 2154 razvijalcev, velikost popravka pa je bila 59 MB. Približno 45 % vseh predstavljenih sprememb v 6.16 se nanaša na gonilnike naprav, približno 16 % sprememb se nanaša na posodobitev kode specifične za strojne arhitekture, 13 % je povezanih s omrežno zgradbo, 4 % s datotečnimi sistemi in 3 % z notranjimi podsystemi jedra.

Glavne novosti v jedru 6.16:

  • Дисковая подсистема, ввод/вывод и файловые системы
    • Dodano je bilo gonilo zloop za ustvarjanje zoniranih blokovnih loopback naprav, ki so nameščene v loop-način. Gonilo emulira delovanje običajnih blokovnih naprav, pri tem pa uporablja več datotek iz obstoječega datotečnega sistema (eno datoteko za shranjevanje vsake cone). Ta možnost je lahko koristna za testiranje datotečnih sistemov, obdelovalnikov naprave mapper in aplikacij glede podpori za zonirane naprave, ki uporabljajo razdelitev na cone skupin blokov ali sektorjev, v katere je dovoljeno le zaporedno dodajanje podatkov z osvežitvijo celotne skupine blokov.
    • V datotečnem sistemu XFS je bila реализirana podpora atomski zapis velikih količin podatkov — več blokov je zdaj mogoče zapisati v atomskem načinu (bodisi bodo vsi bloki zapisani uspešno, bodisi noben blok ne bo zapisan).
    • V datotečnem sistemu Ext4 je bila izboljšana učinkovitost mehanizma "fast commit". Dodana je podpora za velike folije pomnilnika (large folios) za običajne datoteke, kar je pri testih povečalo učinkovitost za 37 % pri intenzivnem sekvenčnem vhodno/izhodnem delovanju. Dodana je podpora za atomske operacije zapisovanja, ki zajemajo več blokov.
    • V gonilniku za datotečni sistem ext2 je bila razglašena zastarela podpora mehanizmu DAX, ki omogoča neposreden dostop do datotečnega sistema brez straničnega predpomnilnika. Odstranitev DAX iz gonilnika ext2 je načrtovana za konec leta. Kot razlog se omenja obravnava gonilnika ext2 kot stabilne referenčne implementacije, v kateri ni dovoljeno uporabljati specifičnih funkcionalnosti, ki niso dobile ustrezne razširjenosti.
    • Datotečni sistemi OrangeFS, UFS, BFS in OMFS so bili preusmerjeni na uporabo novega API-ja za montažo particij.
    • V sysctl je bila dodana nastavitev vfs_cache_pressure_denom, ki upravlja število zapisov v predpomnilniku "dentry" (notranja predstavitev elementov imenikov) v pogojih pomanjkanja pomnilnika v sistemu. Večja kot je vrednost, več zapisov lahko odstrani iz predpomnilnika (manj zapisov ostane v predpomnilniku) pri pomanjkanju pomnilnika.
    • V FS Bcachefs je bila dodana možnost "rebalance_on_ac_only", ki prepoveduje izvajanje operacij prebalansiranja in ozadnega stiskanja pri napajanju sistema iz baterije. Pospešene so operacije brisanja posnetkov in naprav. Zmanjšana je poraba pomnilnika pri montaži v načinu samo za branje. Dodana je možnost zagon nekaterih operacij obnove po okvari v ozadju, ne da bi ustavili delo z datotečnim sistemom.
    • Podskupini za upravljanje z energijo je omogočeno samostojno opravljanje zamrznitve datotečnih sistemov in spremenljivk EFI za stanje pripravljenosti in spanja (če so datotečni sistemi že zamrznjeni s pomočjo obdelovalnika v uporabniškem prostoru, ponovna zamrznitev ne bo izvedena).
    • Dodana je bila možnost pospeševanja delovanja EROFS s pomočjo pospeševalnika QAT (QuickAssist Technology), vgrajenega v procesorje Intel, ki ponuja sredstva za pospeševanje izračunov, povezanih s stiskanjem in šifriranjem.
    • V NFS je bila povečana največja velikost paketa podatkov za operacije branja in pisanja s 1 na 4 MB (privzeto je nastavljena vrednost 1 MB, saj vsi odjemalci ne podpirajo večje velikosti).
    • Neprivilegiranim uporabnikom, ki imajo pravice CAP_SYS_ADMIN v ločenem prostoru identifikatorjev uporabnika (user namespace), vendar nimajo razširjenih pravic v korenskem prostoru, je omogočena uporaba mehanizma fanotify za spremljanje sprememb v datotečnih sistemih.
    • Za datotečne sisteme, ki uporabljajo podsklop FUSE, je bila uvedena funkcionalnost za enkratno čiščenje vseh predpomnjenih zapisov o imenikih (dentries). V podsklop FUSE je bila dodana podpora za velike bloke spominske strani.
    • V datotečnem sistemu OverlayFS je bila dodana podpora za ustvarjanje slojev z podatki v neprivilegiranih prostorih imen, za katere se uporablja nadzor celovitosti na podlagi modula dm-verity. Ta možnost omogoča kombiniranje zaupanja vrednih slojev z metapodatki z nezaupnimi sloji s podatki, ki se obdelujejo v neprivilegiranih prostorih imen.
  • Pomnilnik in sistemske storitve
    • Dodana je bila mehanizem KHO (Kexec HandOver) za zagon novega jedra iz starega brez izgube stanja sistema. Pred prenosom upravljanja na novo različico jedra se stanje ključnih jedrnih pod-sistemov s pomočjo KHO lahko serializira v pomnilniško območje, ki ne bo vplivano z nadaljnjimi operacijami. Novo jedro, ko prevzame upravljanje, povrne serializirano stanje nazaj. Na podlagi KHO se razvija podsklop Live Update Orchestrator (LUO), ki omogoča ponovno nalaganje jedra brez ustavljanja delovanja naprav.
    • Dodana je bila možnost zbiranja jedra CONFIG_X86_NATIVE, ki omogoča uporabo možnosti "-march=native" pri kompilaciji za optimizacijo ob upoštevanju zmogljivosti procesorja na trenutnem sistemu.
    • Dodana je bila podpora za razširitev arhitekture niza ukazov Intel APX (Advanced Performance Extension), ki ponuja 16 dodatnih splošnih registrov (poleg 16 obstoječih), kar omogoča uporabo manj operacij branja in pisanja v pomnilnik za povečanje zmogljivosti ter zmanjšanje porabe energije.
    • Dodana je bila funkcija samodejnega prilagajanja politike razporejanja pomnilnika v NUMA-sistemih, pri kateri se vse teže vozlišč ponovno izračunajo ob pojavu novih informacij o propustnosti med nalaganjem ali ob vročem priključitvi pomnilnika.
    • V implementaciji futex-ov je bila dodana podpora za lokalno haširano tabelo procesov (local futex_hash_bucket), ki je, za razliko od prej podprte skupne haširane tabele za vse procese, lokalna za posamezen proces in jo vsi niti tega procesa delijo. Lokalna haširana tabela se uporablja samo za futex operacijo PROCESS_PRIVATE. Poleg tega so v novi izdaji dodane možnosti FUTEX2_NUMA in FUTEX2_MPOL, ki omogočajo vpliv na razporeditev futex-ov v pomnilniku, da bi jih postavili bližje procesom, ki jih uporabljajo.
    • Za sisteme x86_64 je vključena trajna podpora za petstopenjske tabele strani pomnilnika (parameter CONFIG_X86_5LEVEL, ki je upravljal vklop petstopenjskih tabel, je odstranjen).
    • V gonilniku intel_pstate, ki upravlja parametre porabe energije (P-state) na sistemih s procesorji Intel, je bila dodana podpora za delovanje razporejevalnika nalog z upoštevanjem porabe energije (EAS - Energy Aware Scheduling) na hibridnih procesorjih, ki združujejo visoko zmogljive in energetsko učinkovite CPU jedra, kot so Intel Lunar Lake.
    • V sysfs so dodani vmesniki: "/sys/devices/system/cpu/cpuN/cpu_capacity" za pridobitev informacij o zmogljivostih različnih CPU-jev v hibridnih procesorjih in "/sys/devices/system/cpu/cpuidle/intel_c1_demotion" za upravljanje možnosti ohranjanja CPU v bolj zmogljivem stanju, tudi če jedro poskuša preklopiti CPU v nižje stanje porabe energije (na primer, jedro lahko zahteva prehod v stanje porabe energije C6, vendar lahko strojna programska oprema pri visoki intenzivnosti prebuditve CPU pusti v stanju C1).
    • Za arhitekturo ARM64 je bila vključena podpora za način lenobnega izpodboja nalog (PREEMPT_LAZY, lazy preemption), ki ustreza načinu popolnega izpodboja ("full preemption") za realtime naloge (RR/FIFO/DEADLINE), vendar odlaša izpodboj običajnih nalog (SCHED_NORMAL) do meje tikanja.
    • Za arhitekturo ARM64 je bila dodana podpora za uporabo razširitev SME (Scalable Matrix Extension), vklopljena preko parametra CONFIG_ARM64_SME.
    • Nadaljuje se prenos sprememb iz veje Rust-for-Linux, povezanih z uporabo jezika Rust kot drugega jezika za razvoj gonilnikov in modulov jedra (podpora za Rust ni privzeto aktivirana in ne povzroči vključitve Rust-a med obvezne gradbene odvisnosti jedra). Za module, napisane v jeziku Rust, je omogočena uporaba configfs. Dodane so abstrakcije, potrebne za razvoj grafičnih gonilnikov. Razširjene so možnosti modulov alloc, time, str, list, workqueue in page. Dodana je podpora za makro „assert!“ v testih na osnovi KUnit. Dodan je nabor abstrakcij za upravljanje frekvence CPU in uporabo API-jev, povezanih z upravljanjem porabe energije. Dodana je podpora za podatkovno strukturo 'xarray'.
    • Za arhitekturo RISC-V je bila prenesena implementacija sistemskega klica getrandom(), optimizirana s pomočjo mehanizma vDSO (virtual dynamic shared object), ki omogoča prenos obdelovalca sistemskega klica iz jedra v prostor uporabnika in preprečuje preklapljanje kontekstov. V izvedenih testih je optimizacija pospešila pridobivanje naključnih števil v 17-krat. Za RISC-V je bila tudi implementirana podpora za vektorske razširitve Zicbop, Zabha in Svinval, ki se uporabljajo v procesorjih SiFive.
    • Za arhitekturo LoongArch je bila meja za število CPU-jev v sistemu povečana s 256 na 2048. Dodana je podpora za nalagalnik opravil SCHED_MC (Multi-core).
    • Dodana je možnost uporabe Unix-socketov za prenos datotečnih descriptorjev. Za onemogočenje te možnosti lahko aplikacije uporabijo v setsockopt() zastavico SO_PASSRIGHTS.
    • Omogočeno je mapiranje obročne pomnilniške tabele, ki se uporablja za sledenje delovanju jedra, v pomnilnik prostora uporabnika.
    • Obdelovalci crash-dump, ki se uporabljajo za oblikovanje poročila o težavi po nenadnem končanju delovanja jedra, zdaj lahko uporabijo ključe LUKS, ki jih je uporabil odpovedani jedro, za shranjevanje crash-dumpov v šifrirane datotečne sisteme.
    • V sistem asinkrone vhodno/izhodne operacije io_uring je bila dodana operacija IORING_OP_PIPE za ustvarjanje anonimnih kanalov, ki je podobna sistemskemu klicu pipe2, razen da podpira fiksne datotečne deskriptorje.
    • Dodana je možnost ukazne vrstice jedra „rt_group_sched“ za upravljanje vključevanja razporejevanja skupin nalog v realnem času (SCHED_RR). Možnost je podobna nastavitvi RT_GROUP_SCHED v Kconfig.
    • Za naprave, ki temeljijo na vodilu CXL (Compute Express Link), ki se uporablja za visoko hitrostno komunikacijo med CPU in napravami za shranjevanje, je bila uvedena podpora za razširitve RAS (Reliability, Availability, Serviceability), ki omogočajo izvajanje različnih shem zaznavanja in popravila napak. CXL omogoča povezovanje novih področij pomnilnika, ki jih zagotavljajo zunanje naprave za shranjevanje, in njihovo uporabo kot dodatne vire fizičnega naslovnega prostora za širitev sistemskega RAM-a (DDR) ali trajnega pomnilnika (PMEM).
    • Potrebna minimalna različica GCC za sestavo jedra za vse arhitekture je bila dvignjena na vejo GCC 8. Za sestavo je zdaj potrebna tudi vsaj različica paketa binutils 2.30.
    • Odstranjen je sistemski klic uselib(), ki je že dolgo obsojen, in namesto njega se za skupni dostop programov do deljenih knjižnic uporablja mmap().
  • Virtualizacija in varnost
    • Dodana je začetna podpora za uporabo mehanizma Intel TDX (Trusted Domain Extensions) za zaščito gostiteljskih sistemov, ki delujejo pod nadzorom hipervizorja KVM, pred posredovanjem in analizo s strani skrbnika gostiteljske naprave ter pred fizičnimi napadi na strojno opremo. Zaščita je zagotovljena s šifriranjem pomnilnika. virtualnih naprav.
    • Dodali smo virtualni gonilnik TPM (Trusted Platform Module), ki omogoča virtualnim strojema interakcijo z TPM napravami, ki jih emulira modul SVSM (Secure VM Service Module).
    • Obnovljena je možnost uporabe GCC vtičnika randstruct, ki randomizira postavitev podatkovnih struktur med fazo prevajanja za otežitev izkoriščanja ranljivosti.
    • Dodana je možnost uporabe tehnologije IMA (Integrity Measurement Architecture) za preverjanje celovitosti ob zagonu novih jeder s sistemskim klicem kexec.
    • Opravljeno je delo na zmanjšanju vpliva na zmogljivost pri uporabi SELinux. Za pospešitev delovanja je dodana predpomnilnik z rezultati preverjanj dostopa do imenikov. V pravila genfscon je dodana možnost uporabe mask.
    • V kodi za interakcijo z EFI je omogočeno vstavljanje razdelka SBAT (UEFI Secure Boot Advanced Targeting) z metapodatki o umaknjenih različicah zagonskih komponent.
    • V nalaganih modulih je bila izvedena sprememba razdelka „.static_call_sites“ v način samo za branje po zaključku inicializacije.
    • Za 64-bitne ARM sisteme je u hipervizoru KVM implementirana podrška za ugniježđenu virtualizaciju (podrazumevano isključena).
    • U hipervizoru KVM je objavljena stabilna podrška za RISC-V arhitekturu.
  • Mrežna podsistem
    • Uključeni su ovpn drajveri, koji značajno povećavaju performanse OpenVPN-a premještanjem operacija enkripcije, obrade paketa i upravljanja komunikacionim kanalom na stranu Linux jezgra. Drajver omogućava eliminisanje troškova koji su povezani s prebacivanjem konteksta, optimizuje rad direktnim pristupom unutrašnjem API-ju jezgra i eliminiše sporo prenošenje podataka između jezgra i prostora korisnika (enkripcija, dekripcija i usmeravanje se obavljaju od strane modula bez slanja saobraćaja u obradu korisničkom prostoru).
    • U mehanizam Device Memory TCP dodate su podrške za slanje podataka iz memorije uređaja (TX putanja). Ranije je, radi pojednostavljenja integracije Device Memory TCP u jezgro, funkcionalnost bila ograničena samo na primanje podataka (RX putanja). Device Memory TCP omogućava korišćenje mrežnih soketa za direktno slanje sadržaja memorije perifernog uređaja putem mreže (zero-copy režim), kao i direktno smeštanje sadržaja mrežnih paketa u memorijski prostor uređaja na strani primaoca. Podaci koji se prenose u paketima šalju se od mrežne kartice u memoriju perifernog uređaja (DMABUF), na primer, u videoram GPU-a, ili iz memorije uređaja direktno na mrežnu karticu, zaobilazeći CPU, dok se zaglavlja paketa smeštaju u obične baferne zone jezgra.
    • Omogućeno je slanje sadržaja core-dumpova preko soketa AF_UNIX, što omogućava kreiranje sigurnijih obradnika core-dumpova u korisničkom prostoru, nezavisnih od poziva jezgra privilegovanih procesa.
    • Podrška za mrežni protokol DCCP (Datagram Congestion Control Protocol) je uklonjena, jer nije postigao široku primenu i već pet godina ostaje u jezgru bez podrške. Uklanjanje DCCP iz jezgra će ukloniti prepreke koje sprečavaju preradu strukture podataka inet_connection_sock radi poboljšanja efikasnosti rada TCP steka. Podrška za netfilter module za filtriranje DCCP paketa ostaje očuvana.
    • Za lažje obdelovanje napak pri uporabi socketov SO_PEERPIDFD lahko jedro zdaj prenese pidfd za že končane procese (pidfd je povezan s konkretnimi procesi in nasprotno od pid se ne dodeljuje ponovno).
    • Z BPF lahko zdaj ustvarimo obdelovalce za upravljanje paketnih čakalnih vrst v omrežni skladbi (qdiscs), da vplivamo na vrstni red obdelovanja omrežnih paketov.
    • V omrežni datotečni sistem AFS je uveden GSSAPI (Generic Security Services API) za upravljanje šifriranja povezav z strežniki YFS in OpenAFS.
    • Vnesenih je bilo veliko optimizacij. Preorganizirana so zaklepanja za tabele usmerjanja IPv6 (nekatere operacije z usmerjanjem se zdaj izvajajo do 3-krat hitreje). Pospešeno je programiranje izračuna kontrolnih zneskov crc32c. Motor GRO za tuneliran UDP promet je pospešen za 10 %. Izboljšana je avtomatska nastavitev sprejemnega predpomnilnika za TCP in povečane so privzete meje (v izvedenih testih se je propustnost za posamezne tokove prek 200Gbs povezave povečala za 60 %).
    • V Netfilter je dodana možnost uporabe mask v imenih omrežnih naprav, ki se uporabljajo v netdev in flowtable. V infrastrukturo nft trace je integrirana informacija o sledenju povezavam (conntrack). Pospešeno je pridobivanje tabel spremljanja povezav (conntrack) prek procfs.
  • Oprema
    • Dodana je podpora za prenos obdelave zvočnih tokov na stran zvočnih naprav z USB vmesnikom (USB audio offload). Ta sprememba znatno zmanjša porabo energije prenosnih naprav, saj omogoča nadaljevanje obdelave zvočnega toka, medtem ko ostali sistem počiva. Prej so bila v jedrih za platformo Android na voljo posebne implementacije offload obdelave zvoka za USB naprave, zdaj pa je v glavnem jedru na voljo univerzalna implementacija, ki jo lahko uporabljajo vsi projekti.
    • Nadaljuje se integracija komponent driverja Nova za NVIDIA GPU, opremljene GSP-firmware-i, ki se uporabljajo od serije NVIDIA GeForce RTX 2000 na osnovi mikroarhitekture Turing. Driver je napisan v jeziku Rust. Poleg komponenta nova-core, ki implementira osnovno raven abstrakcij nad programski vmesniki GSP-firmware-ov, je v različici 6.16 vključena začetna implementacija DRM-driverja nova-drm (Direct Rendering Manager) za interakcijo z GPU iz uporabniškega prostora.
    • Začel se je postopek vključevanja v jedro DRM-driverja Asahi za Apple AGX GPU, ki jih uporabljajo čipi Apple Silicon. Driver je napisan v Rustu. V tej fazi so v jedro vključene le glave z UAPI iz driverja Asahi, potrebne za Meso, medtem ko bo glavni koda driverja Asahi integriran kasneje.
    • V driver Nouveau je bila dodana podpora za NVIDIA GPU družin Hopper in Blackwell.
    • Nadaljuje se delo na drm-driverju (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe, ki se uporablja v grafikah Intel Arc in integrirani grafiki, od procesorjev Tiger Lake naprej. Dodana je bila možnost uporabe različnih datotek firmware za različne družine Intel GPU.
    • V driverju AMDGPU je bila implementirana podpora za mehanizem «usermode queue», ki omogoča ustvarjanje lastnih delovnih vrst v uporabniškem prostoru in njihovo pošiljanje neposredno GPU brez sklicevanja na načrtovalnik v jedru. Podpora za «usermode queue» je vključena za GPU Navi 4X in GFX 12.
    • Dodana je podpora za zvočne sisteme Intel WCL (Whiskey Lake), AMD ACP 7.x (Audio Co-Processor), Cirrus Logic CS35L63 in CS48L32, Everest Semiconductor ES8375 in ES8389, Pioneer DJM-V10, Longsoon-1 AC’97, NVIDIA Tegra264, Richtek ALC203, RT9123 in Rockchip SAI, pa tudi nove platforme Intel AVS.
    • Dodana je podpora za ARM-platforme, SoC in naprave: Samsung Exynos7870, Qualcomm Snapdragon X1P42100, Qualcomm MSM8926, RK3562, NXP i.MX94, Renesas RZ/V2N, Amlogic S6/S7/S7D, WonderMedia wm8950, Amlogic s805y, Allwinner A523, Toradex Verdin AM62P, ROCK 5B+, Nitrogen8M Plus, Retronix R-Car V4H Sparrow Hawk, MT8186 Ponyta Chromebook, VIA APC Rock/Paper, Renesas rz/t2h, ASUS Transformer Pad LTE TF300TL, LG Nexus 4, Google Pixel 4a, Raspberry Pi 2.
    • Driver za naprave za zajem videa na čipih STA2X11 je bil odstranjen.

Hkrati je latinskoameriška Fundacija prostega programske opreme oblikovala različico popolnoma prostega jedra 6.16 — Linux-libre 6.16-gnu, očiščenega od elementov vdelanih programske opreme in gonilnikov, ki vsebujejo neproste komponente ali dele kode, katerih uporaba je omejena s proizvajalcem. V izidu 6.16 je bila nevtralizirana nalaganje blobov v novih gonilnikih Intel qat 6xxx crypto, ST vd55g1 senzor, ath12k AHB wifi, Aeonsemi AS21xxx in MediaTek 25Gb Ethernet. Opravljena je bila tudi čistka imen blobov v dts-datotekah (devicetree) za ARM čipe Qualcomm in MediaTek. Posodobljen je bil koda čistke blobov v gonilnikih Nova Core, Nouveau, Realtek r8169 Ethernet, Qualcomm Iris, Venus, Mediatek mt7996 wifi, Qualcomm ath11k in ath12k wifi, Texas Instruments tas2781 in Renesas R-Car gen4 PCIe.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster