Linux-kärnan version 6.3

Efter två månaders utveckling presenterade Linus Torvalds releasen av Linux-kärnan 6.3. Bland de mest anmärkningsvärda förändringarna: rensning av äldre ARM-plattformar och grafikdrivrutiner, fortsatt integration av Rust-språkstöd, hwnoise-verktyg, stöd för röd-svarta trädstrukturer i BPF, BIG TCP-läge för IPv4, inbyggt Dhrystone-riktmärke, möjlighet att inaktivera exekvering i memfd, stöd för att skapa HID-drivrutiner med BPF, ändringar har gjorts i Btrfs för att minska fragmentering av blockgrupper.

Den nya versionen innehåller 15637 2055 korrigeringar från 76 14296 utvecklare; patchstorlek - 1023183 MB (ändringar påverkade 883103 filer, 16843 rader kod lades till, 2178 rader raderades). Som jämförelse erbjöd den tidigare versionen 62 39 korrigeringar från 6.3 15 utvecklare; patchstorleken är 10 MB. Cirka 5 % av alla ändringar som introduceras i 3-kärnan är relaterade till drivrutiner, ungefär XNUMX % av ändringarna är relaterade till uppdateringskod som är specifik för hårdvaruarkitekturer, XNUMX % är relaterade till nätverksstacken, XNUMX % är relaterade till filsystem och XNUMX % är relaterade till interna kärndelsystem.

