Utgivelse av Linux-kjerne 6.8

Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux-kjerne 6.8. Blant de mest bemerkelsesverdige endringene: Xe-driver for Intel GPU, beskyttelsesmodus for blokk enheter med monterte filsystemer, Deadline server oppgaveplanlegger, automatisk optimalisering av sammenslåing av identiske minnesider, den første driveren skrevet i Rust, systemoppkallene listmount og statmount, fjerning av bpfilter og SLAB, guest_memfd-mekanismen i KVM, samt profilering av datatilgang.

Den nye versjonen har mottatt 15641 rettelser fra 2018 utviklere, patch-størrelsen er 44 MB (endringene omfattet 12212 filer, lagt til 663864 linjer med kode og fjernet 339094 linjer). I forrige utgave var det 18405 rettelser fra 2066 utviklere, patch-størrelsen var 72 MB. Omtrent 42 % av alle endringene i 6.8 er knyttet til enhetsdrivere, omtrent 15 % av endringene gjelder oppdatering av arkitekturspecifik kode, 14 % er relatert til nettverksstakken, 6 % til filsystemene, og 3 % til interne subsystemer i kjernen.

Git-repositoriet for kjerne 6.8 har 9,996 millioner objekter, noe som antyder at neste kjerne 6.9 vil overskride den symboliske grensen på 10 millioner git-objekter. Tidligere var byttene mellom versjonene 3.x og 4.x godt korrelert med antallet git-objekter i repositoriet — kjerne 3.0 ble utgitt da repositoriet inneholdt omtrent 2 millioner objekter, mens kjerne 4.0 ble utgitt med 4 millioner objekter. I 2019 brøt imidlertid utgivelsen av 5.0 denne logiske kjeden, da repositoriet da inkluderte omtrent 6,5 millioner git-objekter.

