Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds lanseringen av kÀrnan Linux 6.0. Den betydande förÀndringen av versionsnumret gjordes av estetiska skÀl och Àr ett formellt steg för att avlÀgsna obehaget av det stora antalet utgÄvor i serien (Linus skÀmtade om att anledningen till bytet av versionsnummer snarare beror pÄ att han hÄller pÄ att fÄ slut pÄ fingrarna pÄ hÀnder och fötter för att rÀkna versionsnummer). Bland de mest mÀrkbara förÀndringarna finns: stöd för asynkron buffrad skrivning i XFS, blockdrivrutin ublk, optimering av schemalÀggaren, mekanism för verifiering av kÀrnans korrekthet och stöd för blockciffern ARIA.
Huvudnyheterna i kÀrnan 6.0:
- Disksubsystem, in- och utmatning och filsystem
- I filsystemet XFS har stöd för asynkron buffrad skrivning lagts till med hjÀlp av mekanismen io_uring. Prestandatest med verktyget fio (1 trÄd, blockstorlek 4 kB, 600 sekunder, sekventiell skrivning) visar att antalet in- och utdataoperationer per sekund (IOPS) har ökat frÄn 77k till 209k, överföringshastigheten frÄn 314MB/s till 854MB/s, och latensen har minskat frÄn 9600ns till 120ns (80 gÄnger).
- I filsystemet Btrfs har den andra versionen av protokollet för kommandot "send" implementerats, vilket möjliggör stöd för ytterligare metadata, överföring av data i större block (mer Àn 64K) och överföring av extenter i komprimerad form. Prestandan för direkta lÀsoperationer har ökat avsevÀrt (upp till 3 gÄnger) genom samtidig lÀsning av upp till 256 sektorer. LÄsningskonflikter har minskats och verifieringen av metadata har pÄskyndats genom att reserverade metadata för fördröjda element har minskats.
- I filsystemet ext4 har nya ioctl-operationer EXT4_IOC_GETFSUUID och EXT4_IC_SETFSUUID lagts till för att extrahera eller stÀlla in UUID-identifikatorn som lagras i superblocket.
- I filsystemet F2FS har ett lÀge för lÄg minnesanvÀndning föreslagits, vilket optimerar arbetet pÄ enheter med liten mÀngd RAM och gör det möjligt att minska minnesanvÀndningen pÄ bekostnad av minskad prestanda.
- Stöd för autentisering av NVMe-enheter har lagts till.
- I servern I NFSv4 har en grÀns för antalet aktiva klienter införts, som stÀlls in till 1024 tillÄtna klienter per gigabyte RAM i systemet.
- I implementeringen av CIFS-klienten har prestandan ökat i lÀget för flera kanaler.
- En undersystem för hÀndelsespÄrning i filsystemet fanotify har fÄtt ett nytt flagga FAN_MARK_IGNORE för att ignorera specifika hÀndelser.
- I filsystemet Overlayfs, vid montering ovanpÄ ett filsystem med anvÀndaridentifieringsmappning, har korrekt stöd för POSIX-kompatibla Ätkomstkontrollistor sÀkerstÀllts.
- En blockdrivrutin ublk har lagts till, som flyttar specifik logik till en bakgrundsprocess i anvÀndarutrymmet och anvÀnder io_uring-systemet.
- Minne och systemtjÀnster
- Nya möjligheter har lagts till i DAMON (Data Access MONitor) systemet, vilket gör det möjligt att inte bara spÄra processers Ätkomst till RAM-minnet frÄn anvÀndarutrymmet, utan ocksÄ pÄverka minneshanteringen. SÀrskilt har en ny modul 'LRU_SORT' föreslagits, som sÀkerstÀ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 funktioner frÄn CXL-bussen (Compute Express Link), som anvÀnds för att organisera högpresterande interaktion mellan CPU och minnesenheter. CXL gör det möjligt att ansluta nya minnesregioner 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 bestÀndigt minne (PMEM).
- Prestandaproblem för system med AMD Zen-processorer har ÄtgÀrdats, vilka orsakades av kod som lades till för 20 Är sedan för att kringgÄ ett hÄrdvaruproblem i vissa chipsets (en ytterligare WAIT-instruktion lades till för att sakta ner processorn sÄ att chipsetet kunde gÄ in i vilolÀge). Denna Àndring ledde till minskad prestanda vid belastningar som ofta vÀxlar mellan vilotillstÄnd (idle) och aktivitet (busy). Till exempel, efter att kringgÄendet avlÀgsnades, ökade genomsnittliga resultatet av tbench-testet frÄn 32191 MB/s till 33805 MB/s.
- Heuristiken som möjliggjorde migrering av processer till minst belastade CPU:er med hÀnsyn till förvÀntad energibesparing har tagits bort frÄn uppgiftsschemalÀggaren. Utvecklarna kom fram till att heuristiken inte gav tillrÀcklig nytta och att det var enklare att flytta processer utan ytterligare bedömningar varje gÄng en sÄdan flytt potentiellt kan leda till minskad energiförbrukning (t.ex. nÀr den mÄlinriktade CPU:n ligger pÄ en nivÄ med lÀgre energiförbrukning). AvstÀngningen av heuristiken ledde till en minskning av energiförbrukningen vid intensiva uppgifter, exempelvis minskade energiförbrukningen med 5,6 % i ett videodekodningstest.
- Optimering av uppgiftsfördelningen över CPU-kÀrnor har genomförts pÄ stora system, vilket har ökat prestandan vid vissa typer av belastning.
- Ett nytt flagg i grÀnssnittet för asynkron I/O, io_uring, har föreslagits: IORING_RECV_MULTISHOT, vilket möjliggör anvÀndning av "multi-shot"-lÀge med systemanropet recv() för att utföra flera lÀsoperationer frÄn en nÀtverksanslutning pÄ en gÄng. I io_uring har Àven stöd för nÀtverksoverföring utan mellanliggande buffring (zero-copy) implementerats.
- Möjlighet att sÀtta BPF-program kopplade till uprobes i vilolÀge har implementerats. En ny iterator, ksym, har ocksÄ lagts till i BPF för arbete med kÀrnans symboltabeller.
- Den förÄldrade grÀnssnittet "efivars" i sysfs, avsedd för Ätkomst till UEFI-startvariabler, har tagits bort (virtual FS efivarfs anvÀnds nu alltmer för Ätkomst till EFI-data).
- Nya rapporter för analys av lÄs-konflikter och den tid som processorn spenderar pÄ att utföra kÀrnkomponenter har implementerats i verktyget perf.
- InstÀllningen CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, som möjliggjorde kompileringslÀge med optimering "-O3", har tagits bort. Det noteras att experiment med optimeringslÀgen kan utföras genom att överföra flaggor vid kompilering ("make KCFLAGS=-O3"), och för att lÀgga till instÀllningen i Kconfig krÀvs det att reproducibel prestandaprofileringsutförs, vilket visar att deployment av loopar under "-O3" ger vinster jÀmfört med optimeringsnivÄn "-O2".
- Ett debugfs-grÀnssnitt har lagts till för att hÀmta information om hur olika "memory shrinkers" (hanterare som anropas vid minnesbrist och som packar kÀrnans datakonstruktioner för att minska deras minnesanvÀndning) fungerar.
- Stöd för PCI-bussen har implementerats för OpenRISC- och LoongArch-arkitekturer.
- För RISC-V-arkitekturen har en "Zicbom"-utvidgning implementerats för att hantera enheter med DMA som inte Àr cachikoherenta.
- Virtualisering och sÀkerhet
- En RV (Runtime Verification) verifieringsmekanism har lagts till för att kontrollera korrekt drift i högpÄlitliga system som garanterar avsaknad av fel. Verifieringen utförs under körning genom att koppla hanterare till spÄrningspunkter som jÀmför den faktiska exekveringen med en fördefinierad referensmodell av en automat som definierar det förvÀntade systembeteendet. JÀmförelsen med modellen under körning marknadsförs som en mer lÀttviktig och praktiskt genomförbar metod för att bekrÀfta korrekt exekvering i kritiska system, vilket kompletterar klassiska metoder för att bekrÀfta tillförlitlighet. Bland fördelarna med RV nÀmns möjligheten att sÀkerstÀlla strikt verifiering utan att behöva implementera hela systemet i ett modelleringssprÄk, samt en flexibel reaktion pÄ oförutsedda hÀndelser.
- KÀrnkomponenter för att hantera enheter baserade pÄ Intel SGX2 (Software Guard eXtensions)-teknik har integrerats, vilket gör att applikationer kan köra kod i isolerade, krypterade minnesomrÄden som resten av systemet har begrÀnsad tillgÄng till. Intel SGX2-teknologin stöds av Intel Ice Lake- och Gemini Lake-chips och skiljer sig frÄn Intel SGX1 genom ytterligare instruktioner för dynamisk hantering av minnet i enheterna.
- För x86-arkitekturen har möjligheten att överföra en frö till en pseudorandom number generator genom bootloader-instÀllningar implementerats.
- I LSM-modulen SafeSetID har möjligheten att hantera Àndringar som görs genom anrop av setgroups() lagts till. SafeSetID möjliggör för systemtjÀnster att sÀkert hantera anvÀndare utan att öka privilegier (CAP_SETUID) och utan att fÄ anvÀndarbehörigheter.
- Stöd för blockchifferet ARIA har lagts till.
- I sÀkerhetskontrollmodulen baserad pÄ BPF har möjligheten att koppla hanterare till enskilda processer och processgrupper (cgroup) lagts till.
- En mekanism för att implementera watchdog har lagts till för att identifiera frysningar av gÀstsysten baserat pÄ övervakning av vCPU-aktivitet.
- NĂ€tverkssystemet
- Till BPF-subsystemet har hanterare lagts till för att generera och verifiera SYN-cookies. En uppsÀttning funktioner (kfunc) för Ätkomst och Àndring av anslutningars tillstÄnd har ocksÄ lagts till.
- Det trÄdlösa stacken har fÄtt stöd för mekanismen MLO (Multi-Link Operation), definierad i specifikationen WiFi 7, som gör det möjligt för enheter att samtidigt ta emot och skicka data med hjÀlp av olika frekvensband och kanaler, till exempel för att etablera flera kommunikationskanaler mellan en Ätkomstpunkt och en klientenhet.
- Prestandan för den inbyggda implementeringen av TLS-protokollet i kÀrnan har förbÀttrats.
- En kernel-kommandoradsparameter "hostname=" har lagts till, vilket gör det möjligt att stÀlla in vÀrdnamnet tidigt under uppstarten, innan anvÀndarutrymmets komponenter har körts.
- Utrustning
- I i915-drivrutinen (Intel) har stöd för dedikerade Intel Arc-grafikkort (DG2/Alchemist) A750 och A770 lagts till. En första implementering av stöd för Intel Ponte Vecchio GPU (Xe-HPC) och Meteor Lake har föreslagits. Arbetet med att stödja Intel Raptor Lake-plattformen har fortsatt.
- I amdgpu-drivrutinen har arbetet fortsatt med att sÀkerstÀlla stöd för AMD RDNA3 (RX 7000) och CDNA (Instinct)-plattformer.
- I Nouveau-drivrutinen har koden för stöd av NVIDIA nv50 GPU:s displaymotorer omarbetats.
- En ny DRM-drivrutin för LogiCVC-skÀrmar har lagts till.
- I v3d-drivrutinen (för Broadcom Video Core GPU) har stöd implementerats för Raspberry Pi 4-kort.
- I msm-drivrutinen har stöd för Qualcomm Adreno 619 GPU lagts till.
- I Panfrost-drivrutinen har stöd för ARM Mali Valhall GPU lagts till.
- Inledande stöd för Qualcomm Snapdragon 8cx Gen3-processorer som anvÀnds i Lenovo ThinkPad X13s-bÀrbara datorer har lagts till.
- Ljuddrivrutiner för plattformar som AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake och Mediatek MT8186 har lagts till.
- Stödet för Intel Habana Gaudi 2-maskininlÀrningsacceleratorer har lagts till.
- Stöd för ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3 har lagts till.
Samtidigt har den latinamerikanska Stiftelsen för fri programvara skapat en helt fri version av kĂ€rnan 6.0 â Linux-libre 6.0-gnu, renad frĂ„n fastvaror och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndningsomrĂ„de Ă€r begrĂ€nsat av tillverkaren. I den nya versionen har anvĂ€ndningen av blobbar i drivrutinen CS35L41 HD-audio och drivrutinen med grĂ€nssnittet UCSI för STM32G0-mikrokontroller stĂ€ngts av. DTS-filer för Qualcomm- och MediaTek-chips har stĂ€dats. AvstĂ€ngningen av blobbar i drivrutinen MediaTek MT76 har omarbetats. Koden för stĂ€dning av blobbar i drivrutiner och subsystem för AMDGPU, Adreno, Tegra VIC, Netronome NFP och Habanalabs Gaudi2 har uppdaterats. StĂ€dningen av drivrutinen VXGE, som har tagits bort frĂ„n kĂ€rnan, har upphört.
KĂ€lla: opennet.ru
