Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds utgivningen av Linux-kÀrna 6.16. Bland de mest framtrÀdande förÀndringarna finns: drivrutin för att accelerera OpenVPN, Kexec HandOver-mekanism, aktivering av fem nivÄer av minnessidor som standard för x86, borttagning av DCCP-protokollet, blockdrivrutin för zloop, möjlighet att skicka core-dump via UNIX-socket, stöd för atomÀr skrivning i XFS, offload-behandling av ljud för USB-enheter, optimeringar i Ext4, virtuell drivrutin för TPM (Trusted Platform Module), fullstÀndig implementering av Device Memory TCP, stöd för namnlösa kanaler i io_uring, förberedelse för integration av DRM-drivrutin för Asahi,
I den nya versionen har 15924 korrigeringar accepterats frÄn 2145 utvecklare, patchstorleken Àr 50 MB (Àndringarna berörde 13793 filer, 655451 rader kod lades till, 316441 rader togs bort). I den tidigare versionen var det 15945 korrigeringar frÄn 2154 utvecklare, patchstorleken var 59 MB. Cirka 45% av alla förÀndringar i 6.16 Àr relaterade till enhetsdrivrutiner, ungefÀr 16% har att göra med uppdatering av kod specifik för hÄrdvaruarkitektur, 13% handlar om nÀtverksstacken, 4% handlar om filsystem och 3% handlar om interna kÀrnsystem.
Huvudsakliga nyheter i kÀrnan 6.16:
- Disksubsystem, in- och utmatning och filsystem
- En zloop-drivrutin har lagts till för att skapa zonerade block-loopback-enheter som kan monteras i loop-lÀge. Drivrutinen emulerar funktionen hos vanliga blockenheter genom att anvÀnda flera filer frÄn ett befintligt filsystem (en fil för att lagra varje zon). Denna funktion kan vara anvÀndbar för att testa filsystem, device mapper-hanterare och applikationer för deras stöd för zonerade enheter som tillÀmpar uppdelning i zoner av blockgrupper eller sektorer, dÀr endast sequential data kan lÀggas till med uppdatering av hela blockgruppen.
- I XFS-filsystemet har stöd för atomar skrivningar av stora datamÀngder implementerats - flera block kan nu skrivas i atomÀrt lÀge (antingen skrivs alla block framgÄngsrikt eller inget block skrivs).
- I filsystemet Ext4 har prestandan för mekanismen "fast commit" ökat. Stöd för stora sidblad (large folios) för vanliga filer har lagts till, vilket i genomförda tester har ökat prestandan med 37 % vid intensiv sekventiell in- och utmatning. Stöd för atomÀra skrivoperationer som omfattar flera block har Àven lagts till.
- I drivrutinen för filsystemet ext2 har stödet för mekanismen DAX, som möjliggör direkt Ätkomst till filsystemet utan att gÄ via sidcache, deklarerats som förÄldrat. Borttagning av DAX frÄn drivrutinen ext2 Àr planerad till slutet av Äret. Som orsak nÀmns att drivrutinen ext2 betraktas som en stabil referensimplementation dÀr specifika funktioner som inte fÄtt tillrÀcklig spridning inte Àr acceptabelt.
- Filsystemen OrangeFS, UFS, BFS och OMFS har uppdaterats till att anvÀnda det nya API:et för montering av partitioner.
- I sysctl har instÀllningen vfs_cache_pressure_denom lagts till för att hantera antalet poster i "dentry"-cachen (det interna representationssystemet för katalogobjekt) under minnesbrist. Ju större vÀrde som stÀlls in, desto fler poster kan tas bort frÄn cachen (fÀrre poster kommer att finnas kvar i cachen) vid minnesbrist.
- I filsystemet Bcachefs har alternativet "rebalance_on_ac_only" lagts till, vilket förhindrar att ombalanseringsoperationer och bakgrundskomprimering utförs nÀr systemet drivs av batteri. Operationerna för att ta bort snapshots och enheter har snabbats upp. MinnesanvÀndningen vid montering i endast lÀslÀge har minskats. Möjligheten att köra vissa ÄterstÀllningsoperationer efter krascher i bakgrunden utan att stoppa arbetet i filsystemet har lagts till.
- Strömstyrningssystemet har fÄtt tillstÄnd att sjÀlvstÀndigt frysa filsystem och EFI-variabler för vilande och sömnlÀgen (om filsystemet redan har frysts av anvÀndarrumshanteraren sÄ utförs ingen ny frysfunktion).
- Möjligheten att öka prestandan för EROFS med hjÀlp av Intel:s inbyggda accelerator QAT (QuickAssist Technology) har lagts till, vilket erbjuder verktyg för att pÄskynda berÀkningar relaterade till komprimering och kryptering.
- I NFS har den maximala storleken pÄ datamÀngden för lÀs- och skrivoperationer ökat frÄn 1 till 4 MB (standardvÀrdet Àr 1 MB eftersom inte alla klienter stöder en större storlek).
- Icke-privilegierade anvÀndare med CAP_SYS_ADMIN-rÀttigheter i ett separat anvÀndarnamnsnamn (user namespace), men utan utvidgade rÀttigheter i rotanvÀndarnamnsnamnet, fÄr möjlighet att anvÀnda fanotify-mekanismen för att övervaka Àndringar i filsystemen.
- För filsystem som anvÀnder FUSE-understödet har funktionen för att rensa alla cacheade katalogposter (dentries) samtidigt lagts till. Stöd för stora sidblad har lagts till i FUSE-understödet.
- I OverlayFS har stöd för att skapa datalager i icke-privilegierade namnrymder realiserats, dÀr dataintegritetskontrollen baseras pÄ dm-verity-modulen. Denna funktionalitet möjliggör kombinationen av pÄlitliga lager med metadata med icke-pÄlitliga datalager som hanteras i icke-privilegierade namnrymder.
- Minne och systemtjÀnster
- En KHO-mekanism (Kexec HandOver) har lagts till för att starta ett nytt kÀrna frÄn det gamla utan att förlora systemets tillstÄnd. Innan kontrollen överlÀmnas till den nya kÀrnan kan tillstÄndet för viktiga delsystem i kÀrnan serialiseras till ett minnesomrÄde som inte pÄverkas av efterföljande operationer. Den nya kÀrnan ÄterstÀller det serialiserade tillstÄndet nÀr den fÄr kontroll. Baserat pÄ KHO utvecklas Live Update Orchestrator (LUO), vilket möjliggör omladdning av kÀrnan utan att stoppa enheternas arbete.
- En ny parameter för kÀrnbygget CONFIG_X86_NATIVE har lagts till, vilket möjliggör anvÀndning av alternativet "-march=native" under kompileringen för att optimera med hÀnsyn till processorens kapabiliteter pÄ den aktuella systemet.
- Stöd för Intel APX-arkitekturens instruktioner (Advanced Performance Extension) har lagts till, som tillhandahÄller 16 ytterligare allmÀnna register (utöver de 16 som redan finns), vilket gör det möjligt att anvÀnda fÀrre minneslÀsningar och skrivningar i koden för att öka prestandan och minska energiförbrukningen.
- En automatisk instÀllning av minnesfördelningspolicy i NUMA-system har lagts till, dÀr alla nodvikter omberÀknas vid ny information om bandbredd under uppstart eller vid hotplugging av minne.
- Implementeringen av futexer har fÄtt stöd för en lokal hash-tabell för processer (local futex_hash_bucket), som i motsats till den tidigare stödda gemensamma hash-tabellen för alla processer, Àr lokal för enskilda processer och kan anvÀndas av alla trÄdar i denna process. Lokala hash-tabeller anvÀnds endast för futex-operationen PROCESS_PRIVATE. Dessutom har den nya versionen lagt till stöd för alternativen FUTEX2_NUMA och FUTEX2_MPOL, vilket möjliggör pÄverkan pÄ placeringen av futexer i minnet, för att placera dem nÀrmare de processer som anvÀnder dem.
- För x86_64-system har permanent stöd för fem-nivÄ minnestabeller aktiverats (parametern CONFIG_X86_5LEVEL, som styrde aktiveringen av fem-nivÄtabeller, har tagits bort).
- I drivrutinen intel_pstate, som hanterar energiförbrukningen (P-state) pĂ„ system med Intel-processorer, har stöd lagts till för att schemalĂ€ggaren ska ta hĂ€nsyn till energiförbrukningen (EAS â Energy Aware Scheduling) pĂ„ hybrida processorer, som kombinerar högpresterande och energieffektiva CPU-kĂ€rnor, sĂ„som Intel Lunar Lake.
- I sysfs har grÀnssnitt lagts till: '/sys/devices/system/cpu/cpuN/cpu_capacity' för att hÀmta information om olika CPUs kapabiliteter i hybrida processorer och '/sys/devices/system/cpu/cpuidle/intel_c1_demotion' för att styra möjligheten att hÄlla CPU i ett mer presterande tillstÄnd, Àven om kÀrnan försöker överföra CPU till ett lÀgre energiförbrukningstillstÄnd (till exempel kan kÀrnan begÀra övergÄng till energiförbrukningstillstÄndet C6, men firmware vid hög intensitet av CPU-vÀckning kan hÄlla den i tillstÄndet C1).
- För ARM64-arkitekturen har stöd för en lat upphÀvning av uppgifter (PREEMPT_LAZY, lazy preemption) lagts till, vilket motsvarar full upphÀvning ('full preemption') för realtidsuppgifter (RR/FIFO/DEADLINE), men fördröjer upphÀvningen av vanliga uppgifter (SCHED_NORMAL) tills tick-grÀnsen.
- För ARM64-arkitekturen har stöd lagts till för anvÀndning av SME-tillÀgg (Scalable Matrix Extension), som aktiveras via parametern CONFIG_ARM64_SME.
- Ăndringarna frĂ„n Rust-for-Linux-grenen som rör anvĂ€ndningen av Rust som ett andra sprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler har fortsatt (stöd för Rust Ă€r inte aktiverat som standard och gör inte att Rust inkluderas bland de obligatoriska byggberoendena för kĂ€rnan). För moduler skrivna i Rust har möjligheten att anvĂ€nda configfs angetts. Abstraktioner nödvĂ€ndiga för utveckling av grafiska drivrutiner har lagts till. Möjligheterna hos modulerna alloc, time, str, list, workqueue och page har utvidgats. Stöd för makrot "assert!" i tester baserade pĂ„ KUnit har lagts till. En uppsĂ€ttning abstraktioner för att hantera CPU-frekvens och anvĂ€ndningen av API:er relaterade till energihantering har lagts till. Stöd för datatypen 'xarray' har lagts till.
- För RISC-V-arkitekturen har implementeringen av systemanropet getrandom() överförts, optimerat med hjÀlp av mekanismen vDSO (virtual dynamic shared object), vilket gör det möjligt att överföra systemanropshanteraren frÄn kÀrnan till anvÀndarrummet och undvika kontextvÀxlingar. Tester har visat att optimeringen har ökat hastigheten för att fÄ slumpmÀssiga nummer 17 gÄnger. Stöd för vektorextensionerna Zicbop, Zabha och Svinval, som anvÀnds i SiFive-processorer, har ocksÄ implementerats för RISC-V.
- För LoongArch-arkitekturen har grÀnsen för antalet CPU:er i systemet höjts frÄn 256 till 2048. Stöd för multitasking-planeraren SCHED_MC (Multi-core) har lagts till.
- Möjligheten att anvÀnda Unix-sockets för överföring av filbeskrivare har lagts till. Applikationer kan anvÀnda flaggan SO_PASSRIGHTS i setsockopt() för att stÀnga av denna möjlighet.
- Möjlighet till mappning av ringbufferten, som anvÀnds för spÄrning av kÀrnans arbete, till anvÀndarutrymmets minne har tillhandahÄllits.
- Crash-dump-hanterare, som anvÀnds för att generera problemrapporter efter kÀrnans krasch, kan nu utnyttja de LUKS-nycklar som den kraschade kÀrnan anvÀnde för att spara crash-dumpar i krypterade filsystem.
- I det asynkrona I/O-systemet io_uring har operationen IORING_OP_PIPE lagts till för att skapa namnlösa kanaler, vilket liknar systemanropet pipe2, förutom att det stödjer fasta filbeskrivare.
- En kommandoradoption för kÀrnan har lagts till, "rt_group_sched", för att hantera aktiveringen av schemalÀggaren för realtidsgrupper (SCHED_RR). Alternativet liknar instÀllningen RT_GROUP_SCHED i Kconfig.
- För enheter baserade pÄ CXL-bussen (Compute Express Link), som anvÀnds för att organisera högpresterande interaktion mellan CPU och minnesenheter, har stöd för RAS-tillÀgg (Reliability, Availability, Serviceability) implementerats, vilket möjliggör olika metoder för felidentifiering och korrigering. CXL gör det möjligt att ansluta nya minnesomrÄden som tillhandahÄlls av externa minnesenheter och anvÀnda dem som ytterligare resurser i det fysiska adressutrymmet för att utöka systemets RAM (DDR) eller icke-flyktigt minne (PMEM).
- Den nödvÀndiga minimiversionen av GCC för att bygga kÀrnan har höjts till GCC 8 för alla architekturer. Nu krÀvs Àven minst version 2.30 av paketet binutils för byggandet.
- Systemanropet uselib() har tagits bort, som lÀnge har förklarats som förÄldrat, och istÀllet anvÀnds mmap() för gemensam tillgÄng till delade bibliotek av program.
- Virtualisering och sÀkerhet
- Inledande stöd har lagts till för att anvÀnda mekanismen Intel TDX (Trusted Domain Extensions) för att skydda gÀstsystem som körs under hypervisorn KVM, frÄn ingripande och analys frÄn administratören av vÀrdsystemet och fysiska angrepp pÄ hÄrdvaran. Skyddet sÀkerstÀlls genom minneskryptering. virtuella maskiner.
- En virtuell TPM-drivrutin (Trusted Platform Module) har lagts till, vilket möjliggör för virtuella maskiner att interagera med TPM-enheter som emuleras av SVSM-modulen (Secure VM Service Module).
- Möjligheten att anvÀnda GCC-pluginen randstruct, som randomiserar layouten av datastrukturer under kompileringen för att komplicera exploitering av sÄrbarheter, har ÄterstÀllts.
- Stöd för att anvÀnda IMA-teknologin (Integrity Measurement Architecture) för integritetskontroll vid uppstart av nya kÀrnor med systemanropet kexec har lagts till.
- Arbete har genomförts för att minska pÄverkan pÄ prestandan av att anvÀnda SELinux. För att pÄskynda arbetet har en cache med resultat av tillgÄngskontroller till kataloger lagts till. Genom genfscon-regler har möjligheten att anvÀnda masker lagts till.
- I koden för interaktion med EFI har möjligheten att inkorporera SBAT-sektionen (UEFI Secure Boot Advanced Targeting) med metadata om Äterkallade versioner av bootkomponenter lagts till.
- I de laddade modulerna har sektionen ".static_call_sites" överförts till skrivskyddat lÀge efter att initialiseringen har slutförts.
- För 64-bitars ARM-system har hypervisorn KVM fÄtt stöd för inbÀddad virtualisering (avstÀngd som standard).
- I hypervisorn KVM har stabilt stöd för RISC-V-arkitekturen deklarerats.
- NĂ€tverkssystemet
- Drivrutinen ovpn har inkluderats, vilket avsevÀrt förbÀttrar prestandan för OpenVPN genom att flytta krypteringsoperationer, paketbehandling och kommunikationskontroll till Linux-kÀrnan. Drivrutinen eliminerar overhead kopplad till kontextbyten, möjliggör optimering genom direkt tillgÄng till kÀrnans interna API och utesluter lÄngsam dataöverföring mellan kÀrnan och anvÀndarutrymmet (kryptering, avkryptering och routning utförs av modulen utan att skicka trafik till en hanterare i anvÀndarutrymmet). till kÀrnan för att eliminera onödiga kontextbyten.
- I Device Memory TCP-mekanismen har stöd för att skicka data frÄn enhetsminnet (TX path) lagts till. Tidigare var funktionaliteten begrÀnsad till att ta emot data (RX path) för att förenkla integrationen av Device Memory TCP i kÀrnan. Device Memory TCP gör det möjligt att anvÀnda nÀtverks-sockets för direkt överföring av innehÄllet i minnet frÄn den perifera enheten över nÀtverket (zero-copy-lÀge), samt direkt placering av innehÄllet i nÀtverkspaketen i enhetsminnesomrÄdet pÄ mottagarens sida. Data som överförs i paketen skickas frÄn nÀtverkskortet till minnet pÄ den perifera enheten (DMABUF), till exempel till GPU-minnet, eller direkt frÄn enhetsminnet till nÀtverkskortet, utan att gÄ via CPU, och pakethuvudena hamnar i vanliga kÀrnbuffrar.
- Möjlighet har givits att skicka innehÄllet i core-dump genom socket AF_UNIX, vilket möjliggör skapandet av mer sÀkra core-dump-hanterare i anvÀndarutrymmet som inte Àr beroende av att kÀrnan anropar privilegierade processer.
- Stödet för nÀtverksprotokollet DCCP (Datagram Congestion Control Protocol) har tagits bort, eftersom det inte har fÄtt spridning och har varit utan underhÄll i kÀrnan i fem Är. Borttagningen av DCCP frÄn kÀrnan kommer att eliminera hinder för att omarbeta datastrukturen inet_connection_sock för att öka effektiviteten i TCP-stacken. Stödet för netfilter-moduler för DCCP-paketfilter har bevarats.
- För att förenkla felförvaltning vid anvÀndning av sockets kan kÀrnan nu överföra pidfd för redan avslutade processer (pidfd kopplas till specifika processer och till skillnad frÄn pid Äterförs det inte).
- Med hjÀlp av BPF kan man nu skapa hanterare för paketköer i nÀtverksstacken (qdiscs) för att pÄverka ordningen av nÀtverkspaket.
- I nÀtverksfilsystemet AFS har GSSAPI (Generic Security Services API) introducerats för att hantera kryptering av anslutningar till servrar YFS och OpenAFS.
- En stor mÀngd optimeringar har genomförts. Organisationen av lÄs för IPv6-routingtabeller har omarbetats (vissa operationer med rutter utförs nu upp till 3 gÄnger snabbare). Programmatisk berÀkning av checksummor crc32c har snabbats upp. GRO-motorn för tunneltrafik med UDP har ocksÄ blivit 10% snabbare. Automatisk justering av mottagarens buffert för TCP har förbÀttrats och de standardmÀssigt tillÀmpade begrÀnsningarna har höjts (i genomförda tester ökade bandbredden för enstaka flöden genom 200 Gbs-kanalen med 60%).
- Netfilter har fÄtt möjligheten att anvÀnda masker i namnen pÄ nÀtverksenheter som anvÀnds i netdev och flowtable. Informationen om anslutningsspÄrning (conntrack) har integrerats i nft trace-infrastrukturen. Utdragning av tabeller för anslutningsspÄrning (conntrack) genom procfs har snabbats upp.
- Utrustning
- Stöd för avlastning av ljudströmmande bearbetning till USB-ljudenheter har lagts till (USB audio offload). Denna Àndring gör det möjligt att avsevÀrt minska energiförbrukningen för bÀrbara enheter genom att fortsÀtta bearbeta ljudströmmen medan resten av systemet Àr i vilolÀge. Tidigare fanns en specifik implementering av ljudoffload för USB-enheter i kÀrnor för Android-plattformen, men nu finns en universell implementering i huvudkÀrnan som kan anvÀndas av alla projekt.
- Integration of Nova driver components for NVIDIA GPUs equipped with GSP firmware, used starting from the NVIDIA GeForce RTX 2000 series based on the Turing microarchitecture, has been continued. The driver is written in Rust. In addition to the nova-core component added in the previous release, which implements a basic level of abstractions over the GSP firmware API, version 6.16 includes the initial implementation of the nova-drm (Direct Rendering Manager) DRM driver for interaction with the GPU from user space.
- The process of promoting the Asahi DRM driver for Apple AGX GPUs, used in Apple Silicon chips, has begun. The driver is written in Rust. At this stage, only the header files with UAPI from the Asahi driver, necessary for Mesa, are included in the kernel, and the main code of the Asahi driver will be integrated later.
- Support for NVIDIA Hopper and Blackwell family GPUs has been added to the Nouveau driver.
- Work has continued on the Xe DRM driver (Direct Rendering Manager) for GPUs based on the Intel Xe architecture, which is used in Intel Arc graphics cards and integrated graphics starting from Tiger Lake processors. The ability to use different firmware files for different Intel GPU families has been added.
- The AMDGPU driver has implemented support for the 'usermode queue' mechanism, allowing the creation of custom work queues in user space and sending them directly to the GPU without referring to the kernel scheduler. Support for 'usermode queue' is enabled for Navi 4X and GFX 12 GPUs.
- Support for audio systems has been added, including Intel WCL (Whiskey Lake), AMD ACP 7.x (Audio Co-Processor), Cirrus Logic CS35L63 and CS48L32, Everest Semiconductor ES8375 and ES8389, Pioneer DJM-V10, Longsoon-1 ACâ97, NVIDIA Tegra264, Richtek ALC203, RT9123 and Rockchip SAI, as well as new Intel AVS platforms.
- Support for ARM platforms, SoCs, and devices has been added: 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.
- The driver for video capture boards based on STA2X11 chips has been removed.
Samtidigt har den latinska fri programvara stiftelsen skapat en helt fri kĂ€rnversion 6.16 â Linux-libre 6.16-gnu, rensad frĂ„n element av firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I version 6.16 har belastningen av blobbar i nya Intel qat 6xxx crypto, ST vd55g1 sensor, ath12k AHB wifi, Aeonsemi AS21xxx och MediaTek 25Gb Ethernet drivrutiner neutraliserats. Namnen pĂ„ blobbarna i dts-filer (devicetree) för ARM-chip frĂ„n Qualcomm och MediaTek har rensats. Koden för att rensa blobbarna i drivrutinerna för Nova Core, Nouveau, Realtek r8169 Ethernet, Qualcomm Iris, Venus, Mediatek mt7996 wifi, Qualcomm ath11k och ath12k wifi, Texas Instruments tas2781 och Renesas R-Car gen4 PCIe har uppdaterats.
KĂ€lla: opennet.ru
