Utgivelsen av Linux-kjernen 5.14

Etter to måneders utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 5.14. Blant de mest bemerkelsesverdige endringene er: nye systemanrop quotactl_fd() og memfd_secret(), fjerning av ide- og raw-drivere, en ny I/O-prioriteringskontroller for cgroup, SCHED_CORE oppgaveplanleggingsmodus, og infrastruktur for å lage oppstartslaster for verifiserte BPF-programmer.

Den nye versjonen inkluderer 15883 feilrettinger fra 2002 utviklere, patch-størrelsen er 69 MB (endringene berørte 12580 filer, 861501 nye kodelinjer lagt til, 321654 linjer fjernet). Omtrent 47 % av alle endringene i 5.14 er relatert til enhetsdrivere, omtrent 14 % er knyttet til oppdatering av arkitekturspecifikk kode, 13 % er relatert til nettverksstakken, 3 % til filsystemer, og 3 % til interne kjernesystemer.

Hovudnyhende:

  • Disk subsystem, I/O og filsystemer
    • For cgroup er det implementert en ny I/O-prioriteringskontroller - rq-qos, som kan styre prioriteten til behandlingen av forespørselene til blokkdevicer generert av deltakerne i hver cgroup. Støtte for den nye prioriteringskontrolleren er lagt til I/O-planleggeren mq-deadline.
    • I ext4-filsystemet er det implementert en ny ioctl-kommando EXT4_IOC_CHECKPOINT som tvinger å skrive alle ventende transaksjoner fra loggen og de tilhørende buffere til disk, samt overskrive det loggbrukte området i lagringen. Endringen er forberedt i rammen av initiativet for å forhindre datalekkasjer fra filsystemer.
    • I Btrfs er det gjort ytelsesforbedringer: ved å utelukke unødvendig logging av utvidede attributter under fsync-operasjoner har ytelsen til intensive operasjoner med utvidede attributter økt med opptil 17 %. Dessuten, under truncation-operasjoner som ikke berører extent-er, er full synkronisering deaktivert, noe som reduserte behandlingstiden med 12 %. Det er lagt til en innstilling i sysfs for å begrense I/O-båndbredde ved FS-kontroll. ioctl-anrop for angre størrelsesjustering og fjerning av enheter er også lagt til.
    • I XFS er implementeringen av buffercachen redesignet, som nå allokerer minnesider i batch-modus. Effektiviteten til cachen er dermed forbedret.
    • I F2FS har det blitt lagt til et alternativ for drift i skrivebeskyttet modus, og en mekanisme for hurtigbufring av komprimerte blokker (compress_cache) er implementert for å forbedre ytelsen ved tilfeldig lesing. Det er også lagt til støtte for komprimering av filer som er reflektert i minnet ved hjelp av mmap()-operasjonen. For selektiv deaktivering av filkomprimering ved hjelp av maske er det foreslått et nytt monteringsalternativ nocompress.
    • I exFAT-driveren har det blitt jobbet med å forbedre kompatibiliteten med lagringsenheter fra enkelte digitale kameraer.
    • Det er lagt til et systemanrop quotactl_fd(), som gjør det mulig å administrere kvoter ikke via spesialenhetsfiler, men gjennom spesifikasjon av filbeskriverknappen knyttet til filsystemet som kvoten gjelder for.
    • Gammelt IDE-blokkeringsenhetsdrivere er fjernet fra kjernen, disse er lenge blitt erstattet av libata-underenheten.
    • Driveren "raw", som gir ubufferert tilgang til blokkeringsenheter gjennom grensesnittet /dev/raw, er fjernet fra kjernen. Den nevnte funksjonaliteten har lenge vært implementert i applikasjoner ved bruk av flagget O_DIRECT.
  • Minne og systemtjenester
    • Planleggeren har fått et nytt planleggingsmodus, SCHED_CORE, som gjør det mulig å kontrollere hvilke prosesser som kan utføres sammen på ett CPU-kjerne. Hver prosess kan tildeles en cookie-ID som definerer tillitsområdet mellom prosessene (for eksempel tilhørighet til samme bruker eller container). Ved organisering av kodekjøring kan planleggeren sørge for at en CPU-kjerne deles bare mellom prosesser som tilhører én eier, noe som kan brukes til å blokkere visse angrep av Spectre-klassen ved å hindre kjøring av tillitsfulle og mistenkelige oppgaver i samme SMT (Hyper Threading) tråd.
    • For cgroup er det implementert støtte for kill-operasjonen, som gjør det mulig å avslutte alle prosesser knyttet til gruppen (sende SIGKILL) ved å skrive "1" i den virtuelle filen cgroup.kill.
    • Mulighetene for respons på oppdagelse av split-låser har blitt utvidet. Disse oppstår når det gjøres tilgang til ukomprimerte data i minnet på grunn av at dataene går over to cachelinjer i CPU under utførelsen av en atomisk instruksjon. Slike låser fører til betydelig ytelsestap, og tidligere ble det gitt mulighet for å tvinge applikasjonen som forårsaket låsingen til å avslutte. I den nye utgivelsen er det lagt til en kommando-linjeparameter for kjernen 'split_lock_detect=ratelimit:N', som gjør det mulig å definere en systemomfattende grense for intensiteten av låseoperasjoner per sekund. Når denne grensen overskrides, vil enhver prosess som har forårsaket en split-lås ikke bli avsluttet, men tvert imot bli tvunget til å stoppe i 20 ms.
    • I CFS båndbreddekontrolleren, som bestemmer hvor mye prosessortid hver cgroup kan tildeles, er det nå implementert muligheten for å sette tidsbegrensede grenser. Dette gjør det mulig å regulere belastninger som er følsomme for forsinkelser. For eksempel, hvis verdien cpu.cfs_quota_us settes til 50000 og cpu.cfs_period_us settes til 100000, vil en gruppe prosesser kunne bruke 50 ms CPU-tid hvert 100 ms.
    • Den grunnleggende infrastrukturen for å lage BPF-programmeringsstartere har blitt lagt til, noe som senere vil tillate lastingen av bare BPF-programmer signert med en pålitelig digital nøkkel.
    • En ny futex-operasjon FUTEX_LOCK_PI2 er lagt til, som bruker en monoton timer for å beregne tidsavbrudd som tar hensyn til tiden systemet har vært i hvilemodus.
    • For RISC-V-arkitekturen er det implementert støtte for store minnesider (Transparent Huge-Pages) og muligheten til å bruke KFENCE-mekanismen for å oppdage feil ved minnehåndtering.
    • I systemanropet madvise() har det blitt lagt til flagg MADV_POPULATE_READ og MADV_POPULATE_WRITE for å generere «page fault» på alle minnesider som reflekteres for lese- eller skriveoperasjoner, uten at faktisk lesing eller skriving utføres (prefault). Bruken av flaggene kan være nyttig for å redusere forsinkelser i programarbeidet, takket være forhåndsutførelsen av «page fault»-behandleren samlet for alle ikke-allokerte sider, uten å vente på faktisk tilgang til dem.
    • I unit-testsystemet kunit er det lagt til støtte for å kjøre tester i QEMU-miljøet.
    • Nye sporingsverktøy er lagt til: «osnoise» for å spore forsinkelser i applikasjoner forårsaket av behandling av avbrudd, og «timerlat» for å gi detaljert informasjon om forsinkelser ved oppvåkning av timer-signal.
  • Virtualisering og sikkerhet
    • Systemanropet memfd_secret() er lagt til, som gjør det mulig å opprette et privat minneområde i et isolert adress rom, synlig kun for eierprosessen, ureflektert i andre prosesser og direkte utilgjengelig for kjernen.
    • I systemet for filtrering av systemanrop seccomp, ved å flytte låsbehandlere inn i brukerrummet, ble det mulighet for å bruke én atomisk operasjon for å opprette en filbeskrivelse for den isolerte oppgaven og returnere den ved behandling av systemanropet. Det foreslåtte tiltaket løser problemet med avbrudd av behandleren i brukerrummet når et signal ankommer.
    • En ny mekanisme for å administrere ressursbegrensninger i brukernavnsrommet er lagt til, som knytter separate rlimit tellere til brukeren i «user namespace». Endringen løser problemet med anvendelse av felles ressurs tellere når prosesser kjøres av én bruker i forskjellige containere.
    • I hypervisoren KVM For ARM64-systemer er det nå mulig å bruke MTE (MemTag, Memory Tagging Extension) utvidelse i gjestesystemer, som gjør det mulig å knytte etiketter til hver minnetildelingsoperasjon og organisere verifisering av korrekt bruk av pekere for å blokkere utnyttelse av sårbarheter forårsaket av tilgang til allerede frigjorte minneblokker, bufferoverløp, tilgang før initialisering og bruk utenfor gjeldende kontekst.
    • Dei plattformer som ARM64 tilbyr for pointer-autentisering kan nå konfigureres separat for kjerne og brukerrom. Teknologien gjør det mulig å bruke spesialiserte ARM64-instruksjoner for å verifisere returadresser med digitale signaturer som lagres i de ubrukte øverste bitene av selve pekeren.
    • I User-mode Linux er det lagt til støtte for bruk av drivere for PCI-enheter med en virtuell PCI-buss implementert av PCI-over-virtio-driveren.
    • For x86-systemer er det lagt til støtte for det para-virtualiserte virtio-iommu-enheten, som tillater sending av IOMMU-forespørsel som ATTACH, DETACH, MAP og UNMAP over virtio-transportsystemet uten emulering av minneside-tabeller.
    • For Intel-prosessorer, fra Skylake-familien til Coffee Lake, er støtte for Intel TSX (Transactional Synchronization Extensions) som standard deaktivert, verktøy som forbedrer ytelsen til flertrådede applikasjoner ved å dynamisk utelate unødvendige synkroniseringsoperasjoner. Utvidelsene er deaktivert på grunn av muligheten for Zombieload-angrep som manipulerer informasjonslekkasje via sidekanaler under drift av den asynkrone avbrytelsesmaskinen (TAA, TSX Asynchronous Abort).
  • Nettverks subsystem
    • Integrasjonen av MPTCP (MultiPath TCP) fortsetter i kjernen, en utvidelse av TCP-protokollen for å muliggjøre TCP-tilkoblinger som leverer pakker samtidig over flere ruter gjennom forskjellige nettverksgrensesnitt knyttet til ulike. IP-adresser. I den nye utgaven er det lagt til en mekanisme for å angi egne trafikkhash-politikker for IPv4 og IPv6 (multipath hash policy), som gir mulighet til å definere hvilke felt i pakker, inkludert innkapslede, som vil bli brukt ved beregning av hash for å bestemme ruten for pakken.
    • Det virtuelle transportlaget virtio har fått støtte for SOCK_SEQPACKET-sokler (ordnet og pålitelig overføring av datagrammer).
    • Funksjonaliteten til SO_REUSEPORT sokkelmekanismen er utvidet, noe som lar flere lyttende sokler koble seg til én port for å motta forbindelser med samtidig distribusjon av innkommende forespørsel til alle tilkoblede sokler via SO_REUSEPORT. Dette forenkler opprettelsen av flertrådede serverapplikasjoner. I den nye versjonen er det lagt til verktøy for å overføre kontrollen til en annen sokkel i tilfelle et feil under behandlingen av forespørselen fra den opprinnelig valgte sokkelen (løser problemet med tap av enkelte forbindelser ved omstart av tjenester).
  • Utstyr
    • I amdgpu-driveren er det implementert støtte for nye serier av GPU-er, AMD Radeon RX 6000, som utvikles under kodenavnene «Beige Goby» (Navi 24) og «Yellow Carp», samt forbedret støtte for GPU Aldebaran (gfx90a) og APU Van Gogh. Muligheten for samtidig drift med flere eDP-paneler er lagt til. For APU Renoir er det implementert støtte for drift med krypterte buffere i videominnet (TMZ, Trusted Memory Zone). Støtte for hot-unplug av grafikkort er lagt til. For GPU Radeon RX 6000 (Navi 2x) og eldre AMD GPU-er er støtte for energibesparende mekanisme ASPM (Active State Power Management) aktivert som standard, noe som tidligere kun var aktivert for GPU Navi 1x, Vega og Polaris.
    • For AMD-brikker er det lagt til støtte for delt virtuell minne (SVM, shared virtual memory) basert på HMM (Heterogeneous memory management) subsystemet, som gjør det mulig å bruke enheter med egne minnekontroller (MMU, memory management unit) som kan få tilgang til hovedminnet. Blant annet kan HMM brukes til å organisere et delt adresserom mellom GPU og CPU, der GPU kan få tilgang til hovedminnet til prosessen.
    • Det er lagt til tidlig støtte for AMD Smart Shift-teknologi, som dynamisk justerer strømforbruket til CPU og GPU på bærbare datamaskiner med AMD-brikke og grafikkort for å forbedre ytelsen under spill, videoredigering og 3D-rendering.
    • I i915-driveren for Intel-grafikkort er støtte for Intel Alderlake P-brikker inkludert.
    • Det er lagt til drm/hyperv-driver for den virtuelle grafikkadapteren Hyper-V.
    • Støtte for Raspberry Pi 400-alt-i-ett-datamaskinen er lagt til.
    • Det er lagt til dell-wmi-privacy-driver for støtte for de fysiske avbryterne for kamera og mikrofon i Dell bærbare datamaskiner.
    • For Lenovo-bærbare datamaskiner er det lagt til WMI-grensesnitt for endring av BIOS-innstillinger gjennom sysfs /sys/class/firmware-attributes/.
    • Utvidet støtte for enheter med USB4-grensesnitt.
    • Støtte for lydkort og kodeker AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 og Texas Instruments TAS2505 er lagt til. Støtte for lyd på HP- og ASUS-bærbare datamaskiner er forbedret. Patcher for å redusere forsinkelse før lydavspilling på USB-enheter er lagt til.

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