Linux-kjerneutgivelse 6.3

Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 6.3. Noen av de mest bemerkelsesverdige endringene inkluderer: opprydding av eldre ARM-plattformer og grafikkdrivere, fortsatt integrering av Rust-språkstøtte, hwnoise-verktøy, støtte for rød-svarte trestrukturer i BPF, BIG TCP-modus for IPv4, innebygd Dhrystone-benchmark, evne for å deaktivere kjøring i memfd, støtte for å lage HID-drivere ved hjelp av BPF, er det gjort endringer i Btrfs for å redusere fragmentering av blokkgrupper.

Den nye versjonen inkluderer 15637 2055 rettelser fra 76 14296 utviklere; oppdateringsstørrelse - 1023183 MB (endringer berørte 883103 filer, 16843 linjer med kode ble lagt til, 2178 linjer ble slettet). Til sammenligning tilbød den forrige versjonen 62 39 rettelser fra 6.3 15 utviklere; oppdateringsstørrelsen er 10 MB. Omtrent 5 % av alle endringer introdusert i 3-kjernen er relatert til enhetsdrivere, omtrent XNUMX % av endringene er relatert til oppdateringskode spesifikk for maskinvarearkitekturer, XNUMX % er relatert til nettverksstakken, XNUMX % er relatert til filsystemer, og XNUMX % er relatert til interne kjerneundersystemer.