Hovednyhetene i kjerne 6.8:

  • Disk subsystem, I/O og filsystemer
    • En modus for å blokkere direkte skriving til blokk-enheter med monterte filsystemer er lagt til (når modusen er aktivert, kan root-brukeren ikke gjøre endringer i filsystemet ved å manipulere blokkenheten). Som standard er modusen deaktivert og krever spesifisering av parameteren BLK_DEV_WRITE_MOUNTED ved bygging. For partisjoner med Btrfs fungerer ikke blokkeringen ennå, da nødvendige endringer i Btrfs-koden ikke er akseptert.
    • Systemoppkallene listmount() og statmount() er lagt til, som lar brukeren hente detaljerte opplysninger om monterte filsystemer.
    • I filsystemet XFS er arbejdet med implementeringen af værktøjet fsck til kontrol og reparation af identificerede problemer i online-tilstand uden at afmontere filsystemet fortsat.
    • I Ext4 til blokke, der er mindre end siden i hukommelsen, anvendes kaldet dioread_nolock, som øger ydeevnen ved at undgå unødvendige låse. Nogle funktioner er blevet omdannet til at bruge hukommelssider (page folios).
    • I Btrfs er der tilføjet support for monteringsflaget "nospace_cache" for deaktivering af cache af ledige blokke. Nogle funktioner er blevet omdannet til at bruge hukommelssider (page folios).
    • I EROFS (Extendable Read-Only File System), designet til brug på partitioner, der kun er tilgængelige i skrivebeskyttet tilstand, er der tilføjet støtte til komprimering af sub-sider og forbedret ydeevne i situationer med hukommelsesmangel.
    • I filsystemet F2FS er der forbedret support til zonede lagringsenheder (opdeling i zoner af blokgrupper eller sektorer, hvor der kun må tilføjes data sekventielt med opdatering af hele blokgruppen).
    • For SMB-filsystemet er muligheden for at oprette blok- og symboliske enheds-filer blevet implementeret.
    • I Bcachefs er der tilføjet delvis support til kontrol og genoprettelse af integritet for monterede filsystemer.
    • I device-mapper subsystemet er støtte til MD_LINEAR, MD_MULTIPATH og MD_FAULTY håndteringsmetoder, erklæret forældede i 2021, blevet fjernet.
  • Minne og systemtjenester
    • I Zswap subsystemet er der tilføjet en funktion, der aktiveres ved hukommelsesmangel, som tvinger udlæsning til det virkelige swap-partition af "kolde" hukommelsessider, som ikke har været tilgået og som sandsynligvis ikke vil blive brugt. Zswap cache-udlæser sider, der skal udvises til swap-partitionen, og opbevarer dem i hukommelsen i komprimeret form uden at spilde dem til det virkelige ukomprimerede swap-partition på disken. De ændringer, der er indført under hukommelsesmangel, giver mulighed for at reducere størrelsen af den gemte Zswap-pool i RAM og frigive hukommelse til systemet.
    • I Zswap er der foreslået en ny tilstand, der fuldstændig deaktiverer forsinket skrivning (writeback) til det virkelige swap-partition, hvis skriveforsøget ikke lykkes, og ikke spilder allerede eksisterende zswap-sider i swap-partitionen.
    • Det er lagt til en mekanisme i oppgaveplanleggeren kalt SCHED_DEADLINE-serveren, som løser problemet med at vanlige oppgaver ikke får tildelt CPU-ressurser når CPU-en monopoliseres av høyprioriterte (realtime) oppgaver. For å forhindre monopol på CPU-en ble det tidligere brukt en Realtime-throttling-mekanisme i kjernen, som prøvde å reservere 5% for lavprioriterte oppgaver, og lot 95% av tiden være for realtime-oppgaver. Denne mekanismen har hatt sine mangler, da vanlige oppgaver i mange situasjoner ikke fikk tilstrekkelig prosessortid. SCHED_DEADLINE-serveren implementerer en mer effektiv mekanisme for ressursreservasjon.
    • Det er lagt til en mekanisme for automatisk tilpasning av minneforbruk i DAMON (Data Access MONitor) subsystemet, som lar deg overvåke prosessens tilgang til data i RAM (for eksempel kan du finne ut hvilke minneområder prosessen har vært i kontakt med, og hvilke områder som forble ubenyttet), basert på fastsatte kvoter.
    • Støtte for multi-størrelses store minnesider (mTHP — multi-size Transparent Huge Pages) er lagt til, noe som tillater allokering av minne i blokker som er større enn basis siden, men mindre enn tradisjonelle THP-sider.
    • Støtte for store folier (page folios, sammenkoblede minnesider) for anonymt minne (som ikke er bundet til filsystemet, for eksempel tildelt via malloc) er blitt lagt til. Endringen tar sikte på å forbedre ytelsen ved å tildele store blokker med minne når det blir tilgang til uallokert minne (page faults). For eksempel har bruk av store folier redusert tiden for omkompilering av kjernen med 5% (med en reduksjon av tiden brukt på kjerne-nivå med 40%).
    • Det er lagt til en parameter TRANSPARENT_HUGEPAGE_NEVER i kjernekonfigurasjonsfilen, som gir mulighet for å deaktivere bruken av store minnesider (Transparent Huge Pages).
    • I systemkallet userfaultfd(), som lar deg lage håndtere forespørslene til uallokert minne (page faults) i brukerrommet, er operasjonen UFFDIO_MOVE lagt til, som gjør det mulig å flytte minnesider i det virtuelle adresseområdet under haugkomprimering (heap compaction) uten å utføre allokeringen av minnesider. I testene som ble utført, har bruken av UFFDIO_MOVE redusert tiden for komprimering med 40% sammenlignet med å bruke operasjonen UFFDIO_COPY.
    • En ny mekanisme kalt «KSM advisor» er lagt til, som automatisk optimaliserer parameterne for subsystemet som slår sammen identiske minnesider (KSM – Kernel Samepage Merging).
    • Overføringen av endringene fra Rust-for-Linux-grenen har fortsatt, som omhandler bruken av Rust som et sekundært språk for utvikling av drivere og kjerne-moduler (støtte for Rust er ikke aktivert som standard, og fører ikke til at Rust blir en obligatorisk byggeavhengighet for kjernen). I den nye versjonen er det inkludert endringer som legger til Rust-bindinger over phylib-abstraksjonslaget og bruker denne bindingen for driveren ax88796b_rust, som gir støtte for PHY-grensesnittet til Ethernet-kontrolleren Asix AX88772A (100MBit). Funksjonalitetsmessig er Rust-driveren helt ekvivalent med den gamle driveren ax88796b, skrevet i C, og kan brukes med X-Surf 100-nettverkskort med AX88796B-brikke. For LoongArch-arkitekturen er det mulig å skrive moduler i Rust. Det har vært et overgang til å bruke Rust-versjon 1.74.1.
    • En BPF-tokenmekanisme er lagt til, som lar selektivt delegere behandlingen av enkelte BPF-funksjoner, som opplasting av BPF-programmer eller opprettelse av BPF-kart, til ikke-privilegerte prosesser i brukerrommet, hvis legitimitet er bekreftet med et spesialtoken.
    • Funksjonaliteten til BPF-programverifikatoren er utvidet.
    • Verktøyet perf har fått støtte for dataprofilering, som gjør det mulig å spore lesing og skriving i datastrukturer, for eksempel for å identifisere de mest aktivt modifiserte feltene i strukturene. På systemer med prosessorer som støtter innsamling av minneoperasjonsdata (Intel, AMD, ARM), bør kommandoen «perf mem record» brukes for å samle statistikk, mens for å generere en rapport om tilgangene til datastrukturene, kan «perf annotate —data-type» benyttes.
    • Det er utført ytelsesoptimalisering av prosesseringen av systemkall på s390-arkitekturen (IBM Z), som i tester har resultert i en reduksjon i tiden for inngang til systemkall med cirka 11%.
    • Muligheten til å justere størrelsen på sporingsbufferne som brukes til buffring av sporingsinformasjon sendt til brukerrommet, er blitt tilgjengelig.
    • Den tidligere deklarerede forældede hukommelsesfordelingsmekanisme SLAB er blevet fjernet; i stedet anvendes kun SLUB i kernen nu. Årsagen til dette nævnes som problemer med vedligeholdelse, tilstedeværelsen af fejl i koden og dublering af funktionalitet med den mere avancerede allokator SLUB.
    • Når kernen bygges, er flaget "-Wmissing-prototypes" aktiveret, hvilket genererer advarsler for kald til globale funktioner, der ikke har en prototype-definition.
    • For RISC-V-arkitekturen er der implementeret understøttelse af overgang til hviletilstand med opbevaring af tilstand i RAM på systemer, der understøtter SUSP SBI-udvidelsen. Der er givet mulighed for at bruge systemopkaldet riscv_hwprobe() til at få information om understøttede arkitekturudvidelser til RISC-V-kommandoerne.
  • Virtualisering og sikkerhet
    • Der er tilføjet nye systemopkald lsm_list_modules(), lsm_get_self_attr() og lsm_set_self_attr() til at udskrive listen over indlæste LSM-moduler (Linux Security Modules) og til at få/sette attributter for LSM-modulet. Der er tilføjet en ny struktur lsm_ctx til kommunikation i LSM-konteksten mellem brugerrummet og kernen.
    • AppArmor-subsystemet er blevet ændret til at bruge SHA-256-algoritmen til verifikation af regler i stedet for SHA-1-hashes.
    • Implementeringen af funktionen strlcpy() er blevet fjernet fra kernen, hvilket blev inkluderet i C-biblioteket Glibc 3.38 i sommer. Strlcpy er et alternativ til funktionen strncpy(), der indeholder beskyttelse mod bufferoverflow og altid tilføjer en afsluttende nul-byte.
    • I hypervisoren KVM er der tilføjet støtte til guest_memfd-subsystemet (guest-first memory), som giver hukommelsesstyringsfunktioner, der muliggør funktioner og optimeringer, der ikke kan opnås ved brug af det fælles hukommelsesstyringssystem. For eksempel giver guest_memfd mulighed for at allokere og kortlægge et hukommelsesområde til gæstesystemet, som ikke kan tilgås af værtmiljøet, hvilket kan anvendes til at organisere fortrolige beregninger.
    • For gæstesystemer, der kører under KVM-hypervisoren, er der tilføjet understøttelse af den måde LAM (Linear Address Masking), som tilbydes i Intel-processorer, hvilket gør det muligt at bruge en del af bittene i 64-bit adresser (fra bit 57 til 62) til opbevaring af metadata, der ikke er relateret til adressering.
    • I hypervisor KVM for systems based on ARM64 architecture has added support for 52-bit (LPA2) physical addresses. For x86 architecture systems, the option to build without emulating Hyper-V hypercalls is provided, allowing for a reduction in kernel size.
    • An iaa driver (IAA Compression Accelerator) has been added to accelerate the compression and decompression of data using the DEFLATE method, utilizing the capabilities of Intel Analytics Accelerator (IAA) cryptographic accelerators.
    • On the host environment side, support for the Intel TDX (Trusted Domain Extensions) mechanism has been implemented, enabling the creation of protected guest environments using the KVM hypervisor, where memory encryption is utilized. virtual machines.
    • In SELinux, a SID identifier 'init' has been added to highlight processes started during the boot phase before SELinux policies are applied. The interface /sys/fs/selinux for managing SELinux has been improved.
  • Nettverks subsystem
    • A low-level reorganization of basic network data structures has been carried out to increase caching efficiency. Previously, the fields in the network stack structures socks, netdev, netns, and mibs were arranged as they were added, which limited the use of processor cache. The review of the variable placement in structures led to a noticeable speed increase in TCP performance due to minimizing cache line usage during data transmission and optimizing access to variables. In cases of handling multiple parallel TCP connections, acceleration can reach 40%.
    • The bpfilter subsystem, which used BPF for packet filtering, has been removed. Bpfilter was introduced starting from version 4.18 but was never developed to a level suitable for widespread use. In recent years, the bpfilter code in the kernel has not been developed, and the development continued by Facebook in a separate repository.
  • Utstyr
    • Den nye DRM-driveren (Direct Rendering Manager) Xe for GPU basert på Intel Xe-arkitekturen er inkludert, som brukes i Intel Arc-grafikkort og integrert grafikk fra Tiger Lake-prosessorene. Xe-driveren er designet for å være grunnlaget for å støtte nye brikker, uavhengig av koden som støtter eldre plattformer. Driveren er bygget med en ny arkitektur som utnytter eksisterende komponenter i DRM-subsystemet mer aktivt, samt standardkomponenter fra i915-driveren, som ikke er bundet til spesifikke GPU-er, for eksempel koden for skjerminteraksjon, minnemodellen og execbuf-implementeringen. I Mesa er arbeidet med OpenGL og Vulkan over Xe-driveren implementert på nivået av endringer gjort i de eksisterende Mesa-driverne Iris og ANV.
    • I i915-driveren fortsetter arbeidet med å implementere støtte for Intel LunarLake-brikker (Xe 2). Støtten for Intel Meteor Lake-brikker er forbedret.
    • I Nouveau-driveren er det implementert en innstilling for å bruke funksjoner fra GSP-firmware som standard for å arbeide med NVIDIA GPU-er basert på Turing- og Ampere-mikroarkitekturene, der initierings- og kontrolloperasjoner for GPU utføres av en egen GSP (GPU System Processor) mikrokontroller. Når innstillingen er aktivert, vil driveren operere gjennom firmwarekall i stedet for direkte programmering av maskinvareinteraksjoner.
    • I AMDGPU-driveren er det implementert støtte for ACPI WBRF og VPE DPM, behandlingen av PCIe-båndbredden er endret, det er benyttet 64-bits sekvensnumre i køene for synkronisering, støtte for AMD-spesifikke fargestyringsmekanismer er lagt til, og det er løst et problem med overgang til hvilemodus.
    • En tidlig implementering av driveren for Broadcom VideoCore 7.1 GPU, som brukes på Raspberry Pi 5-kort, er lagt til.
    • Det er lagt til en driver for PowerVR 6 GPU-er basert på Rogue mikroarkitektur fra Imagination Technologies.
    • Støtten for Thunderbolt/USB4-kontrollere integrert i Intel Lunar Lake-baserte brikker er lagt til.
    • Drivere for kameraer brukt i SoC Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave og THine THP7312 er lagt til.
    • Støtte for NSO (Nintendo Switch Online) spillkontrollere er lagt til — varianter av eldre kontrollere fra SNES (Super Nintendo), Genesis og N64 (Nintendo 64), tilpasset for Nintendo Switch. Det er lagt til en driver for Adafruit Seesaw gamepads. I xpad-driveren er support for Lenovo Legion Go-kontrollere lagt til.
    • I DTS-driver er det lagt til støtte for spillenheter Powkiddy RK2023, Powkiddy X55 og Anbernic RG351V.
    • Støtte for lydsystemer brukt i NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 og X1E80100 er lagt til.
    • AMD har gjort endringer relatert til støtte for den kommende prosessorserien basert på den nye mikroarkitekturen Zen 5.
    • Støtte for ARM64 SoC: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 og Unisoc UMS9620 (Tanggula 7) er lagt til.
    • Støtte for ARM-plattformer og enheter: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress basert på Marvell CN913x, Chromebook Lenovo, Asus og Acer basert på Mediatek MT8183, Toradex Verdin AM62, og kort basert på Allwinner H616/H618 er lagt til.
    • Støtten for ARM11 ARMv6K SMP-prosessorer er avsluttet.

Samtidig har det latinamerikanske Frie programvarefondet utviklet en variant av det fullt frie kjernen 6.8 - Linux-libre 6.8-gnu, som er renset for elementer fra fastvare og drivere som inneholder ikke-frie komponenter eller kodebiter med restriksjoner fra produsenten. I versjon 6.8 er koden for rensing av blobber oppdatert i ulike drivere og undersystemer. Rensing av driverne Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY og Realtek rtw8922a er foretatt. På grunn av fjerning fra kjernen er rensingen av driverne atmel, hermes, orinoco_usb, libertas_cs og zd1201 avsluttet. Rensing av blob-navn i dts-filer (devicetree) for ARM- og Aarch64-arkitektur er gjennomført. Problemer med rensing av i915-driveren er løst.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster