Release av Linux-kÀrnan 7.2

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds lanseringen av Linux-kÀrnan 7.2. Bland de mest anmÀrkningsvÀrda förÀndringarna finns en mekanism för USB4STREAM datastreaming, prestandaoptimeringar för btrfs, xfs och ext4, fortsÀttning pÄ borttagningen av stöd för CPU i486, möjlighet till skapande av inbÀddade schemalÀggare SCHED_EXT, minskad minnesanvÀndning i bytesystemet, snabbare unnamed pipes, stöd för Intel MBEC och AMD GMET-utvidgningar i KVM samt borttagning av AppleTalk-protokollet. Inledande stöd för HDMI 2.1 FRL i AMDGPU-drivrutinen.

De viktigaste nyheterna i kÀrna 7.2 (1, 2, 3):

  • Disksubsystem, in- och utmatning och filsystem
    • I iomap-mekanismen har onödiga anrop till funktionen memset för redan avslutade iterationer i funktionen iomap_iter() tagits bort, vilket vid hög intensitet av in- och utdata pĂ„ snabba NVMe-lagringar har ökat antalet in- och utdataoperationer per sekund (IOPS) med 5 % i genomförda tester vid anvĂ€ndning av filsystemen ext4 och xfs.
    • I XFS har stabilt stöd för zonerade lagringsenheter (avdelning i zoner av blockgrupp eller sektorer, dĂ€r endast sekventiell tillĂ€gg av data tillĂ„ts, vilket uppdaterar hela blockgruppen) utannonserats.
    • I Btrfs har stöd för stora minnessidor (large folios) aktiverats som standard, vilket minskar overhead och ökar prestanda vid intensiv sekventiell in- och utdata. Experimentellt stöd för enorma sidor (‘huge folios’) upp till 2 MB har lagts till. En ny ioctl GET_CSUMS har lagts till för att hĂ€mta information om kontrollsummor i anvĂ€ndarutrymmet, till exempel för verktyget mkfs och optimering av deduplicering. Prestanda för sekventiell skrivning av data har ökat med 15 % och direkt in- och utdata med 59 %.
    • I filsystemet Ext4 har implementeringen av mekanismen 'fast commit' omarbetats avsevĂ€rt för att förhindra konkurrerande och ömsesidiga blockeringar. Statistik över inode-snapshots har lagts till via /proc/fs/ext4/*/fc_info. Prestandan för berĂ€kning av hash för kataloger har optimerats (för namn som Ă€r 255 tecken lĂ„ng har hastigheten nĂ€stan ökat dubbelt, 64 tecken med 27 %, 32 tecken – 11 %).
    • I F2FS har stöd för att returnera fserror-fel lagts till, vilket gör det möjligt att frĂ„n anvĂ€ndarutrymmet övervaka problem med filsystemet. Tiden som spenderas i samband med hantering av avbrott har minskats.
    • I Device Mapper (DM) har en ny handler dm-inlinecrypt lagts till för att möjliggöra transparent kryptering och dekryptering av blockenheter med hjĂ€lp av hĂ„rdvaruenheter med inline-krypteringsfunktion.
    • Dokumentation för att lĂ€gga till nya filsystem i kĂ€rnan har föreslagits.
    • I NFS har standardblockstorleken ökat till 4 MB pĂ„ system med minst 16 GB RAM (för manuell justering av blockstorleken kan /proc/fs/nfsd/max_block_size anvĂ€ndas). Stöd för delegatkontroll av katalogen (directory delegation) har lagts till, vilket gör det möjligt att utföra operationer med denna katalog under en viss tid utan att kontrollera förĂ€ndringar av tillstĂ„ndet. servern.
    • I SMB-servern har stöd för filer som lagras komprimerat lagts till, liksom komprimering av data vid överföring över nĂ€tverket.
    • I den nya NTFS-implementeringen (ntfsplus) har stöd för symboliska lĂ€nkar i Windows lagts till, och korrekt hantering av mĂ„nga typer av metadatafel har sĂ€kerstĂ€llts.
    • Backend fscache för cachelagring av data frĂ„n EROFS (Enhanced Read-Only File System) har tagits bort, vilken för tvĂ„ Ă„r sedan förklarades som förĂ„ldrad.
    • I Ceph-filsystemet har stöd för manuell Ă„terstĂ€llning av klientsessioner lagts till.
    • I 9P-filsystemet har optimeringar genomförts som har ökat hastigheten i scenarier som projektkompilering.
    • I systemanropet file_getattr() har flaggor lagts till för att fĂ„ information om skiljeteckenens betydelse i filsystemet. Flaggan FS_XFLAG_CASEFOLD indikerar att kontrollen av filnamn sker utan att ta hĂ€nsyn till skiljetecken, medan flaggan FS_XFLAG_CASENONPRESERVING indikerar att information om skiljetecken inte bevaras vid skapandet av nya filnamn. De angivna flaggorna kan tillĂ€mpas i NFS-klienter som fungerar utan att ta hĂ€nsyn till skiljetecken.
    • I systemanropet openat2() har flaggan O_EMPTYPATH lagts till, vilket tillĂ„ter överföring av en tom filvĂ€g. I detta fall bestĂ€ms vĂ€gen till den öppnade filen baserat pĂ„ den överförda filbeskrivaren.
    • I systemanropet openat2() har flaggan OPENAT2_REGULAR lagts till, vilket tillĂ„ter öppning av endast vanliga filer (vid försök att öppna en specialfil, till exempel en socket, kanal eller enhet, kommer felet EFTYPE att returneras).
  • Minne och systemtjĂ€nster
    • En USB4STREAM-mekanism har implementerats för att strömma data mellan datorer kopplade med en USB4-kabel. Enheten /dev/tbstreamX har lagts till, vilket möjliggör lĂ€sning och skrivning av data med hjĂ€lp av standardfunktionerna read() och write(), pĂ„ liknande sĂ€tt som lĂ€sning och skrivning i filer. Till exempel kan information skickas pĂ„ en vĂ€rd med kommandot "echo hello > /dev/tbstream0", medan den andra vĂ€rden kan lĂ€sa med kommandot "cat /dev/tbstream0". USB4STREAM-mekanismen kan kombineras med möjligheten att skapa ett nĂ€tverkskoppling via USB4-kabel (thunderbolt_net) eller anvĂ€ndas separat vid behov av datatransfer mellan applikationer som inte stöder nĂ€tverks-sockets.
    • Den andra serien av Ă€ndringar för att upphöra med stödet för i486-processorer har aktiverats. Över 13 rader kod relaterade till emulering av block för flyttalsberĂ€kningar för processorer utan FPU har tagits bort. Stödet för i486-processorer utan hĂ„rdvaruoperationer CX8 (jĂ€mför och byt 8 byte) och TSC (CPU-cykelrĂ€knaren som anvĂ€nds i schemalĂ€ggaren), koden för att emulera dem har ocksĂ„ tagits bort.
    • Stödet för AMD Geode-processorer, som anvĂ€nds i OLPC XO-1-datorn, har förklarats som övergivet (orphaned).
    • Stödet för uppdatering av implementationen av Intel TDX (Trusted Domain Extensions) har lagts till, vilket anvĂ€nds för att kryptera minnet i gĂ€stsysten. TDX implementeras i form av en speciell programmatisk runtime-modul som under initialiseringen överförs av BIOS frĂ„n flashminnet till RAM. Möjligheter för att hantera denna modul har lagts till i kĂ€rnan och för att byta till en nyare version pĂ„ det fungerande systemet utan behov av omstart.
    • En ny GPU-resursplanerare (Fair GPU scheduler) har implementerats för att bestĂ€mma ordningen för exekvering av GPU-uppgifter som skickas av processer som anvĂ€nder GPU. IstĂ€llet för att anvĂ€nda en traditionell FIDO-kö för GPU-förfrĂ„gningar, anvĂ€nder den nya planerarens mekanismer för rĂ€ttvis resursfördelning, inspirerad av CFS (Completely Fair Scheduler) som tillĂ€mpar en schemalĂ€ggning med tidsövergĂ„ng till nĂ€sta process. Den mest mĂ€rkbara effekten av att anvĂ€nda den nya planeraren ses vid samtidig exekvering av interaktiva uppgifter som aktivt arbetar med GPU. I sista stund före slĂ€ppet av kĂ€rna 7.2 avbröts aktiveringen av Fair GPU scheduler och den gamla FIFO-planeraren Ă„terstĂ€lldes pĂ„ grund av behovet av debug av regressioner som ledde till minskad prestanda och 100% belastning pĂ„ GPU vid körning av vissa spel i Proton.
    • Ändringar i eBPF-under-systemet: Möjligheten att koppla en BPF-program till flera spĂ„rningspunkter (tracepoints) har lagts till. BPF-program kopplade till spĂ„rningspunkter har fĂ„tt möjlighet till Ă„tkomst till minnet hos komponenter som körs i anvĂ€ndarutrymmet, med korrekt bearbetning av Ă„tkomst till icke allokerade minnessidor (page fault). Systemanropet bpf() har fĂ„tt stöd för typiska attribut (log_buf, log_size, log_level och log_true_size), vilket möjliggör en enhetlig överföring av metadata i alla BPF-kommandon, utan begrĂ€nsning till kommandon BPF_PROG_LOAD, BPF_BTF_LOAD och BPF_MAP_CREATE. BegrĂ€nsningen av att överföra mer Ă€n 5 parametrar i BPF-funktioner har tagits bort. SĂ€ker Ă„tkomst till den delade minnet bpf_arena har möjliggjorts utan rĂ€dsla för att fĂ„ Ă„tkomst till icke allokerade minnessidor (page fault). En ny variant av BPF hash map-strukturen har implementerats, som tillĂ„ter dynamisk storleksĂ€ndring.
    • Utdataformatet för «/proc/interrups» med statistik om avbrott har optimerats, strukturerna för lagring av avbrottsrĂ€knare har moderniserats och caching har lagts till.
    • Genereringen av filen «/proc/filesystems», som anvĂ€nds i libselinux, har pĂ„skyndats.
    • I schemalĂ€ggaren har stöd för belastningsbalansering mellan CPU-kĂ€rnor, vilket tar hĂ€nsyn till tillstĂ„ndet i processorns interna cache. SchemalĂ€ggaren försöker nu gruppera processer som anvĂ€nder gemensamma resurser, till exempel trĂ„dar frĂ„n samma process, för att de ska anvĂ€nda samma nivĂ„ 1-cache, vilket ökar effektiviteten vid datatillgĂ„ng genom att öka sannolikheten att de nödvĂ€ndiga data finns i cachen.
    • I mekanismen SCHED_EXT, som möjliggör anvĂ€ndning av BPF för att skapa CPU-schemalĂ€ggare, har genomförandet av möjligheten att skapa inbĂ€ddade schemalĂ€ggare (sub-scheduler) fortsatt, via vilka varje cgroup kan inkludera sin egen schemalĂ€ggare.
    • Arbetet med att överföra Ă€ndringar frĂ„n Rust-for-Linux-grenen, relaterade till anvĂ€ndningen av Rust som det andra sprĂ„ket för utveckling av drivrutiner och kĂ€rnmoduler, har fortsatt (stöd för Rust Ă€r inte aktiverat som standard och ingĂ„r inte i de obligatoriska byggberoendena för kĂ€rnan). Möjligheten att anvĂ€nda Rust i kĂ€rnan har realiserats för arkitektur s390. Paketet "zerocopy" har inkluderats med snabba primitiva metoder för minneshantering för kod i "unsafe"-lĂ€ge.
    • Den minimi version av LLVM-verktygen som krĂ€vs för att bygga kĂ€rnan har höjts till 17.0.1.
    • I den minimalistiska C-biblioteket nolibc, som följer med Linux-kĂ€rnans kĂ€llkod och tillhandahĂ„ller ett grĂ€nssnitt över grundlĂ€ggande systemanrop, har stöd för arkitekturerna OpenRISC och 32-bit PA-RISC realiserats.
    • I byte-systemet har optimeringar genomförts för att öka prestandan och minska minnesförbrukningen inom systemet genom att eliminera overhead vid lagring av statiska metadata och enhetliggöra hanteringen av anonym och delad minne vid anvĂ€ndning av swap. Minskningen av minnesförbrukningen Ă€r ganska markant, till exempel nĂ€r en swap-partition pĂ„ 1 TB monteras, observeras en minskning av minnesförbrukningen med cirka 512 MB.
    • Effektiviteten hos mekanismen för minnesutskjutning, som tar bort eller flyttar minnesomrĂ„den till bytesystemet för att frigöra minne vid brist pĂ„ minne i systemet, har ökat. Vid vissa belastningsformer, till exempel vid testning av MongoDB med YCSB (Yahoo! Cloud Serving Benchmark), observeras en prestandaökning pĂ„ upp till 30%.
    • Ett kommando "make sbom" har lagts till i byggsystemet för att generera SBOM-listor (Software Bill Of Materials) som Ă„terspeglar komponenter, bibliotek och beroenden som anvĂ€nds i den aktuella kĂ€rnbyggnaden, samt information om deras licenser, erhĂ„llen frĂ„n SPDX-rubriker i kodfiler.
    • I implementeringen av namnlösa rör (pipe) har optimering av lĂ„sningarna genomförts (minnesallokeringsoperationer har flyttats utanför lĂ„sningsomrĂ„det), vilket har ökat genomströmningen av namnlösa rör med 21-48% och minskat fördröjningarna med 17-33%.
  • Virtualisering och sĂ€kerhet
    • I slab-minnesfördelningsmekanismen (slab allocator) har möjligheten att anvĂ€nda minnesallokeringstoken (Allocation Token), implementerade i Clang 22, lagts till. Token gör det möjligt att mĂ€rka minnesallokeringsoperationer med unika identifierare och organisera separat placering av olika typer av objekt för att komplicera utnyttjandet av sĂ„rbarheter orsakade av buffertöverskridningar (vid uppdelning Ă€r det svĂ„rt att anvĂ€nda buffertöverskridningen i en typ av objekt för att skada andra typer).
    • AF_ALG-mekanismen, som utnyttjades i Copy Fail-sĂ„rbarheten för att modifiera data i sidcache, har förklarats förĂ„ldrad och planeras att tas bort i en av de kommande utgĂ„vorna. AF_ALG möjliggör utnyttjande av hĂ„rdvaruacceleratorer för kryptografiska berĂ€kningar i kĂ€rnans Crypto API, men anvĂ€nds i ganska specifika situationer. I kĂ€rnan 7.2 har stöd för asynkron in-/utmatning, Ă€ldre drivrutiner och zero-copy-mekanismen i implementeringen av skcipher och aead tagits bort frĂ„n AF_ALG. Endast programvaruimplementeringar av kryptografiska algoritmer har kvarblivit, och stödet för hĂ„rdvaru-kryptoacceleratorer i kĂ€rnans crypto API har tagits bort, eftersom AF_ALG avsevĂ€rt ökar angriparens yta utan att erbjuda prestandavinster jĂ€mfört med kryptografi i anvĂ€ndarutrymmet. AF_ALG anvĂ€ndes i Cryptsetup-verktyget, men dess stöd har tagits bort i den senaste versionen 2.8.7.
    • I IMA-mekanismen (Integrity Measurement Architecture), som gör det möjligt för externa tjĂ€nster att verifiera kĂ€rnsystemets lĂ€ge för att sĂ€kerstĂ€lla deras Ă€kthet, har stöd för att exportera interna tabeller med mĂ€tresultat till anvĂ€ndarutrymmet lagts till med rensning frĂ„n kĂ€rnbuffrar för att spara minne.
    • I modulen Landlock, som ger oprivilegerade program möjligheter att begrĂ€nsa anvĂ€ndningen av Linux-kĂ€rnobjekt (filhierarkier, nĂ€tverks-sockets, ioctl, osv.), har stöd för att hantera Ă„tkomst till UDP-sockets lagts till, samt möjligheten att selektivt stĂ€nga av loggningen av information om blockering av objekt för att förhindra att loggen fylls med irrelevant information.
    • KĂ€rnan har tagits bort frĂ„n anvĂ€ndningen av funktionen strncpy(), som kopierar ett angivet antal byte frĂ„n en ingĂ„ngsstrĂ€ng. AnvĂ€ndningen av strncpy() medförde risk för fel pĂ„ grund av att nolltecknet i slutet av strĂ€ngen kunde missas eller fyllas pĂ„ med nollor. IstĂ€llet rekommenderas det att anvĂ€nda funktionerna strscpy() och strscpy_pad() för att kopiera strĂ€ngar som avslutas med nolltecken, samt strtomem_pad(), memcpy_and_pad() och memcpy() för att kopiera strĂ€ngar av kĂ€nd, fast storlek. Arbetet med att ta bort strncpy() frĂ„n kĂ€rnan pĂ„börjades 2020 och krĂ€vde att 362 förĂ€ndringar gjordes av 70 utvecklare.
    • I hypervisorn KVM Stödet för Intel MBEC (Mode-Based Execution Control) och AMD GMET (Guest-Mode Execution Trap) har lagts till, vilket gör det möjligt att separat hantera Ă„tkomstrĂ€ttigheterna för kodexekvering för kĂ€rnan och anvĂ€ndarutrymmet i gĂ€stsystemen i minnesöversĂ€ttnings-tabellerna. Tidigare tillĂ€t Intel- och AMD:s hĂ„rdvaruvirtualiseringsutvidgningar att markera minnessidor som endast exekverbara med en bit i programvaruseparation av rĂ€ttigheter för kĂ€rnan och anvĂ€ndarutrymmet pĂ„ hypervisor-nivĂ„. AnvĂ€ndningen av MBEC och GMET gör det möjligt att utesluta verifieringar pĂ„ hypervisor-sidan och betydligt minska den resurskrĂ€vande intensiteten av kontrollöverföringar frĂ„n gĂ€stsystemet till hypervisorn (VMexit).
  • NĂ€tverkssystemet
    • Implementeringen av TCP-AO (TCP Authentication Option, RFC 5925) har övergĂ„tt till att anvĂ€nda det nya kryptografiska biblioteket libcrypto, vilket har förenklat koden och ökat effektiviteten. TCP-AO gör det möjligt att verifiera TCP-rubriker med MAC-koder (Message Authentication Code), och anvĂ€nder mer moderna algoritmer HMAC-SHA-1-96 och AES-128-CMAC-96 istĂ€llet för den tidigare tillgĂ€ngliga alternativet TCP-MD5 baserat pĂ„ den förĂ„ldrade MD5-algoritmen.
    • Antalet undermappar som stöds för Multipath TCP (MPTCP) har ökat frĂ„n 8 till 64.
    • Arbetet med att minska anvĂ€ndningen av den globala lĂ„sningen rtnl_lock i nĂ€tverksstacken hos kĂ€rnan har fortsatt.
    • FrĂ„n kĂ€rnan har genomförandet av AppleTalk-protokollstacken tagits bort, vilket anvĂ€ndes i Apple-datorer sedan 1985 och under 1990-talet ersattes av TCP/IP. Dessutom har komponenter frĂ„n ATM-datatjĂ€nstteknologin, som inte Ă€r relaterade till PPPoATM, samt nĂ€tverksgrĂ€nssnitt för ARCnet baserade pĂ„ ISA- och PCMCIA-bussar, Bluetooth-adaptrar med PCMCIA-grĂ€nssnitt, Chelsea TLS-acceleratorer, kod för integrering av TLS med sockmap och stöd för frekvensomrĂ„dena 5/10 MHz i den trĂ„dlösa stacken cfg80211/mac80211 tagits bort. PĂ„ grund av olösliga problem med blockering och avsaknad av underhĂ„ll har en specifik implementering för acceleration av TLS-bearbetning baserad pĂ„ TCP Offload Engine tagits bort (den mer omfattande implementeringen av TLS offload har bevarats). Koden för kompatibilitet med 32-bitars x_tables pĂ„ 64-bitars system har inaktiverats och planeras att tas bort.
    • I drivrutinen pppoe har stöd för mekanismerna GRO (Generic Receive Offload) och GSO (Generic Segmentation Offload) lagts till för hĂ„rdvaruaccelerering av ombyggnad och segmentering av paket. AnvĂ€ndning av GRO och GSO kan avsevĂ€rt öka genomströmningen för inkommande trafik; till exempel har den maximala genomströmningen pĂ„ MediaTek MT7621-enheter i konfiguration med adressöversĂ€ttning ökat frĂ„n 130 Mbit/s till 630 Mbit/s.
  • Utrustning
    • I AMDGPU-drivrutinen har grundlĂ€ggande stöd för HDMI 2.1 FRL (Fixed Rate Link) implementerats, vilket möjliggör överföring av okomprimerad video med kvalitet 4K/120Hz och 8K/60Hz. Tidigare har stödet för HDMI 2.1 inte kunnat realiseras i öppna drivrutiner pĂ„ grund av licenskrav frĂ„n HDMI Forum, men nu har AMD lyckats nĂ„ en överenskommelse om en sĂ„dan implementering.
    • I i915-drivrutinen har stöd för att stĂ€lla in bakgrundsfĂ€rg av displaykontrollern lagts till. Parametern pin_params.needs_low_address har implementerats.
    • Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU baserad pĂ„ Intel Xe-arkitekturen, som anvĂ€nds i Intel Arc grafikkort och integrerad grafik, har fortsatt sedan Tiger Lake-processorerna. GrundlĂ€ggande stöd för CRI-plattformen (Crescent Island) har lagts till. För dGPU-plattformar har Xe3p implementerat en systemkontroller.
    • I Nouveau-drivrutinen har problem med NVIDIA GA100 GPU lösts.
    • I v3d-drivrutinen har möjligheten att hantera energiförbrukningen för v3D GPU pĂ„ Raspberry Pi-kort lagts till.
    • Integrationen av Nova-drivrutinskomponenter för NVIDIA GPU:er med GSP-firmware har fortsatt, och anvĂ€nds frĂ„n NVIDIA GeForce RTX 2000-serien baserad pĂ„ Turing-mikroarkitektur. Drivrutinen Ă€r skriven i Rust. UnterstĂŒtzung fĂŒr NVIDIA GPU GA100 samt Hopper- och Blackwell-serierna har lagts till.
    • Stöd för ARM-plattformar, SoC och enheter har lagts till: 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 har den latinamerikanska Stiftelsen för fri programvara skapat en version av det helt fria kĂ€rnet 7.2 – Linux-libre 7.2-gnu, som Ă€r rensad frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndningsomrĂ„de begrĂ€nsas av tillverkaren. I version 7.2 har nya drivrutiner som rt722-sdca och tac5xx2 rensats frĂ„n blobs. Kodrengöringen i drivrutiner för amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 och mt792x har uppdaterats. Justeringar har gjorts av grĂ€nssnitten för laddning av firmware. Namnen pĂ„ blobs i dts-filer (devicetree) för ARM-chips har rensats.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster