Linux-kjerneutgivelse 6.0

Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux 6.0-kjernen. Den betydelige endringen i versjonsnummer er av estetiske årsaker og er et formelt skritt for å lindre ubehaget ved å samle et stort antall problemer i serien (Linus spøkte med at grunnen til å endre filialnummeret var mer sannsynlig at han gikk tom for fingrene og tær for å telle versjonsnummer). Blant de mest bemerkelsesverdige endringene: støtte for asynkron bufret skriving i XFS, ublk-blokkdriveren, optimalisering av oppgaveplanleggeren, en mekanisme for å verifisere korrekt drift av kjernen, støtte for ARIA-blokkchifferet.

Nøkkelinnovasjoner i kjerne 6.0:

  • Diskundersystem, I/O og filsystemer
    • XFS-filsystemet har lagt til støtte for asynkron bufret skriving ved å bruke io_uring-mekanismen. Ytelsestester utført ved hjelp av fio-verktøy (1 tråd, 4kB blokkstørrelse, 600 sekunder, sekvensiell skriving) viser en økning i input/output-operasjoner per sekund (IOPS) fra 77k til 209k, dataoverføringshastighet fra 314MB/s til 854MB/s, og et fall i latens fra 9600 ns til 120 ns (80 ganger).
    • Btrfs-filsystemet implementerer en andre versjon av protokollen for "send"-kommandoen, som implementerer støtte for ytterligere metadata, sending av data i større blokker (mer enn 64K) og overføring av omfang i komprimert form. Ytelsen til direkte leseoperasjoner har blitt betydelig økt (opptil 3 ganger) på grunn av samtidig lesing av opptil 256 sektorer. Redusert låsestrid og fremskyndet metadatasjekking ved å redusere reserverte metadata for utsatte elementer.
    • Nye ioctl-operasjoner EXT4_IOC_GETFSUUID og EXT4_IC_SETFSUUID er lagt til ext4-filsystemet for å hente eller angi UUID som er lagret i superblokken.
    • F2FS-filsystemet tilbyr en modus for lavt minneforbruk, som optimerer driften på enheter med en liten mengde RAM og lar deg redusere minneforbruket på bekostning av redusert ytelse.
    • Lagt til støtte for NVMe-stasjonsautentisering.
    • NFSv4-serveren implementerer en grense på antall aktive klienter, som er satt til 1024 gyldige klienter for hver gigabyte RAM i systemet.
    • CIFS-klientimplementeringen har forbedret ytelse i flerkanals overføringsmodus.
    • Et nytt flagg FAN_MARK_IGNORE er lagt til undersystemet for hendelsessporing i fanotify FS for å ignorere spesifikke hendelser.
    • I Overlayfs FS, når den er montert på toppen av en FS med bruker-ID-tilordning, er det gitt korrekt støtte for POSIX-kompatible tilgangskontrolllister.
    • Lagt til ublk-blokkdriveren, som flytter spesifikk logikk til siden av bakgrunnsprosessen i brukerområdet og bruker io_uring-delsystemet.
  • Minne- og systemtjenester
    • Nye funksjoner er lagt til DAMON (Data Access MONitor) delsystemet, som ikke bare lar deg overvåke prosesstilgang til RAM fra brukerplass, men også for å påvirke minnehåndtering. Spesielt har en ny modul "LRU_SORT" blitt foreslått, som gir omgruppering av LRU-lister (Least Recently Used) for å øke prioriteten til visse minnesider.
    • Muligheten til å lage nye minneregioner har blitt implementert ved å bruke egenskapene til CXL (Compute Express Link)-bussen, som brukes til å organisere høyhastighetsinteraksjon mellom CPU og minneenheter. CXL lar deg koble til nye minneområder levert av eksterne minneenheter og bruke dem som ekstra fysiske adresseromsressurser for å utvide systemets DDR (Random Access Memory) eller permanent minne (PMEM).
    • Løste ytelsesproblemer med AMD Zen-prosessorer forårsaket av kode lagt til for 20 år siden for å omgå et maskinvareproblem i enkelte brikkesett (en ekstra WAIT-instruksjon ble lagt til for å bremse prosessoren slik at brikkesettet hadde tid til å gå inn i inaktiv tilstand). Endringen resulterte i redusert ytelse under arbeidsbelastninger som ofte veksler mellom inaktiv og opptatt tilstand. For eksempel, etter å ha deaktivert løsningen, økte de gjennomsnittlige tbench-testresultatene fra 32191 MB/s til 33805 MB/s.
    • Kode med heuristikk er fjernet fra oppgaveplanleggeren, noe som sikrer migrering av prosesser til de minst belastede CPUene, tatt i betraktning den anslåtte gevinsten i energiforbruk. Utviklerne konkluderte med at heuristikken ikke var nyttig nok, og at det var lettere å fjerne den og migrere prosesser uten ytterligere evaluering når en slik migrering potensielt kunne resultere i lavere strømforbruk (for eksempel når mål-CPU er i et lavere strømnivå). Deaktivering av heuristikk førte til en reduksjon i strømforbruket ved utførelse av intensive oppgaver, for eksempel i videodekodingstesten gikk strømforbruket ned med 5.6 %.
    • Fordelingen av oppgaver på tvers av CPU-kjerner på store systemer har blitt optimalisert, noe som har forbedret ytelsen for visse typer arbeidsbelastning.
    • Det asynkrone I/O-grensesnittet io_uring tilbyr et nytt flagg, IORING_RECV_MULTISHOT, som lar deg bruke multi-shot-modus med recv()-systemkallet for å utføre flere leseoperasjoner fra samme nettverkskontakt samtidig. io_uring støtter også nettverksoverføring uten mellomliggende buffering (nullkopi).
    • Implementerte muligheten til å sette BPF-programmer knyttet til uprobe i en søvntilstand. BPF legger også til en ny iterator ksym for arbeid med kjernesymboltabeller.
    • Det foreldede "efivars"-grensesnittet i sysfs, beregnet for tilgang til UEFI-oppstartsvariabler, er fjernet (efivarfs virtuelle FS brukes nå universelt for å få tilgang til EFI-data).
    • Perf-verktøyet har nye rapporter for å analysere låsekonflikter og tiden prosessoren bruker på å utføre kjernekomponenter.
    • CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3-innstillingen er fjernet, noe som gjorde at kjernen kunne bygges i "-O3"-optimaliseringsmodus. Det bemerkes at eksperimenter med optimaliseringsmoduser kan utføres ved å sende flagg under montering ("make KCFLAGS=-O3"), og å legge til en innstilling til Kconfig krever repeterbar ytelsesprofilering, som viser at sløyfeutrulling brukt i "-O3"-modus gir en fordel i forhold til "-O2" optimaliseringsnivået.
    • Et debugfs-grensesnitt er lagt til for å få informasjon om driften av individuelle "minnekrympere" (behandlere som kalles når det ikke er nok minne og pakker kjernedatastrukturer for å redusere minneforbruket deres).
    • For OpenRISC- og LoongArch-arkitekturene er støtte for PCI-bussen implementert.
    • For RISC-V-arkitekturen er "Zicbom"-utvidelsen implementert for å administrere enheter med DMA som ikke er cache-koherent.
  • Virtualisering og sikkerhet
    • En RV-verifiseringsmekanisme (Runtime Verification) er lagt til for å bekrefte korrekt drift på svært pålitelige systemer som garanterer ingen feil. Verifikasjon utføres ved kjøring ved å knytte behandlere til sporingspunkter som kontrollerer den faktiske fremdriften av utførelse mot en forhåndsbestemt referanse deterministisk modell av maskinen som definerer den forventede oppførselen til systemet. Verifikasjon med modellen ved kjøretid er posisjonert som en mer lett og enkel å implementere metode for å bekrefte riktigheten av utførelse på kritiske systemer, som komplementerer klassiske pålitelighetsverifiseringsmetoder. Blant fordelene med RV er muligheten til å gi streng verifisering uten en separat implementering av hele systemet i et modelleringsspråk, samt fleksibel respons på uforutsette hendelser.
    • Integrerte kjernekomponenter for å administrere enklaver basert på Intel SGX2 (Software Guard eXtensions) teknologi, som lar applikasjoner kjøre kode i isolerte krypterte områder av minnet, som resten av systemet har begrenset tilgang til. Intel SGX2-teknologi støttes i Intel Ice Lake- og Gemini Lake-brikker, og skiller seg fra Intel SGX1 i tilleggsinstruksjoner for dynamisk minnebehandling av enklaver.
    • For x86-arkitekturen har muligheten til å overføre frøet for pseudorandom-nummergeneratoren gjennom bootloader-innstillingene blitt implementert.
    • SafeSetID LSM-modulen har nå muligheten til å administrere endringer som er gjort gjennom setgroups()-kallet. SafeSetID lar systemtjenester administrere brukere på en sikker måte uten å eskalere privilegier (CAP_SETUID) og uten å få root-privilegier.
    • Lagt til støtte for ARIA-blokkchiffer.
    • Den BPF-baserte sikkerhetsstyringsmodulen gir muligheten til å knytte behandlere til individuelle prosesser og prosessgrupper (cgroups).
    • En mekanisme med en vakthund-implementering er lagt til for å oppdage heng av gjestesystemer basert på overvåking av vCPU-aktivitet.
  • Nettverksundersystem
    • Håndtere for å generere og sjekke SYN-informasjonskapsler er lagt til BPF-delsystemet. Det er også lagt til et sett med funksjoner (kfunc) for å få tilgang til og endre tilstanden til tilkoblinger.
    • Den trådløse stabelen har lagt til støtte for MLO (Multi-Link Operation)-mekanismen, definert i WiFi 7-spesifikasjonen og lar enheter samtidig motta og sende data ved å bruke forskjellige frekvensbånd og kanaler, for eksempel samtidig etablere flere kommunikasjonskanaler mellom en tilgangspunkt til en klientenhet.
    • Ytelsen til TLS-protokollen innebygd i kjernen har blitt forbedret.
    • Lagt til et kjernekommandolinjealternativ "vertsnavn=" for å la vertsnavnet settes tidlig i oppstartsprosessen, før brukerplasskomponenter startes.
  • Оборудование
    • i915 (Intel)-driveren gir støtte for Intel Arc (DG2/Alchemist) A750 og A770 diskrete skjermkort. En første implementering av støtte for Intel Ponte Vecchio (Xe-HPC) og Meteor Lake GPUer har blitt foreslått. Arbeidet fortsetter med å støtte Intel Raptor Lake-plattformen.
    • Amdgpu-driveren fortsetter å gi støtte for plattformene AMD RDNA3 (RX 7000) og CDNA (Instinct).
    • Nouveau-driveren har omarbeidet støttekoden for NVIDIA nv50 GPU-skjermmotorer.
    • Lagt til ny logicvc DRM-driver for LogiCVC-skjermer.
    • V3d-driveren (for Broadcom Video Core GPU) støtter Raspberry Pi 4-kort.
    • Lagt til støtte for Qualcomm Adreno 619 GPU til msm-driveren.
    • Lagt til støtte for ARM Mali Valhall GPU til Panfrost-driveren.
    • Lagt til innledende støtte for Qualcomm Snapdragon 8cx Gen3-prosessorer som brukes i bærbare Lenovo ThinkPad X13s.
    • Lagt til lyddrivere for plattformene AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake og Mediatek MT8186.
    • Lagt til støtte for Intel Habana Gaudi 2 maskinlæringsakseleratorer.
    • Lagt til støtte for ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Samtidig dannet Latin American Free Software Foundation en versjon av den helt gratis kjernen 6.0 - Linux-libre 6.0-gnu, renset for elementer av fastvare og drivere som inneholder ikke-frie komponenter eller deler av kode, hvis omfang er begrenset av produsenten. Den nye utgivelsen deaktiverer bruken av blobs i CS35L41 HD-lyddriveren og UCSI-driveren for STM32G0 mikrokontrollere. DTS-filer for Qualcomm- og MediaTek-brikker er renset. Deaktiveringen av blobs i MediaTek MT76-driveren har blitt omarbeidet. Oppdatert blob-rensekode i AMDGPU, Adreno, Tegra VIC, Netronome NFP og Habanalabs Gaudi2-drivere og undersystemer. Sluttet å rense VXGE-driveren, som ble fjernet fra kjernen.

Kilde: opennet.ru

Legg til en kommentar