Kernel-udgivelse Linux 6.12 med realtidsunderstøttelse

Efter to måneders udvikling udgav Linus Torvalds kernen. Linux 6.12. Blandt de mest bemærkelsesværdige ændringer: muligheden for at aktivere realtidstilstand, sched_ext til oprettelse af CPU-planlæggere via eBPF, QR-kodeoutput i nødsituationer, TCP-mekanisme til enhedshukommelse, SCHED_DEADLINE-mekanisme til reservation af serverressourcer, forbedring af EEVDF-opgaveplanlæggeren, IPE-modul til indstilling af integritetspolitikker.

Den nye version indeholder 14607 rettelser fra 2167 udviklere, patchstørrelsen er 37 MB (ændringerne berørte 13087 filer, 507913 linjer kode blev tilføjet, 234083 linjer blev slettet). Den sidste udgivelse havde 15130 rettelser fra 2078 udviklere, patchstørrelsen var 85 MB (i 6.10-kernen var patchen 41 MB stor). Omkring 45 % af alle ændringer introduceret i 6.12 er relateret til enhedsdrivere, cirka 12 % af ændringerne er relateret til opdatering af kode, der er specifik for hardwarearkitekturer, 13 % er relateret til netværksstakken, 6 % er relateret til filsystemer og 3 % er relateret til interne kerneundersystemer.

