Linux-kärnan version 6.0

Efter två månaders utveckling presenterade Linus Torvalds releasen av Linux 6.0-kärnan. Den betydande förändringen i versionsnummer är av estetiska skäl och är ett formellt steg för att lindra obehaget med att samla ett stort antal problem i serien (Linus skämtade om att anledningen till att byta filialnummer var mer sannolikt att han fick slut på fingrarna och tår för att räkna versionsnummer). Bland de mest anmärkningsvärda förändringarna: stöd för asynkron buffrad skrivning i XFS, ublk-blockdrivrutinen, optimering av uppgiftsschemaläggaren, en mekanism för att verifiera korrekt drift av kärnan, stöd för ARIA-blockchifferet.

Huvudsakliga innovationer i kärnan 6.0:

  • Diskundersystem, I/O och filsystem
    • XFS-filsystemet har lagt till stöd för asynkrona buffrade skrivningar med hjälp av io_uring-mekanismen. Prestandatester utförda med fio-verktyg (1 tråd, 4kB blockstorlek, 600 sekunder, sekventiell skrivning) visar en ökning av in-/utdataoperationer per sekund (IOPS) från 77k till 209k, dataöverföringshastighet från 314MB/s till 854MB/s, och en minskning av latensen från 9600ns till 120ns (80 gånger).
    • Btrfs-filsystemet implementerar en andra version av protokollet för "sänd"-kommandot, som implementerar stöd för ytterligare metadata, sändning av data i större block (mer än 64K) och överföring av omfattningar i komprimerad form. Prestandan för direktavläsningsoperationer har ökat avsevärt (upp till 3 gånger) på grund av samtidig avläsning av upp till 256 sektorer. Minskad låsningskonflikt och snabbare kontroll av metadata genom att minska reserverad metadata för uppskjutna element.
    • Nya ioctl-operationer EXT4_IOC_GETFSUUID och EXT4_IC_SETFSUUID har lagts till i ext4-filsystemet för att hämta eller ställa in UUID lagrat i superblocket.
    • F2FS-filsystemet erbjuder ett läge med låg minnesförbrukning, vilket optimerar driften på enheter med en liten mängd RAM och låter dig minska minnesförbrukningen till priset av minskad prestanda.
    • Tillagt stöd för NVMe-enhetsautentisering.
    • NFSv4-servern implementerar en gräns för antalet aktiva klienter, vilket är satt till 1024 giltiga klienter för varje gigabyte RAM-minne i systemet.
    • CIFS-klientimplementeringen har förbättrat prestanda i flerkanalsöverföringsläge.
    • En ny flagga FAN_MARK_IGNORE har lagts till i händelsespårningsundersystemet i fanotify FS för att ignorera specifika händelser.
    • I Overlayfs FS, när den är monterad ovanpå en FS med användar-ID-mappning, tillhandahålls korrekt stöd för POSIX-kompatibla åtkomstkontrollistor.
    • Lade till ublk-blockdrivrutinen, som flyttar specifik logik till sidan av bakgrundsprocessen i användarutrymmet och använder delsystemet io_uring.
  • Minnes- och systemtjänster
    • Nya funktioner har lagts till i DAMON (Data Access MONitor) delsystemet, vilket gör det möjligt att inte bara övervaka processåtkomst till RAM från användarutrymmet, utan också att påverka minneshanteringen. I synnerhet har en ny modul "LRU_SORT" föreslagits, som tillhandahåller omgruppering av LRU-listor (Least Recently Used) för att öka prioriteten för vissa minnessidor.
    • Möjligheten att skapa nya minnesregioner har implementerats med hjälp av funktionerna hos CXL-bussen (Compute Express Link), som används för att organisera höghastighetsinteraktion mellan CPU och minnesenheter. CXL låter dig ansluta nya minnesområden som tillhandahålls av externa minnesenheter och använda dem som ytterligare fysiska adressutrymmesresurser för att utöka systemets DDR (Random Access Memory) eller permanent minne (PMEM).
    • Löste prestandaproblem med AMD Zen-processorer orsakade av kod som lades till för 20 år sedan för att komma till rätta med ett hårdvaruproblem i vissa styrkretsar (en ytterligare WAIT-instruktion lades till för att sakta ner processorn så att chipseten hann gå in i viloläge). Förändringen resulterade i minskad prestanda under arbetsbelastningar som ofta växlar mellan viloläge och upptaget. Till exempel, efter att ha inaktiverat lösningen, ökade de genomsnittliga tbench-testresultaten från 32191 MB/s till 33805 MB/s.
    • Kod med heuristik har tagits bort från uppgiftsschemaläggaren, vilket säkerställer migrering av processer till de minst belastade processorerna, med hänsyn tagen till den förväntade ökningen av energiförbrukningen. Utvecklarna drog slutsatsen att heuristiken inte var tillräckligt användbar och att det var lättare att ta bort den och migrera processer utan ytterligare utvärdering när en sådan migrering potentiellt skulle kunna resultera i lägre strömförbrukning (till exempel när mål-CPU är i en lägre effektnivå). Inaktivering av heuristik ledde till en minskning av strömförbrukningen vid utförande av intensiva uppgifter, till exempel i videoavkodningstestet minskade strömförbrukningen med 5.6 %.
    • Fördelningen av uppgifter över CPU-kärnor på stora system har optimerats, vilket har förbättrat prestanda för vissa typer av arbetsbelastning.
    • Det asynkrona I/O-gränssnittet io_uring erbjuder en ny flagga, IORING_RECV_MULTISHOT, som låter dig använda multi-shot-läge med recv()-systemanropet för att utföra flera läsoperationer från samma nätverksuttag på en gång. io_uring stöder även nätverksöverföring utan mellanliggande buffring (nollkopia).
    • Implementerade möjligheten att sätta BPF-program kopplade till uprobe i ett viloläge. BPF lägger också till en ny iterator ksym för att arbeta med kärnsymboltabeller.
    • Det föråldrade "efivars"-gränssnittet i sysfs, avsett för åtkomst till UEFI-startvariabler, har tagits bort (efivarfs virtuella FS används nu universellt för att komma åt EFI-data).
    • Perf-verktyget har nya rapporter för att analysera låskonflikter och den tid som processorn spenderar på att köra kärnkomponenter.
    • CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3-inställningen har tagits bort, vilket gjorde att kärnan kunde byggas i optimeringsläget "-O3". Det bör noteras att experiment med optimeringslägen kan utföras genom att skicka flaggor under montering ("make KCFLAGS=-O3"), och att lägga till en inställning till Kconfig kräver repeterbar prestandaprofilering, vilket visar att loopavrullning används i "-O3"-läget ger en fördel jämfört med "-O2" optimeringsnivån.
    • Ett debugfs-gränssnitt har lagts till för att få information om hur individuella "minneskrympare" fungerar (hanterare anropas när det inte finns tillräckligt med minne och packar kärndatastrukturer för att minska deras minnesförbrukning).
    • För OpenRISC- och LoongArch-arkitekturerna är stöd för PCI-bussen implementerat.
    • För RISC-V-arkitekturen har tillägget "Zicbom" implementerats för att hantera enheter med DMA som inte är cache-koherent.
  • Virtualisering och säkerhet
    • En RV-verifieringsmekanism (Runtime Verification) har lagts till för att verifiera korrekt funktion på mycket tillförlitliga system som garanterar inga fel. Verifiering utförs under körning genom att koppla hanterare till spårningspunkter som kontrollerar det faktiska framsteg av exekvering mot en förutbestämd referens deterministisk modell av maskinen som definierar systemets förväntade beteende. Verifiering med modellen vid körning är placerad som en mer lättviktig och lättimplementerad metod för att bekräfta korrektheten av exekvering på kritiska system, som komplement till klassiska metoder för tillförlitlighetsverifiering. Bland fördelarna med RV är möjligheten att tillhandahålla strikt verifiering utan en separat implementering av hela systemet i ett modelleringsspråk, samt flexibel respons på oförutsedda händelser.
    • Integrerade kärnkomponenter för hantering av enklaver baserade på Intel SGX2 (Software Guard eXtensions) teknologi, som tillåter applikationer att exekvera kod i isolerade krypterade minnesområden, som resten av systemet har begränsad tillgång till. Intel SGX2-tekniken stöds i Intel Ice Lake- och Gemini Lake-chips, och skiljer sig från Intel SGX1 i ytterligare instruktioner för dynamisk minneshantering av enklaver.
    • För x86-arkitekturen har möjligheten att överföra kärnan för pseudoslumptalsgeneratorn genom bootloader-inställningarna implementerats.
    • SafeSetID LSM-modulen har nu möjlighet att hantera ändringar som görs via setgroups()-anropet. SafeSetID tillåter systemtjänster att säkert hantera användare utan att eskalera privilegier (CAP_SETUID) och utan att få root-privilegier.
    • Lade till stöd för ARIA-blockchiffer.
    • Den BPF-baserade säkerhetshanteringsmodulen ger möjlighet att koppla hanterare till enskilda processer och processgrupper (cgroups).
    • En mekanism med en watchdog-implementering har lagts till för att upptäcka häng av gästsystem baserat på övervakning av vCPU-aktivitet.
  • Nätverksdelsystem
    • Hanterare för att generera och kontrollera SYN-cookies har lagts till i BPF-delsystemet. En uppsättning funktioner (kfunc) läggs också till för att komma åt och ändra tillståndet för anslutningar.
    • Den trådlösa stacken har lagt till stöd för MLO-mekanismen (Multi-Link Operation), definierad i WiFi 7-specifikationen och gör att enheter kan ta emot och skicka data samtidigt med olika frekvensband och kanaler, till exempel för att samtidigt etablera flera kommunikationskanaler mellan en åtkomstpunkt till en klientenhet.
    • Prestandan för TLS-protokollet som är inbyggt i kärnan har förbättrats.
    • Lade till ett kommandoradsalternativ för kärnan "hostname=" för att tillåta värdnamnet att ställas in tidigt i uppstartsprocessen, innan användarutrymmeskomponenter startas.
  • Оборудование
    • Drivrutinen i915 (Intel) ger stöd för Intel Arc (DG2/Alchemist) A750 och A770 diskreta grafikkort. En första implementering av stöd för Intel Ponte Vecchio (Xe-HPC) och Meteor Lake GPU:er har föreslagits. Arbetet med att stödja Intel Raptor Lake-plattformen fortsätter.
    • Amdgpu-drivrutinen fortsätter att ge stöd för plattformarna AMD RDNA3 (RX 7000) och CDNA (Instinct).
    • Nouveau-drivrutinen har omarbetat supportkoden för NVIDIA nv50 GPU-skärmmotorer.
    • Lade till ny logicvc DRM-drivrutin för LogiCVC-skärmar.
    • V3d-drivrutinen (för Broadcom Video Core GPU) stöder Raspberry Pi 4-kort.
    • Lade till stöd för Qualcomm Adreno 619 GPU till msm-drivrutinen.
    • Lade till stöd för ARM Mali Valhall GPU till Panfrost-drivrutinen.
    • Lade till initialt stöd för Qualcomm Snapdragon 8cx Gen3-processorer som används i Lenovo ThinkPad X13s bärbara datorer.
    • Lade till ljuddrivrutiner för plattformarna AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake och Mediatek MT8186.
    • Tillagt stöd för Intel Habana Gaudi 2 maskininlärningsacceleratorer.
    • Lagt till stöd för ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Samtidigt bildade Latin American Free Software Foundation en version av den helt fria kärnan 6.0 - Linux-libre 6.0-gnu, rensat från element av firmware och drivrutiner som innehåller icke-fria komponenter eller kodavsnitt, vars omfattning är begränsat av tillverkaren. Den nya utgåvan inaktiverar användningen av blobs i CS35L41 HD-ljuddrivrutinen och UCSI-drivrutinen för STM32G0-mikrokontroller. DTS-filer för Qualcomm- och MediaTek-chips har rensats. Inaktiveringen av blobbar i MediaTek MT76-drivrutinen har omarbetats. Uppdaterad blob-rensningskod i AMDGPU, Adreno, Tegra VIC, Netronome NFP och Habanalabs Gaudi2-drivrutiner och delsystem. Slutade rengöra VXGE-drivrutinen, som togs bort från kärnan.

Källa: opennet.ru

Lägg en kommentar