Huvudsakliga innovationer i kärnan 6.3:

  • Minnes- och systemtjänster
    • En betydande rensning av kod associerad med gamla och oanvända ARM-kort genomfördes, vilket gjorde det möjligt att minska storleken på kärnans källkod med 150 tusen rader. Mer än 40 gamla ARM-plattformar har tagits bort.
    • Möjligheten att skapa drivrutiner för indataenheter med ett HID (Human Interface Device)-gränssnitt, implementerat i form av BPF-program, har implementerats.
    • Överföringen från Rust-for-Linux-grenen av ytterligare funktionalitet relaterad till användningen av Rust-språket som ett andra språk för att utveckla drivrutiner och kärnmoduler har fortsatt. Rust-stöd är inte aktiverat som standard och resulterar inte i att Rust inkluderas som ett obligatoriskt kärnbyggeberoende. Funktionaliteten som erbjuds i tidigare utgåvor har utökats för att stödja typerna Arc (implementering av pekare med ett referensantal), ScopeGuard (rensning när man går utanför räckvidden) och ForeignOwnable (ger rörelse av pekare mellan C och Rustkod). 'Låna'-modulen (typ 'Ko' och egenskap 'ToOwned') har tagits bort från 'alloc'-paketet. Det noteras att tillståndet för Rust-stödet i kärnan redan är nära att börja acceptera de första modulerna som skrivs i Rust i kärnan.
    • Användarläge Linux (kör kärnan som en användarprocess) på x86-64-system implementerar stöd för kod skriven på Rust-språket. Lade till stöd för att bygga Linux i användarläge med clang med länktidsoptimering (LTO) aktiverad.
    • Lade till hwnoise-verktyg för att spåra förseningar orsakade av hårdvara. Avvikelser i exekveringstiden för operationer (jitter) bestäms när avbrottsbearbetning är inaktiverad och överstiger en mikrosekund per 10 minuters beräkningar.
    • Lade till en kärnmodul som implementerar Dhrystone benchmark, som kan användas för att utvärdera CPU-prestanda i konfigurationer utan användarutrymmeskomponenter (till exempel vid porteringsstadiet för nya SoCs som bara implementerar kärnladdning).
    • Lade till kärnans kommandoradsparameter "cgroup.memory=nobpf", som inaktiverar minnesförbrukning för BPF-program, vilket kan vara användbart för system med isolerade behållare.
    • För BPF-program föreslås en implementering av den röd-svarta träddatastrukturen, som använder kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) istället för att lägga till en ny mappningstyp.
    • Mekanismen för omstartbara sekvenser (rseq, omstartbara sekvenser) har lagt till möjligheten att överföra parallella exekveringsidentifierare (minne-map concurrency ID) till processer, identifierade med CPU-numret. Rseq tillhandahåller ett sätt att snabbt utföra operationer atomiskt, som, om de avbryts av en annan tråd, rensas upp och försöks igen.
    • ARM-processorer stöder instruktioner för SME 2 (Scalable Matrix Extension).
    • För arkitekturerna s390x och RISC-V RV64 har stöd för "BPF-trampolin"-mekanismen implementerats, vilket gör det möjligt att minimera omkostnader vid överföring av samtal mellan kärnan och BPF-programmen.
    • På system med processorer baserade på RISC-V-arkitekturen implementeras användningen av "ZBB"-instruktioner för att påskynda strängoperationer.
    • För system baserade på LoongArch-instruktionsuppsättningsarkitekturen (används i Loongson 3 5000-processorerna och implementerar den nya RISC ISA, liknande MIPS och RISC-V), stöd för kernel address space randomization (KASLR), förändringar i kärnminnesplacering (omlokalisering) ), är hårdvarupunkter implementerade stopp- och kprobe-mekanism.
    • DAMOS-mekanismen (Data Access Monitoring-Based Operation Schemes), som låter dig frigöra minne baserat på frekvensen av minnesåtkomst, stöder filter för att utesluta vissa minnesområden från behandling i DAMOS.
    • Nolibc minimal standard C-bibliotek ger stöd för s390-arkitekturen och Arm Thumb1-instruktionsuppsättningen (utöver stöd för ARM, AArch64, i386, x86_64, RISC-V och MIPS).
    • Objtool har optimerats för att snabba upp kärnmonteringen och minska den maximala minnesförbrukningen under monteringen (när man bygger kärnan i "allyesconfig"-läge finns det nu inga problem med tvångsavslutning av processer på system med 32 GB RAM).
    • Stödet för kärnmontering av Intel ICC-kompilatorn har upphört, vilket har varit inoperativt under en lång tid och ingen har uttryckt en önskan att fixa det.
  • Diskundersystem, I/O och filsystem
    • tmpfs implementerar stöd för kartläggning av användar-ID:n för monterade filsystem, som används för att matcha filerna för en specifik användare på en monterad främmande partition med en annan användare på det aktuella systemet.
    • I Btrfs, för att minska fragmentering av grupper av block, delas omfattningar efter storlek vid allokering av block, d.v.s. vilken grupp av block som helst är nu begränsad till små (upp till 128KB), medium (upp till 8 MB) och stora omfattningar. Implementeringen av raid56 har omstrukturerats. Koden för kontroll av kontrollsummor har omarbetats. Prestandaoptimeringar har gjorts för att påskynda sändningsoperationen med upp till 10 gånger genom att cachelagra utime för kataloger och exekvera kommandon endast när det är nödvändigt. Fiemap-operationer är nu tre gånger snabbare genom att hoppa över bakåtlänkskontroller för delad data (ögonblicksbilder). Operationer med metadata har accelererats med 10 % genom att optimera sökningen efter nycklar i b-trädstrukturer.
    • Ext4-filsystemets prestanda har förbättrats genom att tillåta flera processer att samtidigt utföra direkta I/O-operationer på förallokerade block med hjälp av delade inodlås istället för exklusiva lås.
    • I f2fs har man arbetat med att förbättra kodläsbarheten. Löste viktiga frågor relaterade till atomic writes och den nya utsträckningscachen.
    • EROFS-filsystemet (Enhanced Read-Only File System), designat för användning i skrivskyddade partitioner, implementerar förmågan att binda dekomprimeringsoperationer av komprimerat filinnehåll till CPU:n för att minska latens vid åtkomst till data.
    • BFQ I/O-schemaläggaren har lagt till stöd för avancerade roterande diskenheter, till exempel de som använder flera separat styrda huvudenheter (Multi Actuators).
    • Stöd för datakryptering med AES-SHA2-algoritmen har lagts till i implementeringen av NFS-klienten och servern.
    • Stöd för frågeexpansionsmekanismen har lagts till undersystemet FUSE (Filesystems In User Space), vilket gör att ytterligare information kan placeras i frågan. Baserat på denna funktion är det möjligt att lägga till gruppidentifierare till FS-begäran, som är nödvändiga för att ta hänsyn till åtkomsträttigheter när man skapar objekt i FS (create, mkdir, symlink, mknod).
  • Virtualisering och säkerhet
    • KVM-hypervisorn för x86-system har lagt till stöd för Hyper-V utökade hyperanrop och tillhandahållit vidarebefordran av dem till en hanterare som körs i värdmiljön i användarutrymmet. Förändringen gjorde det möjligt att implementera stöd för kapslad lansering av Hyper-V hypervisor.
    • KVM gör det enklare att begränsa gäståtkomst till PMU-händelser (Performance Monitor Unit) relaterade till prestationsmätning.
    • Memfd-mekanismen, som låter dig identifiera ett minnesområde genom en fildeskriptor som överförs mellan processer, har lagt till möjligheten att skapa områden där kodexekvering är förbjuden (icke-körbar memfd) och det är omöjligt att ställa in körningsrättigheter i framtiden .
    • En ny prctl-operation PR_SET_MDWE har lagts till som blockerar försök att aktivera minnesåtkomsträttigheter som samtidigt tillåter skrivning och exekvering.
    • Skydd mot Spectre-klassattacker har lagts till och aktiverats som standard, baserat på det automatiska IBRS-läget (Enhanced Indirect Branch Restricted Speculation) som föreslagits i AMD Zen 4-processorer, vilket tillåter adaptivt tillåta och inaktivera spekulativ exekvering av instruktioner under avbrottsbehandling, systemanrop och kontextväxlar. Det föreslagna skyddet ger lägre overhead jämfört med Retpoline-skyddet.
    • Åtgärdat en sårbarhet som tillåter förbikoppling av skydd mot Spectre v2-attacker vid användning av simultan multi-threading-teknik (SMT eller Hyper-Threading) och orsakad av inaktivering av STIBP-mekanismen (Single Thread Indirect Branch Predictors) vid val av IBRS-skyddsläge.
    • För system baserade på ARM64-arkitekturen har ett nytt monteringsmål "virtconfig" lagts till, när det väljs aktiveras endast den minsta uppsättningen kärnkomponenter som krävs för att starta i virtualiseringssystem.
    • För m68k-arkitekturen har stöd för filtrering av systemanrop med hjälp av seccomp-mekanismen lagts till.
    • Tillagt stöd för CRB TPM2-enheter (Command Response Buffer) inbyggda i AMD Ryzen-processorer, baserade på Microsoft Pluton-teknik.
  • Nätverksdelsystem
    • Ett nätlänksgränssnitt har lagts till för att konfigurera PLCA-underlagret (Physical Layer Collision Avoidance), som definieras i IEEE 802.3cg-2019-specifikationen och används i 802.3cg (10Base-T1S) Ethernet-nätverk optimerade för att ansluta Internet of Things-enheter och industrisystem. Användningen av PLCA förbättrar prestandan i Ethernet-nätverk med delade media.
    • Stöd för API:et för "trådlösa tillägg" för att hantera trådlösa WiFi 7 (802.11be) gränssnitt har upphört eftersom detta API inte täcker alla nödvändiga inställningar. När du försöker använda API:et för "trådlösa tillägg", som fortfarande stöds som ett emulerat lager, kommer nu en varning att visas för de flesta aktuella enheter.
    • Detaljerad dokumentation om netlink API har utarbetats (för kärnutvecklare och för utvecklare av användarutrymmen). Verktyget ynl-gen-c har implementerats för att generera C-kod baserat på YAML-specifikationerna för Netlink-protokollet.
    • Stöd för alternativet IP_LOCAL_PORT_RANGE har lagts till nätverkssockets för att förenkla konfigurationen av utgående anslutningar genom adressöversättare utan att använda SNAT. När du använder en IP-adress på flera värdar, gör IP_LOCAL_PORT_RANGE det möjligt att använda ett annat utbud av utgående nätverksportar på varje värd och vidarebefordra paket baserat på portnummer på gatewayen.
    • För MPTCP (MultiPath TCP) har möjligheten att bearbeta blandade strömmar med IPv4- och IPv6-protokollen implementerats. MPTCP är en förlängning av TCP-protokollet för att organisera driften av en TCP-förbindelse med leverans av paket samtidigt längs flera rutter genom olika nätverksgränssnitt associerade med olika IP-adresser.
    • För IPv4 är det möjligt att använda tillägget BIG TCP, som gör att du kan öka den maximala TCP-paketstorleken till 4 GB för att optimera driften av höghastighetsinterna datacenternätverk. En liknande ökning av paketstorlek med en 16-bitars huvudfältstorlek uppnås genom implementering av "jumbo"-paket, vars storlek i IP-huvudet är satt till 0, och den faktiska storleken sänds i en separat 32-bitars fältet i en separat bifogad rubrik.
    • En ny sysctl-parameter default_rps_mask har lagts till, genom vilken du kan ställa in standardkonfigurationen för RPS (Receive Packet Steering), som är ansvarig för att distribuera behandlingen av inkommande trafik över CPU-kärnor på avbrottshanterarnivån.
    • Stöd för köbehandlingsdiscipliner för begränsning av CBQ (klassbaserad kö), ATM (ATM virtuella kretsar), dsmark (differentierad tjänstemarkör), tcindex (trafikkontrollindex) och RSVP (resursreservationsprotokoll) har upphört. Dessa discipliner har övergivits under lång tid och det fanns ingen som var villig att fortsätta deras stöd.
  • Оборудование
    • Tog bort alla DRI1-baserade grafikdrivrutiner: i810 (äldre integrerade Intel 8xx-grafikkort), mga (Matrox GPU), r128 (ATI Rage 128 GPU, inklusive Rage Fury, XPERT 99 och XPERT 128-kort), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) och via (VIA IGP), som fasades ut 2016 och inte har stöds i Mesa sedan 2012.
    • Ta bort äldre rambuffertdrivrutiner (fbdev) omap1, s3c2410, tmiofb och w100fb.
    • En DRM-drivrutin har lagts till för VPU-enheterna (Versatile Processing Unit) integrerade i Intel Meteor Lake CPU (14:e generationen), utformade för att påskynda operationer relaterade till datorseende och maskininlärning. Drivrutinen implementeras med hjälp av "accel"-delsystemet, som syftar till att ge stöd för beräkningsacceleratorer, som kan tillhandahållas antingen i form av individuella ASIC:er eller som IP-block inuti SoC och GPU.
    • Drivrutinen i915 (Intel) utökar stödet för diskreta Intel Arc (DG2/Alchemist) grafikkort, ger preliminärt stöd för Meteor Lake GPU:er och inkluderar stöd för Intel Xe HP 4tile GPU:er.
    • Amdgpu-drivrutinen lägger till stöd för AdaptiveSync-teknik och möjligheten att använda Secure Display-läge med flera skärmar. Uppdaterat stöd för DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x och DP 2.1.
    • Msm-drivrutinen (Qualcomm Adreno GPU) har lagt till stöd för plattformarna SM8350, SM8450 SM8550, SDM845 och SC8280XP.
    • Nouveau-drivrutinen stöder inte längre gamla ioctl-anrop.
    • Experimentellt stöd för NPU VerSilicon (VeriSilicon Neural Network Processor) har lagts till i etnaviv-drivrutinen.
    • Drivrutinen pata_parport har implementerats för IDE-enheter anslutna via en parallellport. Den tillagda drivrutinen tillät oss att ta bort den gamla PARIDE-drivrutinen från kärnan och modernisera ATA-undersystemet. En begränsning för den nya drivrutinen är oförmågan att samtidigt ansluta en skrivare och en disk via parallellporten.
    • Lade till ath12k-drivrutin för trådlösa kort på Qualcomm-chips som stöder Wi-Fi 7. Lade till stöd för trådlösa kort på RealTek RTL8188EU-chips.
    • Lade till stöd för 46 kort med processorer baserade på ARM64-arkitektur, inklusive Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD och även enheter baserade på SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 och SDM632, Rockchips RK3128 tv-box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328, RK3, RK642, RK654, RK68, RK69, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX, RKXNUMX XNUMX/AMXNUMX XNUMX/ AMXNUMX/AMXNUMX).

Samtidigt bildade Latin American Free Software Foundation en version av den helt fria kärnan 6.3 - Linux-libre 6.3-gnu, rensat från element av firmware och drivrutiner som innehåller icke-fria komponenter eller kodsektioner, vars omfattning är begränsat av tillverkaren. I release 6.3 rensades blobbar upp i de nya drivrutinerna ath12k, aw88395 och peb2466, såväl som i de nya devicetree-filerna för qcom-enheter baserade på AArch64-arkitekturen. Uppdaterad blob-rensningskod i drivrutiner och delsystem amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, samt i drivrutiner för DVB-kort med mjukvaruavkodning och i förkompilerade BPF-filer. Rengöring av drivrutiner för mga, r128, tm6000, cpia2 och r8188eu har stoppats sedan de har tagits bort från kärnan. Förbättrad i915-drivrutinrensning.

Källa: opennet.ru

Lägg en kommentar