Udgivelsen af Linux kernen 7.2

Efter to måneder med udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 7.2. Blandt de mest mærkbare ændringer er: USB4STREAM data streaming-mekanisme, ydeevneoptimeringer for btrfs, xfs og ext4, fortsættelsen af fjernelsen af kode til støtte for CPU i486, mulighed for at oprette indlejrede planlæggere SCHED_EXT, reduceret hukommelsesforbrug i bytte-under-systemet, accelererede anonyme kanaler, støtte for Intel MBEC og AMD GMET udvidelser i KVM, fjernelse af AppleTalk-protokollen, initial støtte for HDMI 2.1 FRL i AMDGPU-driveren.

Hovednyhederne i kernel 7.2 (1, 2, 3):

  • DiskSubsystem, input/output og filsystemer
    • I iomap-mekanismen er den unødvendige memset-funktionskald til afsluttede iterationer i iomap_iter() fjernet, hvilket ved høj I/O-intensitet på hurtige NVMe-lagerenheder har forbedret antallet af I/O-operationer pr. sekund (IOPS) med 5% ved brug af filsystemerne ext4 og xfs.
    • I XFS er stabil støtte til zonerede lagringsenheder blevet erklæret stabil (opdeling i zoner med blokke eller sektorer, hvor kun sekventiel tilføjelse af data er tilladt med en opdatering af hele blokgruppen).
    • I Btrfs er støtte til store hukommelsespages (large folios) nu aktiveret som standard, hvilket reducerer overhead og forbedrer ydeevnen ved intensiv sekventiel I/O. Eksperimentel støtte til enorme pages ('huge folios') op til 2 MB er blevet tilføjet. En ny ioctl GET_CSUMS er blevet tilføjet for at hente kontrolsumoplysninger i brugerrummet, for eksempel til mkfs-værktøjet og optimering af deduplisering. Sekventiel skriveydelse er forbedret med 15% og direkte I/O med 59%.
    • I filsystemet Ext4 er implementeringen af "fast commit"-mekanismen betydeligt redesignet for at undgå opståen af konkurrede og gensidige låsninger. Statistik for inode-snapshots kan eksporteres via /proc/fs/ext4/*/fc_info. Ydeevnen til beregning af hash-værdier for mapper er optimeret (for navne på 255 tegn er hastigheden næsten fordoblet, 64 tegn 27%, 32 tegn - 11%).
    • I F2FS er der tilføjet støtte til fserror fejlretninger, der muliggør brugerrumsmonitorering af filsystemproblemer. Tiden brugt i konteksten af interruptbehandling er reduceret.
    • I Device Mapper (DM) er der tilføjet en ny behandler dm-inlinecrypt til at organisere transparent kryptering og dekryptering af bloklagringsenheder ved hjælp af hardwareenheder med inline-krypteringsfunktion.
    • Dokumentationen tilføjet til kernen vedrørende integration af nye filsystemer er blevet foreslået.
    • I NFS er standardsize for blokke blevet øget til 4 MB på systemer med mindst 16 GB RAM (for manuel ændring af blokstørrelse kan /proc/fs/nfsd/max_block_size bruges). Støtte til delegation af direktoriestyring til klienten er blevet tilføjet, hvilket tillader visse operationer med denne mappe at blive udført uden kontrol af ændringer i tilstanden. serveren.
    • I SMB-serveren er der tilføjet support for filer, der opbevares i komprimeret format, samt komprimering af data under overførsel over netværket.
    • I den nye implementering af NTFS (ntfsplus) er der tilføjet støtte for Windows-symbolske links og sikret korrekt håndtering af mange typer metadata-ødelæggelser.
    • fscache-backenden til caching af data fra FS EROFS (Enhanced Read-Only File System) er blevet fjernet, da den blev erklæret forældet for to år siden.
    • I Ceph-filsystemet er der tilføjet support til manuel tilbakestilling af klient-sessioner.
    • I 9P-filsystemet er der foretaget optimeringer, der har fremskyndet arbejdsgange i scenarier som projektbygning.
    • I systemopkaldet file_getattr() er der tilføjet flags til at indhente oplysninger om registreringsfølsomhed i filsystemet. Flaget FS_XFLAG_CASEFOLD angiver, at navnevalidatoringen udføres uden hensyntagen til registreringsfølsomhed, mens flaget FS_XFLAG_CASENONPRESERVING indikerer, at registreringsfølsomhedsinformation ikke bevares ved oprettelse af nye filnavne. De nævnte flag kan anvendes i NFS-klienter, der ikke tager hensyn til registreringsfølsomhed.
    • I systemopkaldet openat2() er flaget O_EMPTYPATH tilføjet, hvilket tillader overførsel af en tom filsti. I dette tilfælde bestemmes stien til den åbnede fil baseret på den angivne filbeskrivelse.
    • I systemopkaldet openat2() er flaget OPENAT2_REGULAR tilføjet, hvilket tillader åbning af kun almindelige filer (hvis der forsøges at åbne en særlig fil, såsom en socket, kanal eller enhed, returneres fejlen EFTYPE).
  • Hukommelse og systemtjenester
    • USB4STREAM-mekanismen er implementeret til dataoverførsel mellem computere, der er forbundet med kabler gennem USB4-porte. Enheden /dev/tbstreamX er tilføjet, som gør det muligt at læse og skrive data ved hjælp af standardfunktionerne read() og write() ligesom læsning og skrivning til filer. For eksempel kan information sendes på en vært med kommandoen «echo hello > /dev/tbstream0», mens den på en anden kan læse med kommandoen «cat /dev/tbstream0». USB4STREAM-mekanismen kan kombineres med muligheden for at oprette et netværksforbindelse via USB4-kabler (thunderbolt_net) eller bruges separat ved behov for dataoverførsel mellem applikationer, der ikke understøtter netværkssokler.
    • Den anden serie ændringer er aktiveret for at stoppe understøttelsen af i486-processorer. Mere end 13 linjer kode er fjernet, som var relateret til emulering af processen til flydende kommat beregninger for processorer uden FPU. Understøttelsen af i486-processorer uden hardwareoperationer CX8 (sammenlign og udveksle 8 byte) og TSC (CPU-cyklustæller, der anvendes i opgaveplanlæggeren) er fjernet, og koden til emulering er blevet slettet.
    • Understøttelsen af AMD Geode-processorer, der anvendes i OLPC XO-1-computeren, er erklæret forældet (orphaned).
    • Understøttelsen af opdateringen af Intel TDX (Trusted Domain Extensions)-mekanismen, der anvendes til kryptering af gæsternes systemer fra RAM, er tilføjet. TDX implementeres i form af et særligt program-runtime-modul, der under opstart overføres af BIOS fra Flash-hukommelsen til RAM. Der er tilføjet funktioner til kernen til at styre dette modul og opdatere det til en nyere version på et fungerende system uden behov for genstart.
    • En ny GPU resource distribution scheduler (Fair GPU scheduler) er blevet implementeret, som bruges til at bestemme rækkefølgen af opgaver, der sendes til GPU'en af processer, som bruger GPU. I stedet for at anvende det traditionelle FIDO-køsystem til GPU-anmodninger benytter den nye scheduler mekanismer til retfærdig ressourcefordeling, der er inspireret af CFS (Completely Fair Scheduler), som anvender en planlægningsmetode med tidsdeling for at skifte til den næste proces. Den mest mærkbare effekt af den nye scheduler ses ved parallel udførelse af interaktive opgaver, der aktivt arbejder med GPU. I sidste øjeblik før udgivelsen af kerne 7.2 blev aktiveringen af Fair GPU scheduler annulleret, og den gamle FIFO-scheduler blev genindført på grund af behovet for at debugge regressioner, der førte til nedsat ydeevne og 100% belastning på GPU'en ved opstart af enkelte spil i Proton.
    • Ændringer i eBPF subsystemet: Muligheden for at knytte et BPF-program til flere tracepoints er blevet tilføjet. BPF-programmer, der er knyttet til tracepoints, har fået adgang til hukommelsen fra komponenter, der kører i brugerens rum, med korrekt håndtering af page faults. Systemopkaldet bpf() har fået støtte til standard attributter (log_buf, log_size, log_level og log_true_size), som gør det muligt at standardisere transmissionen af metadata i alle BPF-kommandoer, ikke kun BPF_PROG_LOAD, BPF_BTF_LOAD og BPF_MAP_CREATE. Begrænsningen på overførsel af ikke mere end 5 parametre i BPF-funktioner er blevet fjernet. Muligheden for sikker adgang til den delte hukommelse bpf_arena er blevet tilføjet uden frygt for page faults. En ny variant af BPF hash map strukturen, der tillader dynamisk ændring af størrelse, er blevet implementeret.
    • Udgivelsen af " /proc/interrupts " output er blevet optimeret sammen med moderne strukturer til lagring af interrupt tællere og caching er blevet tilføjet.
    • Genereringen af filen " /proc/filesystems ", der bruges i libselinux, er blevet accelereret.
    • Task scheduler har implementeret understøttelse af belastningsbalance mellem CPU-kerner, der tager hensyn til tilstanden af CPU'ens interne cache. Scheduler forsøger nu at gruppere processer, der bruger fælles ressourcer, såsom tråde fra den samme proces, så de kan udnyttes i konteksten af den samme cache-niveau, hvilket øger datatilgangens effektivitet ved at øge sandsynligheden for, at nødvendige data findes i cachen.
    • I mekanismen SCHED_EXT, der muliggør brug af BPF til at oprette CPU-scheduler, er implementeringen af muligheden for at oprette indlejrede schedulers (sub-scheduler) fortsat, hvormed hver cgroup kan bruge sin egen opgavestyrer.
    • Overførslen af ændringer fra Rust-for-Linux-branch'en fortsætter, som vedrører brugen af sproget Rust som et sekundært sprog til udvikling af drivere og kerne-moduler (understøttelse af Rust er ikke aktiveret som standard og gør ikke Rust til en obligatorisk byggeafhængighed for kernen). Muligheden for at bruge Rust i kernen er implementeret for s390-arkitekturen. Pakken "zerocopy" med hurtige primitive til håndtering af hukommelse til kode i "unsafe"-tilstand er inkluderet.
    • Den minimale version af LLVM-værktøjerne, der er nødvendig for at bygge kernen, er hævet til 17.0.1.
    • I den minimalistiske C-bibliotek nolibc, der leveres med Linux-kernens kildekode og giver en wrapper over de grundlæggende systemopkald, er der implementeret understøttelse af OpenRISC- og 32-bit PA-RISC-arkitekturer.
    • I swap-subsystemet er der foretaget optimeringer, der forbedrer ydeevnen og reducerer hukommelsesforbruget i selve subsystemet ved at eliminere overhead ved lagring af statiske metadata og standardisere arbejdet med anonym og delt hukommelse ved brug af volume. Hukommelsesbesparelsen er betydelig, for eksempel, når et 1 TB swap-partition er monteret, observeres hukommelsesbesparelsen på cirka 512 MB.
    • Effektiviteten af mekanismen til udfasning af hukommelse, der fjerner eller flytter hukommelsesområder til swap for at frigøre hukommelse i tilfælde af mangel i systemet, er forbedret. I visse belastninger, såsom test af MongoDB ved hjælp af YCSB (Yahoo! Cloud Serving Benchmark), observeres en præstationsforøgelse på op til 30%.
    • Der build-system er blevet tilføjet en kommando "make sbom" til at generere lister over SBOM (Software Bill Of Materials), der afspejler de komponenter, biblioteker og afhængigheder, der er involveret i den nuværende kernebygning, samt oplysninger om deres licenser, hentet fra SPDX-overskrifter i kodefiler.
    • Implementeringen af anonyme kanaler (pipe) har gennemgået optimering af låsearbejdet (hukommelsestildelingsoperationer er flyttet ud af låseområdet), hvilket har øget gennemstrømningen af anonyme kanaler med 21-48% og reduceret forsinkelsen med 17-33%.
  • Virtualisering og sikkerhed
    • I slab-algoritmen er der tilføjet mulighed for at bruge hukommelsestildelingstokens (Allocation Token), implementeret i Clang 22. Tokens muliggør mærkning af hukommelsestildelingsoperationer med unikke identifikatorer og organisering af separat placering af forskellige objekttyper for at komplicere udnyttelse af sårbarheder forårsaget af bufferoverløb (ved opdeling gør bufferoverløb i én objekttype det ikke så let at udnytte for at skade andre objekttyper).
    • AF_ALG-mekanismen, der udnyttes i Copy Fail-sårbarheden til at ændre data i sidecache, er blevet erklæret forældet og planlagt til fjernelse i en af de kommende udgivelser. AF_ALG muliggør brug af hardwareacceleratorer til kryptografiske beregninger i kernen Crypto API, men anvendes i ret specifikke situationer. I kerne 7.2 er ASYNKONISKE input/output og ældre drivere samt zero-copy-mekanismen i implementeringen af skcipher og aead blevet fjernet. Kun softwareimplementeringer af kryptografiske algoritmer er tilbage, og understøttelsen af hardwarekryptoacceleratorer i kernen Crypto API er blevet fjernet, da AF_ALG betydeligt udvider angribsy overfladen uden at give nogen præstationsgevinster i forhold til kryptografi i brugerrummet. AF_ALG blev brugt i Cryptsetup-værktøjet, men dets understøttelse blev fjernet i den seneste version 2.8.7.
    • I IMA-mekanismen (Integrity Measurement Architecture), der gør det muligt for en ekstern tjeneste at verificere tilstanden af kjernekernes subsystemer for at sikre deres autenticitet, er der tilføjet understøttelse af eksport af interne tabeller med måleresultater til brugerrum med fjernelse fra kernen buffers for at spare hukommelse.
    • I modulet Landlock, der giver ikke-privilegerede programmer mulighed for at begrænse brugen af Linux-kernens objekter (filhierarkier, netværkssokler, ioctl osv.), er der tilføjet understøttelse af adgangskontrol til UDP-sokler samt mulighed for selektivt at deaktivere logning af oplysninger om blokering af objekter for at forhindre, at loggen bliver fyldt med irrelevant information.
    • Kernen er blevet fri for brugen af funktionen strncpy(), der kopierer et angivet antal byte fra den indkommende streng. Anvendelsen af strncpy() kunne skabe fejl ved at springe det nulte symbol over i slutningen af strengen eller ved overfyldning med nuller. I stedet anbefales det at bruge funktionerne strscpy() og strscpy_pad() til at kopiere strenge, der slutter med et nul-symbol, samt strtomem_pad(), memcpy_and_pad() og memcpy() til at kopiere strenge af kendt fast størrelse. Arbejdet med at fjerne kernen fra brugen af strncpy() blev påbegyndt i 2020 og krævede vedtagelse af 362 ændringer fra 70 udviklere.
    • I hypervisoren KVM er der tilføjet understøttelse af Intel MBEC (Mode-Based Execution Control) og AMD GMET (Guest-Mode Execution Trap) udvidelser, som gør det muligt at behandle rettigheder til udførelse af kode for kerne- og brugerrum separat i gæstesystemer i hukommelsestranslationstabellerne. Tidligere gjorde Intel og AMD's hardwarevirtualiseringsudvidelser det muligt at markere hukommelsessider som tilgængelige for udførelse kun med en enkelt bit, med programmatisk opdeling af rettigheder for kerne- og brugerrum på hypervisor-niveau. Anvendelsen af MBEC og GMET muliggør udelukkelse af autorisationskontroller på hypervisor-siden og betydeligt at reducere ressourcekrævende kontroloverførsler fra gæstesystemet til hypervisoren (VMexit).
  • Netværkssubsystem
    • Implementeringen af TCP-AO (TCP Authentication Option, RFC 5925) er blevet overført til brugen af det nye kryptografiske bibliotek libcrypto, hvilket har forenklet koden og forbedret effektiviteten. TCP-AO gør det muligt at verificere TCP-overskrifter via MAC-koder (Message Authentication Code) ved hjælp af mere moderne algoritmer som HMAC-SHA-1-96 og AES-128-CMAC-96 i stedet for den tidligere tilgængelige mulighed TCP-MD5 baseret på den forældede MD5-algoritme.
    • Antallet af understrømme, der understøttes for Multipath TCP (MPTCP) forbindelser, er steget fra 8 til 64.
    • Arbejdet med at reducere brugen af den globale lås rtnl_lock i netværksstakken er fortsat.
    • Implementeringen af AppleTalk-protokolstakken er blevet fjernet fra kernen, da den blev brugt i Apple-computere fra 1985 og i 1990'erne blev erstattet af TCP/IP. Derudover er komponenter fra ATM-teknologien, der ikke er relateret til PPPoATM, samt ARCnet-netværksinterfaces baseret på ISA- og PCMCIA-busser, Bluetooth-adaptere med PCMCIA-interface, Chelsea TLS accelerationer, koden til integration af TLS med sockmap og understøttelse af frekvenserne 5/10 MHz i den trådløse stack cfg80211/mac80211 blevet fjernet. På grund af uløselige låseproblemer og mangel på vedligeholdelse er den specifikke implementering af TLS-aflastning baseret på TCP Offload Engine blevet fjernet (den mere udbredte implementering af TLS-aflastning er bevaret). Koden til kompatibilitet med 32-bit x_tables på 64-bit systemer er blevet deaktiveret og planlagt til at blive fjernet.
    • Driveren til pppoe har fået tilføjet støtte til mekanismerne GRO (Generic Receive Offload) og GSO (Generic Segmentation Offload) for hardwareaccelereret genopbygning og segmentering af pakker. Brug af GRO og GSO øger væsentligt båndbredden for indgående trafik; for eksempel øgedes den maksimale båndbredde til enheder med MediaTek MT7621 i en netværksoversætterkonfiguration fra 130 Mbit/s til 630 Mbit/s.
  • Udstyr
    • I AMDGPU-driveren er der tilføjet indledende støtte til HDMI 2.1 FRL (Fixed Rate Link) teknologien, der muliggør transmission af ukomprimeret video i 4K/120Hz og 8K/60Hz kvalitet. Tidligere var det vanskeligt at implementere HDMI 2.1 i åbne drivere på grund af licenskrav fra HDMI Forum, men nu har AMD formået at nå en aftale om en sådan implementering.
    • I i915-driveren er der tilføjet mulighed for at justere baggrundsfarven via displaykontrolleren. Parameteren pin_params.needs_low_address er blevet implementeret.
    • Der er fortsat arbejde på drm-driveren (Direct Rendering Manager) Xe til GPU'er baseret på Intel Xe-arkitekturen, der bruges i Intel Arc grafikkort og integreret grafik, startet med Tiger Lake-processorer. Indledende support til CRI (Crescent Island) platformen er blevet tilføjet. Der er implementeret en systemcontroller til dGPU-platforme Xe3p.
    • I Nouveau-driveren er problemerne med NVIDIA GA100 GPU'en blevet løst.
    • I v3d-driveren er muligheden for at styre strømforbruget af v3D GPU på Raspberry Pi-kort tilføjet.
    • Integration of the Nova driver components for NVIDIA GPUs equipped with GSP firmware has continued, starting from the NVIDIA GeForce RTX 2000 series based on Turing microarchitecture. The driver is written in Rust. Support for NVIDIA GA100 and Hopper and Blackwell series GPUs has been added.
    • Support for ARM platforms, SoCs, and devices has been added: 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.

At the same time, the Latin American Free Software Foundation has created a version of the fully free kernel 7.2 — Linux-libre 7.2-gnu, cleaned of firmware and driver elements containing non-free components or code segments restricted by the manufacturer. In release 7.2, blobs from the new rt722-sdca and tac5xx2 drivers have been cleaned. The cleaning code has been updated in the drivers amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152, and mt792x. The firmware loading interfaces have been adjusted. Blob names in dts files (device tree) for ARM chips have been cleaned.

Kilde: opennet.ru

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