Nøkkelinnovasjoner i kjerne 6.3:

  • Minne- og systemtjenester
    • En betydelig opprydding av kode knyttet til gamle og ubrukte ARM-kort ble utført, noe som gjorde det mulig å redusere størrelsen på kjernekildekoden med 150 tusen linjer. Mer enn 40 gamle ARM-plattformer er fjernet.
    • Muligheten til å lage drivere for inngangsenheter med et HID-grensesnitt (Human Interface Device), implementert i form av BPF-programmer, er implementert.
    • Overføringen fra Rust-for-Linux-grenen av tilleggsfunksjonalitet knyttet til bruken av Rust-språket som andrespråk for utvikling av drivere og kjernemoduler har fortsatt. Rust-støtte er ikke aktivert som standard, og resulterer ikke i at Rust inkluderes som en nødvendig kjernebyggingsavhengighet. Funksjonaliteten som tilbys i tidligere utgivelser er utvidet til å støtte typene Arc (implementering av pekere med referansetelling), ScopeGuard (opprydding når man går utenfor scope), og ForeignOwnable (gir bevegelse av pekere mellom C og Rust-kode). 'Låne'-modulen (type 'Ku' og egenskap 'ToOwned') er fjernet fra 'alloc'-pakken. Det bemerkes at tilstanden til Rust-støtte i kjernen allerede er nær ved å begynne å akseptere de første modulene skrevet i Rust inn i kjernen.
    • Brukermodus Linux (kjører kjernen som en brukerprosess) på x86-64-systemer implementerer støtte for kode skrevet på Rust-språket. Lagt til støtte for å bygge brukermodus Linux ved å bruke clang med link-time optimizations (LTO) aktivert.
    • Lagt til hwnoise-verktøy for å spore forsinkelser forårsaket av maskinvare. Avvik i utførelsestiden for operasjoner (jitter) bestemmes når avbruddsbehandling er deaktivert, og overskrider ett mikrosekund per 10 minutter med beregninger.
    • Lagt til en kjernemodul som implementerer Dhrystone-benchmark, som kan brukes til å evaluere CPU-ytelse i konfigurasjoner uten brukerplasskomponenter (for eksempel på porteringsstadiet for nye SoC-er som bare implementerer kjernelasting).
    • Lagt til kjernekommandolinjeparameter "cgroup.memory=nobpf", som deaktiverer minneforbruksregnskap for BPF-programmer, noe som kan være nyttig for systemer med isolerte beholdere.
    • For BPF-programmer foreslås en implementering av den rød-svarte tredatastrukturen, som bruker kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) i stedet for å legge til en ny kartleggingstype.
    • Mekanismen for restartbare sekvenser (rseq, restartbare sekvenser) har lagt til muligheten til å overføre parallelle utførelsesidentifikatorer (minne-kart samtidighets-ID) til prosesser, identifisert med CPU-nummeret. Rseq gir et middel for raskt å utføre operasjoner atomisk, som hvis de blir avbrutt av en annen tråd blir ryddet opp og forsøkt på nytt.
    • ARM-prosessorer støtter SME 2 (Scalable Matrix Extension)-instruksjoner.
    • For s390x- og RISC-V RV64-arkitekturene er det implementert støtte for "BPF trampoline"-mekanismen, som gjør det mulig å minimere overhead ved overføring av samtaler mellom kjerne- og BPF-programmene.
    • På systemer med prosessorer basert på RISC-V-arkitekturen, er bruken av "ZBB"-instruksjoner implementert for å øke hastigheten på strengoperasjoner.
    • For systemer basert på LoongArch-instruksjonssettarkitekturen (brukt i Loongson 3 5000-prosessorene og implementerer den nye RISC ISA, lik MIPS og RISC-V), støtte for randomisering av kjerneadresserom (KASLR), endringer i plassering av kjerneminne (flytting). ), er maskinvarepunkter implementert stopp- og kprobe-mekanisme.
    • DAMOS-mekanismen (Data Access Monitoring-based Operation Schemes), som lar deg frigjøre minne basert på frekvensen av minnetilgang, støtter filtre for å ekskludere visse minneområder fra behandling i DAMOS.
    • Nolibc minimal standard C-biblioteket gir støtte for s390-arkitekturen og Arm Thumb1-instruksjonssettet (i tillegg til støtte for ARM, AArch64, i386, x86_64, RISC-V og MIPS).
    • Objtool har blitt optimalisert for å øke hastigheten på kjernemontering og redusere maksimalt minneforbruk under montering (når du bygger kjernen i "allyesconfig"-modus, er det nå ingen problemer med tvungen avslutning av prosesser på systemer med 32 GB RAM).
    • Støtte for kjernemontering av Intel ICC-kompilatoren har blitt avviklet, som har vært ute av drift i lang tid og ingen har uttrykt ønske om å fikse det.
  • Diskundersystem, I/O og filsystemer
    • tmpfs implementerer støtte for kartlegging av bruker-IDer for monterte filsystemer, brukt til å matche filene til en spesifikk bruker på en montert utenlandsk partisjon med en annen bruker på det gjeldende systemet.
    • I Btrfs, for å redusere fragmentering av grupper av blokker, deles omfang etter størrelse ved tildeling av blokker, dvs. enhver gruppe blokker er nå begrenset til små (opptil 128KB), medium (opptil 8 MB) og store utstrekninger. raid56-implementeringen har blitt refaktorert. Koden for kontroll av sjekksummer er omarbeidet. Ytelsesoptimaliseringer er gjort for å øke hastigheten på sendeoperasjonen med opptil 10 ganger ved å bufre utime for kataloger og utføre kommandoer bare når det er nødvendig. Fiemap-operasjoner er nå tre ganger raskere ved å hoppe over tilbakekoblingssjekker for delte data (øyeblikksbilder). Operasjoner med metadata har blitt akselerert med 10 % ved å optimalisere søket etter nøkler i b-trestrukturer.
    • Ytelsen til ext4-filsystemet har blitt forbedret ved å la flere prosesser utføre direkte I/O-operasjoner på forhåndstildelte blokker ved å bruke delte inodelåser i stedet for eksklusive låser.
    • I f2fs er det arbeidet med å forbedre kodelesbarheten. Løste viktige problemer knyttet til atomskriving og den nye omfangscachen.
    • EROFS-filsystemet (Enhanced Read-Only File System), designet for bruk i skrivebeskyttede partisjoner, implementerer muligheten til å binde dekompresjonsoperasjoner av komprimert filinnhold til CPU-en for å redusere ventetiden ved tilgang til data.
    • BFQ I/O-planleggeren har lagt til støtte for avanserte spinnende diskstasjoner, for eksempel de som bruker flere separat kontrollerte hodestasjoner (multiaktuatorer).
    • Støtte for datakryptering ved hjelp av AES-SHA2-algoritmen er lagt til NFS-klienten og serverimplementeringen.
    • Støtte for spørringsutvidelsesmekanismen er lagt til FUSE (Filesystems In User Space)-delsystemet, slik at tilleggsinformasjon kan plasseres i spørringen. Basert på denne funksjonen er det mulig å legge til gruppeidentifikatorer til FS-forespørselen, som er nødvendige for å ta hensyn til tilgangsrettigheter når du oppretter objekter i FS (create, mkdir, symlink, mknod).
  • Virtualisering og sikkerhet
    • KVM-hypervisoren for x86-systemer har lagt til støtte for Hyper-V-utvidede hyperanrop og gitt videresending av dem til en behandler som kjører i vertsmiljøet i brukerrommet. Endringen gjorde det mulig å implementere støtte for nestet lansering av Hyper-V hypervisor.
    • KVM gjør det enklere å begrense gjestetilgang til PMU-hendelser (Performance Monitor Unit) relatert til ytelsesmåling.
    • Memfd-mekanismen, som lar deg identifisere et minneområde gjennom en filbeskrivelse overført mellom prosesser, har lagt til muligheten til å lage områder der kjøring av kode er forbudt (ikke-kjørbar memfd) og det er umulig å sette utførelsesrettigheter i fremtiden .
    • En ny prctl-operasjon PR_SET_MDWE er lagt til som blokkerer forsøk på å aktivere minnetilgangsrettigheter som samtidig tillater skriving og kjøring.
    • Beskyttelse mot Spectre-klasseangrep er lagt til og aktivert som standard, basert på den automatiske IBRS-modusen (Enhanced Indirect Branch Restricted Speculation) foreslått i AMD Zen 4-prosessorer, som tillater adaptivt å tillate og deaktivere spekulativ utførelse av instruksjoner under avbruddsbehandling, systemanrop og kontekstbrytere. Den foreslåtte beskyttelsen gir lavere overhead sammenlignet med Retpoline-beskyttelsen.
    • Rettet en sårbarhet som tillater å omgå beskyttelse mot Spectre v2-angrep ved bruk av samtidig multi-threading-teknologi (SMT eller Hyper-Threading) og forårsaket av deaktivering av STIBP-mekanismen (Single Thread Indirect Branch Predictors) når du velger IBRS-beskyttelsesmodus.
    • For systemer basert på ARM64-arkitekturen har et nytt monteringsmål "virtconfig" blitt lagt til, når det er valgt, aktiveres bare minimumssettet med kjernekomponenter som kreves for å starte opp i virtualiseringssystemer.
    • For m68k-arkitekturen er støtte for filtrering av systemanrop ved hjelp av seccomp-mekanismen lagt til.
    • Lagt til støtte for CRB TPM2 (Command Response Buffer)-enheter innebygd i AMD Ryzen-prosessorer, basert på Microsoft Pluton-teknologi.
  • Nettverksundersystem
    • Et nettlink-grensesnitt er lagt til for å konfigurere PLCA-underlaget (Physical Layer Collision Avoidance), definert i IEEE 802.3cg-2019-spesifikasjonen og brukt i 802.3cg (10Base-T1S) Ethernet-nettverk optimalisert for tilkobling av tingenes internett-enheter og industrielle systemer. Bruken av PLCA forbedrer ytelsen i Ethernet-nettverk med delte medier.
    • Støtte for "trådløse utvidelser" API for å administrere trådløse WiFi 7 (802.11be) grensesnitt har blitt avviklet siden denne APIen ikke dekker alle nødvendige innstillinger. Når du prøver å bruke "trådløse utvidelser" API, som fortsatt støttes som et emulert lag, vil det nå vises en advarsel for de fleste nåværende enheter.
    • Det er utarbeidet detaljert dokumentasjon om netlink API (for kjerneutviklere og for utviklere av applikasjoner for brukerrom). Ynl-gen-c-verktøyet er implementert for å generere C-kode basert på YAML-spesifikasjonene til Netlink-protokollen.
    • Støtte for alternativet IP_LOCAL_PORT_RANGE er lagt til nettverkskontakter for å forenkle konfigurasjonen av utgående tilkoblinger gjennom adresseoversettere uten å bruke SNAT. Når du bruker én IP-adresse på flere verter, gjør IP_LOCAL_PORT_RANGE det mulig å bruke et annet utvalg av utgående nettverksporter på hver vert, og videresende pakker basert på portnumre på gatewayen.
    • For MPTCP (MultiPath TCP) er muligheten til å behandle blandede strømmer ved hjelp av IPv4- og IPv6-protokollene implementert. MPTCP er en utvidelse av TCP-protokollen for å organisere driften av en TCP-forbindelse med levering av pakker samtidig langs flere ruter gjennom forskjellige nettverksgrensesnitt knyttet til forskjellige IP-adresser.
    • For IPv4 er det mulig å bruke BIG TCP-utvidelsen, som lar deg øke den maksimale TCP-pakkestørrelsen til 4 GB for å optimere driften av høyhastighets interne datasenternettverk. En lignende økning i pakkestørrelse med en 16-bits overskriftsfeltstørrelse oppnås gjennom implementering av "jumbo"-pakker, hvor størrelsen i IP-overskriften er satt til 0, og den faktiske størrelsen overføres i en separat 32-biters feltet i en egen vedlagt overskrift.
    • En ny sysctl-parameter default_rps_mask er lagt til, gjennom hvilken du kan angi standard RPS (Receive Packet Steering)-konfigurasjon, som er ansvarlig for å distribuere behandlingen av innkommende trafikk på tvers av CPU-kjerner på avbruddsbehandlernivå.
    • Støtte for købehandlingsdisipliner for å begrense CBQ (klassebasert kø), ATM (ATM virtuelle kretser), dsmark (differensiert tjenestemarkør), tcindex (trafikkkontrollindeks) og RSVP (ressursreservasjonsprotokoll)-trafikk er avviklet. Disse disiplinene har vært forlatt i lang tid, og det var ingen som var villig til å fortsette deres støtte.
  • Оборудование
    • Fjernet alle DRI1-baserte grafikkdrivere: i810 (eldre integrerte Intel 8xx-grafikkort), mga (Matrox GPU), r128 (ATI Rage 128 GPU, inkludert Rage Fury, XPERT 99 og XPERT 128-kort), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) og via (VIA IGP), som ble avviklet i 2016 og ikke har blitt støttet i Mesa siden 2012.
    • Fjernet eldre rammebufferdrivere (fbdev) omap1, s3c2410, tmiofb og w100fb.
    • En DRM-driver er lagt til for VPU (Versatile Processing Unit)-enhetene integrert i Intel Meteor Lake CPU (14. generasjon), designet for å øke hastigheten på operasjoner relatert til datasyn og maskinlæring. Driveren er implementert ved hjelp av "accel"-delsystemet, rettet mot å gi støtte for beregningsakseleratorer, som kan leveres enten i form av individuelle ASIC-er eller som IP-blokker inne i SoC og GPU.
    • i915 (Intel)-driveren utvider støtten for diskrete Intel Arc (DG2/Alchemist) grafikkort, gir foreløpig støtte for Meteor Lake GPUer, og inkluderer støtte for Intel Xe HP 4tile GPUer.
    • Amdgpu-driveren legger til støtte for AdaptiveSync-teknologi og muligheten til å bruke Secure Display-modus med flere skjermer. Oppdatert støtte for DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x og DP 2.1.
    • Msm-driveren (Qualcomm Adreno GPU) har lagt til støtte for plattformene SM8350, SM8450 SM8550, SDM845 og SC8280XP.
    • Nouveau-driveren støtter ikke lenger gamle ioctl-anrop.
    • Eksperimentell støtte for NPU VerSilicon (VeriSilicon Neural Network Processor) er lagt til etnaviv-driveren.
    • Pata_parport-driveren er implementert for IDE-stasjoner koblet til via en parallellport. Den ekstra driveren tillot oss å fjerne den gamle PARIDE-driveren fra kjernen og modernisere ATA-undersystemet. En begrensning ved den nye driveren er manglende evne til å koble til en skriver og en disk samtidig via parallellporten.
    • Lagt til ath12k-driver for trådløse kort på Qualcomm-brikker som støtter Wi-Fi 7. Lagt til støtte for trådløse kort på RealTek RTL8188EU-brikker.
    • Lagt til støtte for 46 kort med prosessorer basert på ARM64-arkitektur, inkludert 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 og også enheter basert på SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 og SDM632, Rockchips RK3128 TV-boks, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328, RK3, RK642 og RK654KAM 68/AM69 XNUMX/ AMXNUMX /AMXNUMX).

Samtidig dannet Latin American Free Software Foundation en versjon av den helt gratis kjernen 6.3 - Linux-libre 6.3-gnu, renset for elementer av fastvare og drivere som inneholder ikke-frie komponenter eller kodeseksjoner, hvis omfang er begrenset av produsenten. I utgivelse 6.3 ble blobs ryddet opp i de nye ath12k-, aw88395- og peb2466-driverne, så vel som i de nye devicetree-filene for qcom-enheter basert på AArch64-arkitekturen. Oppdatert blob-rensekode i drivere og undersystemer amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, samt i drivere for DVB-kort med programvaredekoding og i forhåndskompilerte BPF-filer. Rengjøring av mga, r128, tm6000, cpia2 og r8188eu drivere har blitt stoppet siden de er fjernet fra kjernen. Forbedret i915 driver blob rengjøring.

Kilde: opennet.ru

Legg til en kommentar