Efter tvÄ mÄnaders utveckling slÀppte Linus Torvalds kÀrnan. Linux 7.2. Bland de mest anmÀrkningsvÀrda förÀndringarna: USB4STREAM-dataströmningsmekanism, prestandaoptimeringar för btrfs, xfs och ext4, fortsatt borttagning av kod för i486 CPU-stöd, möjligheten att skapa kapslade SCHED_EXT-schemalÀggare, minskad minnesförbrukning i swap-undersystemet, accelererade namnlösa pipes, stöd för Intel MBEC- och AMD GMET-tillÀgg i KVM, borttagning av AppleTalk-protokollet, initialt stöd för HDMI 2.1 FRL i AMDGPU-drivrutinen.
Viktigaste nya funktioner i kÀrna 7.2 (1, 2, 3):
- Diskundersystem, I/O och filsystem
- I iomap-mekanismen har ett extra anrop till memset-funktionen för redan slutförda iterationer i iomap_iter()-funktionen tagits bort, vilket, med hög I/O-intensitet pÄ snabba NVMe-enheter, ökade antalet in-/utmatningsoperationer per sekund (IOPS) med 5 % i de tester som utfördes med filsystemen ext4 och xfs.
- XFS har deklarerats stabilt för stöd av zonerade lagringsenheter (uppdelning av grupper av block eller sektorer i zoner, i vilka endast sekventiella tillÀgg av data Àr tillÄtna, vilket uppdaterar hela blockgruppen).
- Btrfs stöder nu stora folios som standard, vilket minskar overhead och förbÀttrar prestandan under intensiv sekventiell I/O. Experimentellt stöd för enorma folios (upp till 2 MB) har lagts till. En ny ioctl, GET_CSUMS, har lagts till för att hÀmta kontrollsummeinformation i anvÀndarutrymme, till exempel för mkfs-verktyget och dedupliceringsoptimering. Prestandan för sekventiell skrivning har ökat med 15 % och prestandan för direkt I/O med 59 %.
- Ext4-filsystemets "fast commit"-mekanism har omdesignats avsevÀrt för att eliminera konkurrens och dödlÀgen. Export av statistik för inode-snapshots har lagts till via /proc/fs/ext4/*/fc_info. Prestandan för berÀkning av kataloghash har optimerats (nÀstan fördubblat hastigheten för namn pÄ 255 tecken, 27 % för namn pÄ 64 tecken och 11 % för namn pÄ 32 tecken).
- F2FS stöder nu fserror-felretur, vilket gör att filsystemproblem kan övervakas frÄn anvÀndarutrymmet. Tiden som lÀggs pÄ avbrottshantering har minskats.
- En ny dm-inlinecrypt-hanterare har lagts till i Device Mapper (DM) för transparent kryptering och dekryptering av blockenheter med hjÀlp av hÄrdvaruenheter med inline-krypteringsfunktionalitet.
- Dokumentation om hur man lÀgger till nya filsystem i kÀrnan har tillhandahÄllits.
- I NFS har standardblockstorleken ökats till 4 MB pÄ system med minst 16 GB RAM (du kan anvÀnda /proc/fs/nfsd/max_block_size för att manuellt Àndra blockstorleken). Stöd för katalogdelegering har lagts till, vilket gör att operationer med en given katalog kan utföras under en viss tidsperiod utan att kontrollera om det finns tillstÄndsÀndringar pÄ server.
- SMB-servern stöder nu filer som lagras i komprimerad form, sÄvÀl som datakomprimering under överföring över nÀtverket.
- Den nya NTFS-implementeringen (ntfsplus) lÀgger till stöd för symboliska lÀnkar. Windows och korrekt hantering av mÄnga typer av metadatakorruption sÀkerstÀlls.
- fscache-backend för cachning av EROFS-data (Enhanced Read-Only File System), som förÄldrades för tvÄ Är sedan, har tagits bort.
- Ceph FS stöder nu manuell ÄterstÀllning av klientsessioner.
- 9P-filsystemet har optimerats för att förbÀttra prestanda i scenarier som projektbyggen.
- Flaggor för att hÀmta information om filsystemets skiftlÀgeskÀnslighet har lagts till i systemanropet file_getattr(). Flaggan FS_XFLAG_CASEFOLD indikerar att filnamnskontroll utförs skiftlÀges-okÀnsligt, och flaggan FS_XFLAG_CASENONPRESERVING indikerar att skiftlÀgesinformation inte bevaras nÀr nya filnamn skapas. Dessa flaggor kan anvÀndas i NFS-klienter som inte skiftlÀges-kÀnsligt.
- Flaggan O_EMPTYPATH har lagts till i systemanropet openat2(), vilket gör att en tom filsökvÀg kan skickas. I det hÀr fallet bestÀms sökvÀgen till filen som öppnas baserat pÄ den skickade filbeskrivningen.
- Flaggan OPENAT2_REGULAR har lagts till i systemanropet openat2(), vilket endast tillÄter att vanliga filer öppnas (ett EFTYPE-fel returneras om en speciell fil, till exempel en socket, pipe eller device, försöks öppnas).
- Minnes- och systemtjÀnster
- USB4STREAM-mekanismen har implementerats för strömmande data mellan datorer anslutna via USB4-portar. Enheten /dev/tbstreamX har lagts till, vilket gör att du kan lÀsa och skriva data med hjÀlp av standardfunktionerna read() och write(), liknande lÀsning och skrivning av filer. Till exempel kan du pÄ en vÀrd skicka information med kommandot "echo hello > /dev/tbstream0", och pÄ en annan lÀsa den med kommandot "cat /dev/tbstream0". USB4STREAM-mekanismen kan kombineras med möjligheten att upprÀtta en nÀtverksanslutning via en USB4-kabel (thunderbolt_net) eller anvÀndas separat för att överföra data mellan applikationer som inte stöder nÀtverksuttag.
- Den andra omgĂ„ngen Ă€ndringar för att ta bort stöd för i486-processorer har inkluderats. Ăver 13 rader kod relaterade till emulering av flyttal för processorer utan FPU har tagits bort. Stöd för i486-processorer utan hĂ„rdvaruoperationerna CX8 (jĂ€mför och utbyt 8 byte) och TSC (CPU-cykelrĂ€knare som anvĂ€nds i aktivitetsschemalĂ€ggaren) har tagits bort, eftersom emuleringskoden för dessa har tagits bort.
- Stöd för AMD Geode-processorer som anvÀnds i OLPC XO-1-datorn har meddelats som förÀldralöst.
- Lade till stöd för uppdatering av implementeringen av Intels TDX (Trusted Domain Extensions), en mekanism som anvÀnds för att kryptera gÀstsystemets RAM. TDX implementeras som en speciell programvaru-runtime-modul som överförs frÄn flashminne till RAM av BIOS under start. KÀrnan inkluderar nu funktioner för att hantera denna modul och ersÀtta den med en nyare version pÄ ett körbart system utan att krÀva omstart.
- En ny schemalÀggare för GPU-resursallokering (Fair GPU scheduler) har implementerats. Den anvÀnds för att bestÀmma i vilken ordning arbete som skickas in av GPU-anvÀndande processer exekveras pÄ GPU:n. IstÀllet för att anvÀnda den traditionella FIDO-kön för GPU-förfrÄgningar anvÀnder den nya schemalÀggaren mekanismer för rÀttvis resursallokering baserade pÄ Completely Fair Scheduler (CFS)-aktivitetsschemalÀggaren, som anvÀnder en startplan med en övergÄngstid för nÀsta process. Den mest mÀrkbara effekten av den nya schemalÀggaren observeras under parallell exekvering av interaktiva uppgifter som anvÀnder GPU:n i hög grad. I sista minuten före lanseringen av kernel 7.2 inaktiverades Fair GPU-schemalÀggaren och den gamla FIFO-schemalÀggaren ÄterstÀlldes pÄ grund av behovet av att felsöka regression, vilket orsakade prestandaförsÀmring och 100 % GPU-utnyttjande nÀr vissa spel kördes i Proton.
- Ăndringar i eBPF-undersystemet: Möjligheten att koppla ett enda BPF-program till flera spĂ„rningspunkter har lagts till. BPF-program som Ă€r kopplade till spĂ„rningspunkter kan nu komma Ă„t minnet i anvĂ€ndarutrymmeskomponenter, med korrekt hantering av oallokerade minnessidor (sidfel). Systemanropet bpf() stöder nu standardattribut (log_buf, log_size, log_level och log_true_size), vilket möjliggör enhetlig metadataöverföring över alla BPF-kommandon, inte begrĂ€nsat till BPF_PROG_LOAD, BPF_BTF_LOAD och BPF_MAP_CREATE. BegrĂ€nsningen att skicka högst 5 parametrar till BPF-funktioner har tagits bort. Möjligheten att sĂ€kert komma Ă„t delat minne i bpf_arena utan rĂ€dsla för att komma Ă„t oallokerade minnessidor (sidfel) har lagts till. En ny version av BPF:s hashmappstruktur har implementerats, vilket möjliggör dynamisk storleksĂ€ndring.
- Genereringen av "/proc/interrupts"-utdata med avbrottsstatistik har optimerats, och strukturerna för att lagra avbrottsrÀknare har moderniserats och cachning har lagts till.
- Genereringen av filen "/proc/filesystems" som anvÀnds i libselinux har pÄskyndats.
- SchemalÀggaren stöder nu lastbalansering över CPU-kÀrnor, med hÀnsyn till tillstÄndet för processorns interna cache. SchemalÀggaren försöker nu gruppera processer med hjÀlp av delade resurser, till exempel trÄdar inom en enda process, för att dela samma högnivÄcache, vilket förbÀttrar effektiviteten i dataÄtkomst genom att öka sannolikheten för att de nödvÀndiga uppgifterna hittas i cachen.
- SCHED_EXT-mekanismen, som tillÄter anvÀndning av BPF för att skapa CPU-schemalÀggare, har fortsatt att implementera möjligheten att skapa kapslade schemalÀggare (underschemalÀggare), vilket gör det möjligt för varje c-grupp att anvÀnda sin egen uppgiftsschemalÀggare.
- Fortsatt migrering av Àndringar frÄn Rust-for-grenenLinux, relaterat till att anvÀnda Rust som ett andrasprÄk för att utveckla drivrutiner och kÀrnmoduler (Rust-stöd Àr inte aktiverat som standard och inkluderar inte Rust som ett obligatoriskt kÀrnbyggeberoende). Rust-stöd i kÀrnan har implementerats för s390-arkitekturen. Paketet "zerocopy", som tillhandahÄller snabba minnesprimitiver för kod i "osÀkert" lÀge, ingÄr.
- Minimiversionen av LLVM-verktygsuppsÀttningen som krÀvs för att bygga kÀrnan har ökats till 17.0.1.
- I det minimalistiska C-biblioteket nolibc, som levereras med kÀrnans kÀllkod Linux och tillhandahÄller ett ramverk för grundlÀggande systemanrop, som stöder OpenRISC- och 32-bitars PA-RISC-arkitekturerna.
- Swap-undersystemet har optimerats för att förbÀttra prestanda och minska minnesförbrukningen inom sjÀlva undersystemet genom att eliminera overhead vid lagring av statiska metadata och förena anonymt och delat minne nÀr man anvÀnder böcker. Minnesreduktionen Àr ganska betydande; till exempel minskar montering av en swap-partition pÄ 1 TB minnesförbrukningen med cirka 512 MB.
- Prestandan för minnesborttagningsmekanismen, som tar bort eller flyttar minne till vÀxlingsutrymme för att frigöra minne nÀr systemet Àr under belastning, har förbÀttrats. Under vissa arbetsbelastningar, till exempel vid testning av MongoDB med YCSB (Yahoo! Cloud Serving Benchmark), har prestandaförbÀttringar pÄ upp till 30 % observerats.
- Kommandot "make sbom" har lagts till i byggsystemet för att generera SBOM-listor (Software Bill Of Materials) som Äterspeglar komponenterna, biblioteken och beroenden som anvÀnds i den aktuella kÀrnbyggnationen, samt deras licensinformation som hÀmtats frÄn SPDX-rubrikerna i kodfilerna.
- Implementeringen av namnlösa pipes har optimerats för hantering av lĂ„s (minnesallokeringsoperationer flyttas utanför lĂ„sets omfattning), vilket har ökat dataflödet för namnlösa pipes med 21â48 % och minskat latensen med 17â33 %.
- Virtualisering och sÀkerhet
- Slab-allokeraren stöder nu anvÀndningen av Allocation Tokens, implementerade i Clang 22-kompilatorn. Tokens möjliggör unika identifierare för minnesallokeringsoperationer och separat allokering av olika typer av objekt för att komplicera utnyttjandet av buffertöverflödessÄrbarheter (med separation utnyttjas inte ett buffertöverflöde i en typ av objekt lÀtt för att skada andra typer av objekt).
- AF_ALG-mekanismen, som utnyttjades i Copy Fail-sÄrbarheten för att modifiera data i sidcachen, har förÄldrats och Àr planerad att tas bort i en framtida version. AF_ALG aktiverar hÄrdvaruacceleratorer för kryptografiska berÀkningar i kÀrnans Crypto API, men anvÀnds i ganska specifika situationer. I kÀrna 7.2 har stöd för asynkron I/O, Àldre drivrutiner och nollkopieringsmekanismen i skcipher- och aead-implementeringarna tagits bort frÄn AF_ALG. Endast programvaruimplementeringar av kryptografiska algoritmer behÄlls, och stöd för hÄrdvarukryptografiska acceleratorer i kÀrnans Crypto API har tagits bort, eftersom AF_ALG avsevÀrt utökar attackytan men inte ger nÄgon prestandafördel jÀmfört med implementeringar av anvÀndarutrymmeskryptografi. AF_ALG anvÀndes i Cryptsetup-verktygslÄdan, men dess stöd togs bort i den senaste 2.8.7-versionen.
- IMA-mekanismen (Integrity Measurement Architecture), som gör det möjligt för en extern tjÀnst att verifiera tillstÄndet hos kÀrndelsystem för att sÀkerstÀlla deras Àkthet, har kompletterats med stöd för att exportera interna tabeller med mÀtresultat till anvÀndarutrymme och ta bort dem frÄn kÀrnbuffertar för att spara minne.
- I Landlock-modulen, som ger oprivilegierade program möjlighet att begrÀnsa anvÀndningen av kÀrnobjekt Linux (filhierarkier, nÀtverkssockets, ioctl, etc.), stöd för Ätkomstkontroll till UDP-sockets har lagts till, samt möjligheten att selektivt inaktivera utmatningen av objektlÄsinformation till loggen för att förhindra att loggen blir överbelastad med irrelevant information.
- KÀrnan har blivit av med att anvÀnda funktionen strncpy(), som kopierar ett angivet antal byte frÄn en inmatningsstrÀng. AnvÀndning av strncpy() skapade risk för fel pÄ grund av att ett nulltecken saknas i slutet av strÀngen eller ytterligare utfyllnad med nollor. IstÀllet för strncpy() rekommenderas det att anvÀnda funktionerna strscpy() och strscpy_pad() för att kopiera null-avslutade strÀngar, samt strtomem_pad(), memcpy_and_pad() och memcpy() för att kopiera strÀngar med en kÀnd fast storlek. Arbetet med att avveckla anvÀndningen av strncpy() i kÀrnan pÄbörjades 2020 och krÀvde 362 commits frÄn 70 utvecklare.
- I hypervisorn KVM Lade till stöd för Intel MBEC-tillÀggen (Mode-Based Execution Control) och AMD GMET-tillÀggen (Guest-Mode Execution Trap), vilka möjliggör separat hantering av kÀrn- och anvÀndarutrymmeskörningsrÀttigheter i gÀstsystem i minnesöversÀttningstabeller. Tidigare tillÀt Intel- och AMD-hÄrdvaruvirtualiseringstillÀgg att minnessidor markerades som körbara med endast en enda bit, med programvarubaserad separation av kÀrn- och anvÀndarutrymmesrÀttigheter pÄ hypervisornivÄ. Att anvÀnda MBEC och GMET eliminerar behörighetskontroller pÄ hypervisorsidan och minskar avsevÀrt resurskrÀvande kontrollöverföringar frÄn gÀstsystemet till VMexit-hypervisorn.
- NĂ€tverksdelsystem
- TCP-AO-tillÀgget (TCP Authentication Option, RFC 5925) har migrerats till det nya kryptografiska biblioteket libcrypto, vilket förenklar koden och förbÀttrar dess prestanda. TCP-AO möjliggör verifiering av TCP-rubriker med hjÀlp av MAC-koder (Message Authentication Code), med hjÀlp av de modernare algoritmerna HMAC-SHA-1-96 och AES-128-CMAC-96, och ersÀtter det tidigare tillgÀngliga TCP-MD5-alternativet, som förlitade sig pÄ den förÄldrade MD5-algoritmen.
- Antalet delströmmar som stöds för Multipath TCP (MPTCP)-anslutningar har ökats frÄn 8 till 64.
- Arbetet med att minska anvÀndningen av det globala lÄset rtnl_lock i kÀrnans nÀtverksstack fortsatte.
- KÀrnan har tagit bort implementeringen av AppleTalk-protokollstacken, som anvÀndes i Apple-datorer sedan 1985 och ersattes pÄ 1990-talet av TCP/IPDessutom har komponenter för ATM-dataöverföringsteknik som inte Àr relaterade till PPPoATM tagits bort, liksom ARCnet-nÀtverksgrÀnssnitt baserade pÄ ISA- och PCMCIA-bussar, Bluetooth-adaptrar med PCMCIA-grÀnssnitt, Chelsea TLS-acceleratorer, kod för att integrera TLS med sockmap och stöd för 5/10 MHz-frekvensbanden i den trÄdlösa stacken cfg80211/mac80211. PÄ grund av olösta blockeringsproblem och brist pÄ underhÄllare har en specifik implementering av TLS-bearbetningsacceleration baserad pÄ TCP Offload Engine tagits bort (den vanligare TLS-offload-implementeringen behÄlls). Kompatibilitetskod med 32-bitars x_tables pÄ 64-bitarssystem har inaktiverats och Àr planerad att tas bort.
- pppoe-drivrutinen stöder nu GRO (Generic Receive Offload) och GSO (Generic Segmentation Offload) mekanismer för hÄrdvaruacceleration av paketÄtermontering och segmentering. AnvÀndning av GRO och GSO ökar avsevÀrt genomströmningen av inkommande trafik. Till exempel, pÄ MediaTek MT7621-enheter konfigurerade med en adressöversÀttare ökade den maximala genomströmningen frÄn 130 Mbit/s till 630 Mbit/s.
- ĐĐ±ĐŸŃŃĐŽĐŸĐČĐ°ĐœĐžĐ”
- AMDGPU-drivrutinen inkluderar nu initialt stöd för HDMI 2.1 FRL-teknik (Fixed Rate Link), vilket möjliggör överföring av okomprimerad video i 4K/120Hz och 8K/60Hz. Stöd för HDMI 2.1 var tidigare svÄrt att fÄ i drivrutiner med öppen kÀllkod pÄ grund av licenskrav frÄn HDMI Forum, men AMD har nu sÀkrat en liknande implementering.
- Drivrutinen för i915 har nu stöd för att stÀlla in bakgrundsfÀrgen för bildskÀrmskontrollern. Parametern pin_params.needs_low_address har implementerats.
- Arbetet fortsatte med Xe DRM-drivrutinen (Direct Rendering Manager) för GPU:er baserad pÄ Intel Xe-arkitekturen, som anvÀnds i Intel Arc-seriens grafikkort och integrerade grafikkort, med början i Tiger Lake-processorer. Initialt stöd för CRI-plattformen (Crescent Island) har lagts till. En systemkontroller har implementerats för Xe3p dGPU-plattformar.
- Nouveau-drivrutinen löser problem med NVIDIA GA100 GPU.
- v3d-drivrutinen har uppdaterats för att inkludera möjligheten att hantera v3D GPU-strömförbrukning pÄ Raspberry Pi-kort.
- Vi har fortsatt att integrera Nova-drivrutinskomponenter för NVIDIA-GPU:er utrustade med GSP-firmware som anvÀnts sedan NVIDIA GeForce RTX 2000-serien, baserad pÄ Turing-mikroarkitekturen. Drivrutinen Àr skriven i Rust. Stöd har lagts till för NVIDIA GA100-, Hopper- och Blackwell-seriens GPU:er.
- Lade till stöd för ARM-kort, SoC och enheter: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.
Samtidigt skapade Latin American Free Software Foundation en version av den helt fria kÀrnan 7.2 - Linux-libre 7.2-gnu, rensat frÄn firmware- och drivrutinselement som innehÄller icke-fria komponenter eller kodavsnitt med begrÀnsad omfattning av tillverkaren. Version 7.2 inkluderar en blob-rensning för de nya drivrutinerna rt722-sdca och tac5xx2. Rensningskoden för drivrutinerna amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 och mt792x har uppdaterats. GrÀnssnitt för att ladda firmware har justerats. Blobnamn i devicetree-filer (dts) för ARM-chip har rensats.
KĂ€lla: opennet.ru
