Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 6.14. Entre los cambios más destacados se encuentran: el controlador ntsync con primitivas de sincronización de Windows NT, la configuración de balanceo de operaciones de lectura en Btrfs RAID1, soporte para reflink en XFS en modo realtime, la posibilidad de entrada/salida bufferizada no almacenada en caché, el cgroup dmem para limitar la memoria de la GPU, la utilización de io_uring en FUSE, la delegación de atributos en NFS, el soporte para escritura atómica en Device mapper, la aceleración de enlaces simbólicos, la gestión de la capacidad de ejecutar scripts, el soporte para chips Qualcomm Snapdragon 8 Elite y un controlador para NPU AMD.
La nueva versión incluye 12115 correcciones de 1984 desarrolladores, el tamaño del parche es de 39 MB (los cambios afectaron a 10170 archivos, se añadieron 531586 líneas de código y se eliminaron 235999 líneas). En la versión anterior hubo 14172 correcciones de 2086 desarrolladores, el tamaño del parche fue de 46 MB. Aproximadamente el 41% de todos los cambios en 6.14 están relacionados con controladores de dispositivos, alrededor del 13% están relacionados con la actualización de código específico de arquitecturas de hardware, el 14% está relacionado con la pila de red, el 7% con sistemas de archivos y el 4% con subsistemas internos del núcleo.
Las principales novedades en el núcleo 6.14:
- Дисковая подсистема, ввод/вывод и файловые системы
- En el sistema de archivos Btrfs se ha introducido soporte para nuevos métodos de balanceo de operaciones de lectura entre los dispositivos que forman parte del RAID1. Además de la distribución de carga basada en identificadores de procesos (pid) que ya existía, la nueva versión ofrece tres nuevos modos de balanceo: 'rotation' (distribución uniforme de la carga entre todos los dispositivos, este modo está activado por defecto); 'latency' (distribución teniendo en cuenta las latencias, puede ser útil en caso de fallos o funcionamiento inestable de los dispositivos); y devid (gestión manual). Para cambiar el modo de balanceo, se ha añadido la interfaz '/sys/fs/btrfs//read_policy'. Entre otros cambios en Btrfs se encuentra la implementación de ioctl FS_IOC_READ_VERITY_METADATA.
- Dodana je funkcija nekontroliranog baferiranog ulaza/izlaza, pri čemu se podaci uklanjaju iz stranice cachea odmah nakon završetka operacija čitanja ili pisanja. Ova promjena može biti korisna prilikom korišćenja vrlo brzih uređaja za pohranu, kod kojih je keširanje operacija u radnoj memoriji suvišno. Za takve uređaje nova funkcija omogućava izbjegavanje nepotrebnog trošenja memorije stranice cachea bez pribjegavanja složenom API-ju direktnog ulaza/izlaza (Direct I/O).
- U fsnotify, mehanizmu praćenja promjena u datotečnom sustavu, dodan je novi događaj FS_PRE_ACCESS, koji se generira u fazi prije pristupanja sadržaju datoteke. Događaj se obrađuje u sinhronom režimu, tj. jezgra šalje događaj i čeka odgovor. Ako je odgovor primljen, operacija se izvršava, a u slučaju greške, sistemski poziv vraća kod greške u korisnički prostor. Pomoću FS_PRE_ACCESS proces u korisničkom prostoru može, na primjer, organizirati popunjavanje datoteke dok su podaci spremni u sporijem skladištu.
- U FUSE podsustavu, koja omogućava stvaranje implementacija datotečnih sustava u korisničkom prostoru, dodana je podrška za razmjenu podataka između jezgre i obraditelja u korisničkom prostoru korištenjem mehanizma ulaza/izlaza io_uring. Ova promjena dovodi do povećanja performansi FUSE-a smanjenjem prebacivanja konteksta između jezgre i korisničkog prostora.
- U XFS datotečnom sustavu dodana je mogućnost korištenja obrnute mapiranja (rmap, reverse-mapping) u režimu rada s predvidivim kašnjenjima ("realtime device"). Obrnuto mapiranje omogućava određivanje za koju datoteku se koristi određena blok na uređaju za pohranu. Pomoću rmap-a u XFS-u za realtime režim implementirana je podrška za operaciju reflink, koja omogućava izradu kopija datoteka kloniranjem metapodataka datoteke i stvaranjem veze na već postojeće podatke bez njihovog stvarnog kopiranja.
- U VFS-u je implementirano keširanje veličine simboličnih linkova, što je omogućilo ubrzanje izvršavanja operacije readlink za 1,5% (u testu sa /initrd.img u ext4). Keširanje je uključeno u FS ext4 i tmpfs.
- V implementaciji NFSv4.2 je dodana podpora za delegiranje datotečnih atributov, kar omogoča upravljanje z atributi datotek, kot je čas spremembe (mtime), na strani NFS odjemalca, brez potrebe po prenosu sprememb na strežnik. V NFS je prav tako izboljšana podpora za protokol 'LOCALIO', ki omogoča ugotovitev, ali sta odjemalec in strežnik NFS na istem gostitelju, da se izvedejo ustrezne optimizacije, kot je uporaba neposrednega vnosa/izvoda (Direct I/O) s strani odjemalca.
- Izboljšana je zmogljivost operacij branja v datotečnih sistemih NETFS, CIFS in AFS (Andrew File System).
- V Squashfs je bil vključen način neposrednega nalaganja blokov v strančni predpomnilnik (SQUASHFS_FILE_DIRECT), kar omogoča, da se izognemo ločenemu predpomnilniku read_page. Ta sprememba je omogočila zmanjšanje velikosti pomnilnika, ki ga zahteva delovanje Squashfs.
- V sistemskem klicu statx() je bil implementiran flags STATX_DIO_READ_ALIGN, za določanje zahtevanega poravnanja za operacije branja iz datoteke.
- V datotečnem sistemu Bcachefs je bil posodobljen in stabiliziran format diskovnih struktur. Vse nadaljnje spremembe formata bodo obravnavane kot neobvezne in bodo implementirane v obliki opcijskih dopolnitev. Znatno je povečana hitrost preverjanja celovitosti FS. Poleg tega je v Bcachefs izboljšano delovanje v načinu samo za branje; odpravljene so težave, ki vodijo do dostopa do pomnilnika po njegovi osvoboditvi (use after free); rešene so težave s reflink pokazatelji v fsck; popravljena je obravnava ponovnega zagona transakcij.
- Vrnjena je bila modul md-linear, namenjen združevanju blokovnih naprav. Ta modul je bil prej razglašen za zastarelo in odstranjen iz jedra 6.8, vendar se je izkazalo, da je bil potreben in je bil zato zdaj obnovljen.
- Datotečna sistema F2FS in SQUASHFS sta prešla na uporabo stranišnih folij (page folios).
- Datotečna sistema OCFS2 in DLMFS sta prešla na uporabo novega API za montiranje particij.
- V gonilniku null_blk je bil implementiran atribut 'rotational', nastavljen preko configfs, ki omogoča simulacijo dela z napravami na osnovi vrtečih se diskov za poenostavitev testiranja funkcij jedra.
- V sistemu Device mapper in v modulih dm-mirror, dm-io, dm-table, dm-linear, dm-stripe in dm-raid1 je bila implementirana podpora za atomsko pisanje.
- Pomnilnik in sistemske storitve
- Integracija u jezgru drajvera ntsync, koja realizuje simbolički uređaj /dev/ntsync i set primitiva za sinhronizaciju korišćenih u jezgru Windows NT, je završena. Implementacija ovakvih primitive na nivou jezgra značajno poboljšava performanse Windows igara koje se pokreću pomoću Wine. Povećanje performansi se postiže eliminacijom troškova vezanih za korišćenje RPC u korisničkom prostoru. Kreiranje posebnog drajvera za jezgro Linux je objašnjeno problematičnošću ispravne implementacije NT sinhronizacionog API-ja u odnosu na postojeće primitive u jezgru.
- Dodata je nova cgroup DMEM kontroler za odvojeno praćenje memorijskih područja uređaja, kao što su GPU. DMEM omogućava kreiranje posebnih cgroup za različite zadatke koji koriste GPU, kako bi se moglo izvršavati bez međusobnog uticaja. Nova funkcionalnost rešava problem obustavljanja operacija sa GPU prilikom istrošenosti dostupne memorije, zahvaljujući praćenju reflektovane memorije GPU i memorije CPU koja se koristi od strane drajvera u posebnim cgroup.
- Optimizovane su operacije skaliranja za ispražnjavanje (flush) TLB (Translation Lookaside Buffer) keša, koji se koristi za ubrzanje konverzije virtuelnih adresa u fizičke. Dodate optimizacije svode se na odloženo ažuriranje nekih struktura podataka tokom prebacivanja konteksta, što omogućava poboljšanje performansi prilikom prolaska nekih testova.
- Povećane su performanse MGLRU (Multi-Generational LRU) mehanizma, koji se koristi za određivanje koje stranice memorije se koriste, a koje mogu biti izgnane u deo za razmenu.
- Nadaljevanje prenosa 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 aktivna in ne vodi do vključitve Rusta med obvezne odvisnosti za sestavljanje jedra). Omogočena je uporaba v jedrskem kodeku makra „derive(CoercePointee)“, ki omogoča uporabo pametnih kazalcev s trait-objekti. V jedro so vključeni Rust-wrapperji za PCI, platforme, Open Firmware, simbolne naprave in nekatere funkcije vhod/izhod. Greg Kroah-Hartman, odgovoren za podporo stabilni veji jedra Linux, je trenutno stanje označil kot „skoraj pripravljeno za pisanje pravega gonilnika v Rustu“.
- V scenarijih za sestavljanje je predlagana nova koda za generiranje različic za debug simbole za naložene module, ki zdaj uporablja informacije iz zapisov o napakah v formatu DWARF, namesto da bi neposredno analizirala izvorno kodo. Sprememba omogoča uporabo različic debuggerskih simbolov za module, napisane v jeziku Rust. Stara implementacija je prav tako ohranjena v jedru, izbira generatorja pa se izvede na ravni možnosti za sestavljanje.
- Za arhitekturo PowerPC je bila implementirana podpora za način lenivega prekinjanja nalog (PREEMPT_LAZY), ki ustreza načinu popolnega prekinjanja („full preemption“) za realnočasovne naloge (RR/FIFO/DEADLINE), vendar odloži prekinitev običajnih nalog (SCHED_NORMAL) do meje tikov.
- V podseznam profilinga zmogljivosti „perf“ je dodana podpora za števce porabe energije procesorjev AMD. Dodana je možnost delovanja na sistemih, ki imajo do 2048 CPU jeder.
- Omogočena je uporaba parametra sysctl pid_max s prostori imen procesnih identifikatorjev (ID namespace). Parameter pid_max je namenjen omejevanju največje vrednosti identifikatorjev procesov (PID) in ga je zdaj mogoče uporabiti za omejevanje največjega možnega števila procesov, zagnanih v določenem prostoru imen. Obravnava parametra poteka hierarhično, torej omejitve v zunanjih prostorih imen veljajo tudi za vgrajene prostore imen.
- Pri uporabi za zagon procesa sistemskega klica execveat v datotečnem sistemu /proc bo sedaj prikazano ime zagnane datoteke in ne številka datotečnega descriptorja.
- V sestavo izvorne kode jedra (v imeniku samples/vfs) je bila dodana orodje mountinfo, ki prikazuje uporabo sistemskih klicev statmount() in listmount().
- V podsistemu BPF so bile predlagane nove funkcije bpf_local_irq_save() in bpf_local_irq_restore() za začasno onemogočanje prekinitev na lokalnem CPU. Funkcije se lahko uporabijo za implementacijo struktur, katerih obdelava ni prekinjena.
- V sistemskem klicu madvise() pri uporabi vlag MADV_DONTNEED in MADV_FREE je zagotovljeno sproščanje tabel strani pomnilnika, povezanih z sproščenim obsegom naslovov, saj lahko v nekaterih situacijah prazne strani pomnilnika zasedejo precej veliko pomnilnika.
- Za arhitekturo OpenRISC je bila implementirana podpora mehanizmu ponovljivih zaporedij (rseq, restartable sequences), namenjenemu hitremu atomarnemu izvajanju operacij, ki se v primeru prekinitve z drugim nitjo počistijo in poskuša se jih znova izvesti.
- Izvedena je bila reorganizacija kode z implementacijo algoritemov CRC32 in CRC-T10DIF, ki se več ne prekrivata s podsistemom crypto in se neposredno kliče iz knjižničnega vmesnika. Sprememba je omogočila poenostavitev kode in povečanje njene učinkovitosti.
- V sistem asynhronega vhod/izhod io_uring je dodan vmesnik za prenos dodatnih metapodatkov o celovitosti pri izvajanju operacij branja in pisanja.
- Virtualizacija in varnost
- V sistemski klic execveat je bila dodana oznaka AT_EXECVE_CHECK, ki omogoča preverjanje veljavnosti izvajanja datoteke brez dejanskega zagon, ob upoštevanju varnostnih politik, pravic dostopa in aktivnih modulov LSM. Za uporabo v kombinaciji z AT_EXECVE_CHECK so predlagane varnostne oznake SECBIT_EXEC_RESTRICT_FILE in SECBIT_EXEC_DENY_INTERACTIVE, ki jih je mogoče uporabiti za omejevanje izvrševanja datotek s skrbniškimi jeziki programiranja. Oznaka SECBIT_EXEC_RESTRICT_FILE nalaga kompilatorjem in interpreterjem, naj uporabijo možnost AT_EXECVE_CHECK za preverjanje veljavnosti izvrševanja, oznaka SECBIT_EXEC_DENY_INTERACTIVE pa prepoveduje obdelavo interaktivnih ukazov. Glavna ideja spremembe je v možnostih uporabe varnostnih politik ne samo za tradicionalne izvršljive datoteke, temveč tudi za besedilne datoteke s skripti, ki jih je mogoče naložiti med zagonoma interpreterja (tj. prepoved izvrševanja je mogoče uvesti ne samo pri zagonu './script.sh', ampak tudi pri izvajanju v obliki 'sh script.sh').
- Na sistemih x86 je bila uvedena podpora za zaščitene časovne števce za gostiteljske sisteme, ki ne dovoljujejo spreminjanja sistemskih ur gostiteljske naprave iz gostovskega okolja. Možnost je bila realizirana na osnovi mehanizma AMD SEV (Secure Encrypted Virtualization), ki se uporablja v virtualizacijskih sistemih za zaščito virtualnih naprav pred vmešavanjem hipervizorja ali skrbnika gostiteljske naprave.
- V sistem mmandatnega nadzora SELinux je bila dodana podpora za xperm pravila, ki omogočajo povezovanje politik SELinux s specifičnimi klici ioctl() ali sporočili netlink.
- Za overitev jedrskih modulov z digitalnim podpisom je namesto SHA1 privzeto uporabljen algoritem SHA512.
- V gonilnikih za gostiteljske sisteme VirtualBox je bila vključena podpora za arhitekturo ARM64.
- V hipervizorju KVM delo na aktivaciji mehanizma Intel TDX (Trusted Domain Extensions) za šifriranje pomnilnika gostiteljski sistemov se nadaljuje.
- V virtio_blk je bila dodana podpora za način obnove napak.
- Mrežna podsistem
- V implementaciji protokola RxRPC je nastala možnost uporabe velikih UDP okvirjev za povečanje prepustnosti.
- Za TCP je bila dodana podpora za algoritem RACK-TLP za določanje izgube paketov.
- Dodana nova sysctl tcp_tw_reuse_delay, ki deluje v povezavi z imenskim prostorom (network namespace) in omogoča določitev zamude, preden sistem lahko ponovno uporabi številko omrežnega vrata po zaprtju TCP-soketa.
- Dodana možnost izbire ponudnika natančnega časa (PTP) za oblikovanje časovnih oznak na ravneh PHY in MAC.
- Implementirana je podpora za mehanizem agregacije in fragmentacije encapsulated IP-paketov v IPsec — IP-TFS/AGGFRAG (IP Traffic Flow Security / Aggregation and Fragmentation Mode za Encapsulating Security Payload).
- V sistem omrežnih soketov je dodana podpora za prenos informacij o prioriteti (SO_PRIORITY) v obliki upravljalnih sporočil (cmsg — control messages). Za omrežne sokete je dodana možnost SO_RCVPRIORITY, ki vključuje prenos informacij o prioriteti soketa v funkciji recvmsg().
- Oprema
- Dodana je gonilnik amdxdna za integrirane v CPU AMD pospeševalnike NPU (Neural Processing Unit) na osnovi arhitekture XDNA, namenjenega pospeševanju operacij, povezanih z učenjem stroj. NPU, temelječ na arhitekturi XDNA, je na voljo v serijah 7040 in 8040 procesorjev AMD Ryzen, pospeševalnikih AMD Alveo V70 in SoC AMD Versal.
- V gonilniku i915 so dodani identifikatorji novih GPU, implementiran je obvladovalec napak inicializacije HDMI, povečana je zanesljivost ponovne nastavitve GPU motorjev na sistemih Haswell in starejših.
- Delo na drm-gonilniku (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe se nadaljuje, kar se uporablja v grafičnih karticah Intel družine Arc ter integrirani grafiki, od procesorjev Tiger Lake naprej.
- V gonilniku Nouveau je dodana možnost prenosa predpomnilnikov s koti GSP-RM preko debugfs.
- V gonilniku AMDGPU je implementirana podpora za mehanizem DRM panic, ki zagotavlja podobo 'modrega zaslona smrti' pri napakah. Priprave se nadaljujejo za podporo prihodnji seriji grafičnih kartic Radeon RX 9000, ki temeljijo na arhitekturi RDNA4. Vzpostavljena je podpora za DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS in ISP.
- V DRM-gonilniku msm (GPU Qualcomm Adreno) je dodana podpora za platformo Qualcomm SM6150 (QCS615).
- V DRM-gonilniku panfrost je dodana podpora za SoC MediaTek MT8188 s GPU Mali-G57.
- V DRM-gonilniku vc4 je dodana podpora za SoC Broadcom BCM2712 (Raspberry Pi 5).
- V vfio-gonilniku nvgrace-gpu je dodana podpora za čipe NVIDIA Grace Blackwell 200.
- V paketu je vključeno gonilo za Intel THC (Touch Host Controller), ki se uporablja za interakcijo s tactile zasloni in touchpadi v nekaterih prenosnih računalnikih. Dodana je podpora za naprave Wacom s PCI vmesnikom. Dodana je podpora za igralne krmilnike QH Electronics.
- Dodana je podpora za ARM platforme, SoC in naprave: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Dodana je podpora za SoC SpacemiT K1 na osnovi arhitekture RISC-V.
- V zvočnem sistemu ALSA za MIDI 2.0 so razširjeni API rawmidi in sequencer. V API za zunanje delovanje kompresijskih operacij je dodana podpora za ASRC (Asynchronous Sample Rate Conversion).
- Dodana je podpora za zvočne sisteme naprav Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 in 18i20. Dodana je podpora za brezžične slušalke SteelSeries Arctis 9.
Izvor: opennet.ru