Vigtigste innovationer i kerne 6.12:

  • Hukommelse og systemtjenester
    • Muligheden for at bygge kernen med PREEMPT_RT-indstillingen uden yderligere patches til realtidsdrift er nu tilgængelig. Den sidste manglende kernefunktion, der forhindrede PREEMPT_RT-tilstand i at blive aktiveret, var understøttelse af ikke-blokerende atomisk output via printk-funktionen, som også er inkluderet i kernen. PREEMPT_RT-understøttelse er tilgængelig for arkitekturerne x86, x86_64, ARM64 og RISC-V. Indtil nu blev implementeringen af ​​PREEMPT_RT-tilstand leveret i form af eksterne patches, som nogle distributioner, såsom RHEL, SUSE og ... Ubuntu, skabte separate realtidsudgaver af deres produkter, der er efterspurgte inden for områder som finansielle systemer, lyd- og videobehandlingsenheder, luftfart, medicin, robotteknologi, telekommunikation og industrielle systemer, hvor det er nødvendigt at sikre forudsigelig hændelsesbehandlingstid.
    • Mekanismen "sched_ext" (SCX) er blevet tilføjet, hvilket muliggør brugen af ​​eBPF til at oprette CPU-planlæggere, der dækker stort set alle aspekter af opgaveplanlægning og CPU-ressourceallokering. Sådanne planlæggere kan indlæses og udføres dynamisk i kernen. Linux в virtuel maskine eBPF. Sched_ext-mekanismen forenkler oprettelsen af ​​opgavespecifikke planlæggere, muliggør eksperimentering med forskellige planlægningsteknikker og -strategier og giver mulighed for hurtig oprettelse af fungerende prototyper og øjeblikkelig udskiftning af planlæggere i produktionsinfrastrukturer. For eksempel kan du ved hjælp af sched_ext oprette en planlægger, der tager højde for detaljerne i en specifik applikation og dynamisk ændrer dens planlægningsstrategi afhængigt af systemets tilstand og andre faktorer.
    • Sammensætningen inkluderer den resterende del af de patches, der er nødvendige for driften af ​​SCHED_DEADLINE-servermekanismen, som løser problemet med underudnyttelse af CPU-ressourcer ved almindelige opgaver, når CPU'en er monopoliseret af højprioriterede (realtids-) opgaver. For at forhindre CPU-monopolisering brugte kernen tidligere Realtime throttling-mekanismen, som forsøgte at reservere 5 % til lavprioriterede opgaver, hvilket efterlod 95 % af tiden til realtidsopgaver. Denne mekanisme lod meget tilbage at ønske, da almindelige opgaver i mange situationer ikke fik nok processortid. SCHED_DEADLINE-server implementerer en mere effektiv ressourcereservationsmekanisme.
    • Integrationen af ​​EEVDF (Earliest Eligible Virtual Deadline First) opgaveplanlæggeren er blevet fuldført, som erstattede CFS (Completely Fair Scheduler) planlæggeren, der leveres startende med kerne 2.6.23. Når du vælger den næste proces til at overføre eksekvering, tager den nye planlægger hensyn til processer, der ikke har modtaget nok processorressourcer eller har modtaget en ufortjent stor mængde processortid. I det første tilfælde er overførslen af ​​kontrol til processen tvunget, og i det andet er det tværtimod udskudt. Den gamle CFS-planlægger brugte heuristik og finjustering til at identificere processer, der krævede særlig opmærksomhed, mens den nye planlægger sporer dem mere eksplicit og ikke kræver finjustering. EEVDF forventes at reducere forsinkelser i opgaver, som CFS har haft skemalægningsproblemer med.
    • I kernenødhåndteringen - DRM Panic, som bruger DRM (Direct Rendering Manager) undersystemet til at vise en visuel rapport i stil med "blue screen of death", muligheden for at vise et logo og en QR-kode med en kmsg-rapport på skærmen, når en nødsituation opstår, er blevet tilføjet. Da kun 2953 bytes passer ind i en QR-kode, er muligheden DRM_PANIC_SCREEN_QR_CODE_URL tilvejebragt, hvor kmsg-rapporten komprimeres ved hjælp af zlib og vedhæftes som en parameter til URL'en, hvilket tillader omkring 40 bytes at blive overført gennem V7500 QR-koden. Når du bygger pakker med kernen, kan distributioner indstille en basis-URL for URL'en, som vil give dem mulighed for at navigere til en side for at rapportere et problem. For at vælge QR-kodeformatet er indstillingen DRM_PANIC_SCREEN_QR_VERSION til rådighed.
    • Tilføjet understøttelse af ARM POE (Permission Overlay Extension), som giver dig mulighed for at indstille adgangsrettigheder til hukommelsesområder. Ved at bruge denne udvidelse, på systemer med ARM64-processorer, kan Memory Protection Keys-mekanismen implementeres, som bruges til at begrænse adgangen til hukommelsessider uden at ændre hukommelsessidetabellen.
    • For Loongarch, ARM64, PowerPC og s390 arkitekturerne er implementeringen af ​​getrandom() systemkaldet blevet flyttet, optimeret ved hjælp af vDSO (virtual dynamic shared object) mekanismen, som gør det muligt at flytte systemopkaldsbehandleren fra kernen til brugerplads og undgå kontekstskift. Optimering giver dig mulighed for at fremskynde genereringen af ​​tilfældige tal med op til 15 gange.
    • Muligheden for at bruge absolutte timeouts, der udløses, når en bestemt tid er nået på systemuret, er blevet tilføjet til det io_uring asynkrone input/output-undersystem (tidligere kunne der kun indstilles relative timeouts, hvilket indikerede varigheden fra begyndelsen af ​​operationen ).
    • Tilføjede filer til generering af bindinger til libcpupower-biblioteket ved hjælp af SWIG-værktøjssættet, som giver dig mulighed for at generere bindinger fra C/C++-kode til forskellige programmeringssprog. Bindinger giver dig mulighed for at oprette scripts i Python og andre sprog og bruge dem til at udvide funktionaliteten af ​​libcpupower-biblioteket, som giver en API til styring af cpufreq og drivere fra brugerrummet.
    • Cpuidle-værktøjet viser værdien af ​​"residency" i inaktiv tilstand, der bruges til realtidssystemer og tager højde for den minimale tid, som processoren skal være inaktiv for at retfærdiggøre energiomkostningerne ved overgang til og ud af denne tilstand.
    • Tilføjet muligheden for at bruge Clang-compileren til at bygge standard C-biblioteket nolibc, som er inkluderet i kernens kildekode. Linux og giver en indpakning omkring grundlæggende systemkald. Når nolibc bygges i Clang, er link-time optimization (LTO) aktiveret.
    • Nogle cgroup1-grænseflader er blevet forældet, såsom TCP-regnskab, soft limit version XNUMX og håndtering af hukommelsesudmattelse. Understøttelsen af ​​disse funktioner forbliver fuld indtil videre, og advarslen er lavet for at undersøge antallet af brugere, der fortsætter med at bruge disse funktioner.
    • Tilføjet muligheden for at konfigurere en ringsporingsbuffer til at gemme akkumulerede data efter en genstart, hvilket vil tillade dig ikke at miste akkumulerede fejlfindingsoplysninger i tilfælde af et kernenedbrud. Dataene gemmes i hukommelsen. Aktivering sker via kommandolinjeparameteren trace_instance kernel, for eksempel vil indstilling af "trace_instance=boot_map@0x285400000:12M" reservere 12 MB hukommelse ved 0x285400000 til "boot_map" bufferen, som vil være tilgængelig via filen /sys/kernel /tracing/instances/boot_map.
    • Fortsat migrering af ændringer fra Rust-for-grenenLinux, relateret til brugen af ​​Rust som et andet sprog til udvikling af drivere og kernemoduler (Rust-understøttelse er ikke aktiv som standard og inkluderer ikke Rust blandt de nødvendige byggeafhængigheder for kernen). Tilføjet modulerne 'list' og 'rbtree' til at arbejde med dobbelt linkede lister og rød-sorte søgetræer. Udvidede mulighederne for modulerne 'init', 'sync', 'types' og 'error'. Muligheden for at bruge Rust-kode, når man bygger en kerne med beskyttelse mod Spectre-angreb (MITIGATION_{RETHUNK,RETPOLINE,SLS}-indstillinger), ved hjælp af KASAN-debugging-systemet, kCFI (kernel Control Flow Integrity) og Shadow Call-beskyttelsesmekanismerne, og ved brug af yderligere GCC-plugins, blev tilføjet. En driver til Applied Micro QT2025 PHY Ethernet-controlleren, skrevet i Rust, blev tilføjet. En separat hjemmeside med dokumentation er blevet udarbejdet: rust.docs.kernel.org.
    • Værktøjet xdrgen er blevet tilføjet til kernens kildekode til at konvertere XDR-specifikationer (eXternal Data Representation) til XDR-kodnings- og afkodningsfunktioner skrevet i den C-stil, der er anvendt af kernen. Linux.
    • Kernen har vedtaget en ændring for at implementere en pointer-maskeringsmekanisme for at reducere antallet af langsomme kald til barrier_nospec() i 64-bit copy_from_user()-funktionen, der bruges til at kopiere data ind i kernen fra brugerrummet. Brug af maskering fremskynder "per_thread_ops"-testen, som evaluerer antallet af operationer, der kan udføres i en tråd, med 2.6 %.
    • En ny USB-driver er blevet tilføjet, der giver dig mulighed for at bruge 9pfs-protokollen som en transport til at sende og modtage data fra en USB-enhed, når du monterer 9p-filsystemet over USB (f.eks. "mount -t 9p -o trans=usbg, aname=/sti/til/ fs /mnt/9"). Et eksempel på brugen af ​​den nye driver er brugen af ​​NFS i stedet for at organisere opstarten af ​​rodpartitionen ved udvikling af indlejrede enheder.
  • Diskundersystem, I/O og filsystemer
    • Muligheden for at arbejde med lagerenheder, hvis blokstørrelse er større end størrelsen på hukommelsessiden i systemet, er blevet tilføjet til VFS-undersystemet. I filsystemer er denne funktion i øjeblikket kun understøttet i XFS.
    • FUSE-undersystemet, som giver dig mulighed for at oprette implementeringer af filsystemer, der opererer i brugerrummet, har tilføjet understøttelse til at kortlægge brugeridentifikatorer af monterede filsystemer, der bruges til at matche filerne fra en specifik bruger på en monteret fremmed partition med en anden bruger på den aktuelle system.
    • En ny fcntl-operation, F_CREATED_QUERY, er blevet implementeret, hvilket giver et program mulighed for at bestemme, om en fil, der blev åbnet ved hjælp af O_CREAT-flaget, blev oprettet, eller om den allerede eksisterede før.
    • Tilføjet muligheden for at bruge unikke 64-bit monteringspunkt-id'er til systemkaldet name_to_handle_at() for at undgå raceforhold ved parsing af /proc/mountinfo.
    • Størrelsen på "fil"-strukturen i kernen er blevet reduceret fra 232 til 184 bytes, hvilket reducerer hukommelsesforbruget på systemer, der aktivt arbejder med filer.
    • Montering af filsystemer til montering af punkter inden for /proc-hierarkiet, såsom /proc/PID/fd, var forbudt, hvilket skabte potentielle sikkerhedsproblemer.
    • Pseudo-FS NSFS (NameSpace FS), der bruges til at arbejde med navneområder, giver yderligere oplysninger om navneområderne for monteringspunkter.
    • EROFS-filsystemet (Extendable Read-Only File System), designet til brug på skrivebeskyttede partitioner, understøtter nu montering af filsystemer direkte fra diskbilleder gemt som filer.
    • Nye ioctl-kommandoer XFS_IOC_START_COMMIT og XFS_IOC_COMMIT_RANGE er blevet tilføjet til XFS til udveksling af indhold mellem to filer.
    • NFS har tilføjet understøttelse af "LOCALIO"-protokollen, som giver dig mulighed for at bestemme, om klienten og server NFS på den samme vært for at aktivere de tilsvarende optimeringer.
    • I Btrfs-filsystemet er der blevet foreslået ydeevneoptimeringer, koden er blevet refaktoreret, området for omfangslåsning under læseoperationer er blevet reduceret, arbejdet er fortsat med at konvertere hukommelsessider til at bruge sidefolioer, og automatisk hukommelsesfrigivelse er blevet implementeret for btrfs_path-strukturen.
    • I Ext4-filsystemet er fejl relateret til blokallokering, omfangsstyring, hurtig commit og journalføring blevet rettet.
  • Virtualisering og sikkerhed
    • Tilføjet IPE (Integrity Policy Enforcement) LSM-modulet, udviklet af Microsoft for at udvide det eksisterende obligatoriske adgangskontrolsystem. Modulet giver dig mulighed for at definere en generel integritetspolitik for hele systemet, der angiver hvilke operationer der er tilladt, og hvordan ægtheden af ​​komponenter skal verificeres. Ved at bruge IPE kan du for eksempel angive, hvilke eksekverbare filer, der må køre, under hensyntagen til deres overensstemmelse med referenceversionen ved hjælp af kryptografiske hashes leveret af dm-verity-systemet.
    • På kernekompileringsstadiet er det muligt separat at aktivere tilgængelige metoder til beskyttelse mod forskellige Spectre-klassesårbarheder i CPU'en. Kconfig tilbyder nye parametre: MITIGATE_MDS (beskyttelse mod Microarchitectural Data Sampling-sårbarheden), MITIGATE_TAA (beskyttelse mod TSX Asynchronous Abort-sårbarheden), MITIGATE_MMIO_STALE_DATA (beskyttelse mod MMIO Stale Data-sårbarheden), MITIGATE_L1TF-sårbarheden (beskyttelse mod LTBLE-Terminal), FIGATE_L1TF (beskyttelse (beskyttelse mod Retbleed-sårbarheder), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (beskyttelse mod Spectre-sårbarheder), MITIGATE_SRBDS (beskyttelse mod sårbarheden i Special Register Buffer Data Sampling), MITIGATE_SSB (beskyttelse mod Speculative Store Bypass-sårbarheden).
    • Tilføjet kommandolinjeindstilling proc_mem.force_override og et sæt byggeindstillinger i Kconfig (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE og PROC_MEM_FORCE_NEVER) for at forhindre hukommelsesændringer via /proc/pid/mem.
    • LSM-undersystem (Linux sikkerhedsmodul) er blevet skiftet til at bruge statiske kald, hvilket har forbedret sikkerhed og ydeevne.
    • Muligheden for at bruge standardkerner til ARM64-arkitekturen i gæstemiljøer, der kører på Android-systemer med en modificeret KVM-hypervisor (beskyttet KVM).
    • Landlock LSM-modulet, som giver dig mulighed for at begrænse interaktionen af ​​en gruppe af processer med det eksterne miljø, implementerer "IPC scoping"-konceptet for selektivt at begrænse interaktion med sandkassemiljøer ved hjælp af Unix-stik og -signaler. For eksempel kan du forbyde forbindelser ved hjælp af Unix-sockets fra et sandkassemiljø til processer, der ikke har isolation anvendt, men tillade forbindelser til processer i samme omfang.
    • I KVM-hypervisoren er der tilføjet et flag til CPUID'et for gæstesystemer, der indikerer understøttelse af AVX10.1-udvidelser.
  • Netværks undersystem
    • Device Memory TCP-mekanismen er blevet tilføjet, hvilket gør det muligt at bruge netværksstik til direkte at sende indholdet af hukommelsen på perifere enheder over netværket (nulkopitilstand) og direkte placere indholdet af netværkspakker i enhedens hukommelsesområde på modtagersiden. Data transmitteret i pakker overføres fra netværkskortet til hukommelsen på en perifer enhed eller fra enhedshukommelsen til netværkskortet direkte, uden om CPU'en, og pakkehovederne ender i almindelige kernebuffere.
    • Mulighederne for mange Ethernet- og trådløse drivere er blevet udvidet. For eksempel tilføjede Intel iwlwifi-driveren understøttelse af flytning af RLC/SMPS-operationer til firmwaresiden, RealTek rtw89-driveren øgede ydeevnen og tilføjede understøttelse af RTL8852BT/8852BE-VT (WiFi 6)-chips, mikrochip-Ethernet-driveren tilføjede understøttelse af IEEE 802.3 bw (100BASE) specifikationer -T1) og IEEE 802.3bp, Microsoft vNIC og IBM veth virtuelle Ethernet implementeringer er blevet forbedret. Tilføjet nye drivere til Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 og Microchip LAN8650/1 10BASE-T1S MAC-PHY Ethernet-chips.
    • I MPTCP (MultiPath TCP), en udvidelse af TCP-protokollen til at organisere leveringen af ​​TCP-pakker samtidigt langs flere ruter gennem forskellige netværksgrænseflader, øges størrelsen af ​​de vægte, der bruges i routing, fra 8 til 16 bit. Implementeret detektering af tabt (sorthuls) trafik og suspension i nogen tid af forsøg på at etablere forbindelser med systemer, der fører til tab af trafik.
    • For IPv6 implementeres understøttelse af "p"-flaget i PIO (præfiksinformationsmulighed), der bruges i RA-annoncer (IPv6-routerannoncer) til at vælge en klientimplementeringsmodel via DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) i stedet for at tildele individuelle adresser baseret på præfikser ved hjælp af SLAAC (Stateless Address Autoconfiguration). IPv6 IOAM6 tilføjer understøttelse af en ny tunsrc-indkapslingstilstand, der giver mulighed for bedre ydeevne.
    • Forbedret ydeevne til behandling af IPsec-kontrolpakker.
    • Forbedret ydeevne af skylning af store nftables regelsæt. nfnetlink_queue har forbedret understøttelse af SCTP-protokollen.
    • Ethtool API har tilføjet understøttelse til at binde flere netværkskort til en netværksgrænseflade.
  • Оборудование
    • I AMDGPU-driveren fortsætter arbejdet med at implementere understøttelse af AMD RDNA4 ("GFX12") GPU'er. Tilføjet muligheden for at nulstille individuelle opgavekøer uden at nulstille hele GPU'en.
    • Arbejdet fortsatte med Xe drm-driveren (Direct Rendering Manager) til GPU'er baseret på Intel Xe-arkitekturen, som bruges i Intel Arc-familiens grafikkort og integreret grafik, startende med Tiger Lake-processorer. Den nye version inkluderer understøttelse af GPU'er baseret på Battlemage og Lunar Lake mikroarkitekturer. Understøttelse af CCS (Color Control Surface) Xe2-modifikatorer er blevet introduceret for at styre parametrene for integrerede og diskrete GPU'er.
    • i915-driveren implementerer muligheden for at udsende information om blæserhastigheden via HWMON- eller sysfs-grænsefladen ("fan1_input"-attributten). Parameteren "i915.modeset" er blevet forældet. Parameteren "i915.nomodeset" skal bruges i stedet for "i0.modeset=915".
    • Tilføjet understøttelse af A615, A306 og A621 GPU'er til msm DRM driveren (Qualcomm Adreno GPU).
    • Nouveau-køreren har fået omarbejdet og renset sine indre strukturer.
    • Intel_pstate-driveren, som styrer strømforbrugsparametre (P-state) på systemer med Intel-processorer, har tilføjet understøttelse af hybridsystemer med asymmetriske (forskellige karakteristika) CPU'er, samt understøttelse af strømstyring af processorer baseret på Granite Rapids og Sierra Forest mikroarkitekturer. Tilføjet understøttelse af Xeon Granite Rapids CPU til intel_idle-driveren. Intel_rapl-driveren giver genkendelse af AMD 1Ah-familieprocesser og Intel ArrowLake-U-processorer.
    • Fortsat medtagelse af ændringer for at understøtte ARM SoC Snapdragon X Elite, som bruger Qualcomms egen 12-core Oryon CPU og Qualcomm Adreno GPU. Chippen er rettet mod brug i bærbare computere og pc'er, og er foran Apple M3 og Intel Core Ultra 155H chipsene i mange ydeevnetest.
    • Tilføjet understøttelse af ARM-kort, SoC'er og enheder: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010 Laptop RG 7/A35 , Firefly Core-PX30-JD4, Lunzn Fastrhino R68S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS433, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2S Plus, ExynosAuto v920, SOPHGO SG2002 QualcomQ, G5332 ), Cool Pi CM4 GenBook, Anbernic RG815XXSP, GameForce Ace, IBM P5, Kontron i.MX35 OSM-S, NanoPC-T11
    • Tilføjet understøttelse af skærmpaneler Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, B116A, B02.3XNOU B116XNOU B06.1 116XAT04.1, BOE TV101WUM -LL2, BOE NV140WUM-N41, BOE NV133WUM-N63, BOE NV116WHM-A4D, BOE NE140WUM-N6G, CMN N116BCA-EA2, CMN N116BCP-EA2, CSW MNB601LS1-4, Starry er88577.
    • Lydundersystemet har tilføjet understøttelse af chips og codecs RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. Gamle lyddrivere til Intel ASoC er blevet erklæret for forældede, og det anbefales at bruge AVS-drivere i stedet. Der er foretaget mange forbedringer til SoundWire-driveren.

Kilde: opennet.ru

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster