Linux-kjerneutgivelse 5.17

Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 5.17. Blant de mest bemerkelsesverdige endringene: et nytt ytelsesstyringssystem for AMD-prosessorer, muligheten til å kartlegge bruker-ID-er rekursivt i filsystemer, støtte for bærbare kompilerte BPF-programmer, en overgang av pseudo-tilfeldig tallgenerator til BLAKE2s-algoritmen, et RTLA-verktøy for utførelsesanalyse i sanntid, en ny fscache-backend for caching av nettverksfilsystemer, muligheten til å knytte navn til anonyme mmap-operasjoner.

Den nye versjonen inkluderer 14203 1995 rettelser fra 37 11366 utviklere, patchstørrelsen er 506043 MB (endringene berørte 250954 44 filer, 5.17 16 linjer med kode ble lagt til, 15 4 linjer ble slettet). Omtrent 4 % av alle endringer introdusert i XNUMX er relatert til enhetsdrivere, omtrent XNUMX % av endringene er relatert til oppdatering av kode spesifikk for maskinvarearkitekturer, XNUMX % er relatert til nettverksstakken, XNUMX % er relatert til filsystemer og XNUMX % er relatert til interne kjernedelsystemer.

Nøkkelinnovasjoner i kjerne 5.17:

  • Diskundersystem, I/O og filsystemer
    • Implementerte muligheten for nestet kartlegging av bruker-IDer for monterte filsystemer, brukt til å sammenligne filer til en spesifikk bruker på en montert utenlandsk partisjon med en annen bruker på gjeldende system. Den ekstra funksjonen lar deg rekursivt bruke kartlegging på toppen av filsystemer som kartlegging allerede er brukt for.
    • fscache-undersystemet, som brukes til å organisere hurtigbufring i det lokale filsystemet av data overført gjennom nettverksfilsystemer, har blitt fullstendig omskrevet. Den nye implementeringen utmerker seg ved en betydelig forenkling av koden og erstatning av komplekse operasjoner for planlegging og sporing av objekttilstander med enklere mekanismer. Støtte for den nye fscachen er implementert i CIFS-filsystemet.
    • Hendelsessporingsundersystemet i fanotify FS implementerer en ny hendelsestype, FAN_RENAME, som lar deg umiddelbart avskjære operasjonen for å gi nytt navn til filer eller kataloger (tidligere ble to separate hendelser FAN_MOVED_FROM og FAN_MOVED_TO brukt til å behandle omdøpninger).
    • Btrfs-filsystemet har optimert logging og fsync-operasjoner for store kataloger, implementert ved å kopiere kun indeksnøkler og redusere mengden loggede metadata. Støtte for indeksering og søk etter størrelse på ledig plassposter har blitt gitt, noe som har redusert ventetiden med omtrent 30 % og redusert søketid. Tillatt å avbryte defragmenteringsoperasjoner. Muligheten til å legge til enheter ved balansering mellom stasjoner er deaktivert, dvs. når du monterer et filsystem med skip_balance-alternativet.
    • En ny syntaks for montering av Ceph-filsystemet er foreslått, som løser eksisterende problemer knyttet til binding til IP-adresser. I tillegg til IP-adresser kan du nå bruke klyngeidentifikatoren (FSID) for å identifisere serveren: mount -t ceph [e-postbeskyttet]_name=/[underkatalog] mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • Ext4-filsystemet har flyttet til et nytt monterings-API som skiller trinnene for parsing av monteringsalternativer og superblokkkonfigurasjon. Vi har droppet støtte for lazytime- og nolazytime-monteringsalternativene, som ble lagt til som en midlertidig endring for å lette overgangen av util-linux til å bruke MS_LAZYTIME-flagget. Lagt til støtte for innstilling og lesing av etiketter i FS (ioctl FS_IOC_GETFSLABEL og FS_IOC_SETFSLABEL).
    • NFSv4 la til støtte for arbeid i filsystemer som ikke skiller mellom store og små bokstaver i fil- og katalognavn. NFSv4.1+ legger til støtte for å definere aggregerte økter (trunking).
  • Minne- og systemtjenester
    • Lagt til amd-pstate-driver for å gi dynamisk frekvenskontroll for optimal ytelse. Driveren støtter AMD CPUer og APUer fra Zen 2-generasjonen, utviklet sammen med Valve og er rettet mot å forbedre energistyringseffektiviteten. For adaptive frekvensendringer brukes CPPC-mekanismen (Collaborative Processor Performance Control), som lar deg endre indikatorer mer nøyaktig (ikke begrenset til tre ytelsesnivåer) og reagere raskere på tilstandsendringer enn den tidligere brukte ACPI-baserte P-tilstanden drivere (CPUFreq).
    • eBPF-undersystemet tilbyr en bpf_loop()-behandler, som gir en alternativ måte å organisere løkker i eBPF-programmer på, raskere og enklere for verifisering av en verifikator.
    • På kjernenivå er CO-RE (Compile Once - Run Everywhere)-mekanismen implementert, som lar deg kompilere koden til eBPF-programmer bare én gang og bruke en spesiell universell laster som tilpasser det innlastede programmet til gjeldende kjerne- og BTF-typer (BPF Type Format).
    • Det er mulig å tildele navn til områder med privat anonymt (tildelt via malloc) minne, noe som kan forenkle feilsøking og optimalisering av minneforbruk i applikasjoner. Navn tildeles via prctl med PR_SET_VMA_ANON_NAME-flagget og vises i /proc/pid/maps og /proc/pid/smaps i formen "[anon: ]".
    • Oppgaveplanleggeren gir sporing og visning i /proc/PID/sched tiden brukt av prosesser i tvungen-tomgangstilstand, brukt for eksempel for å redusere belastningen når prosessoren overopphetes.
    • Lagt til gpio-sim-modul, designet for å simulere GPIO-brikker for testing.
    • La til en "latency"-underkommando til "perf ftrace"-kommandoen for å generere histogrammer med latensinformasjon.
    • Lagt til et sett med "RTLA"-verktøy for å analysere arbeid i sanntid. Den inkluderer verktøy som osnoise (bestemmer påvirkningen av operativsystemet på utførelsen av en oppgave) og timerlat (endrer forsinkelsene knyttet til tidtakeren).
    • En annen serie med patcher er integrert med implementeringen av konseptet sidefolioer, som ligner sammensatte sider, men har forbedret semantikk og en klarere organisering av arbeidet. Ved å bruke tomes kan du øke hastigheten på minneadministrasjonen i noen kjerneundersystemer. De foreslåtte oppdateringene fullførte konverteringen av sidebufferen til bruk av tomes og la til innledende støtte for tomes i XFS-filsystemet.
    • Lagt til "make mod2noconfig" byggemodus, som genererer en konfigurasjon som samler alle deaktiverte undersystemer i form av kjernemoduler.
    • Kravene til versjonen av LLVM/Clang som kan brukes til å bygge kjernen er hevet. Bygg nå krever minst LLVM 11-utgivelse.
  • Virtualisering og sikkerhet
    • En oppdatert implementering av pseudo-tilfeldig tallgenerator RDRAND, ansvarlig for driften av /dev/random og /dev/urandom enhetene, er foreslått, bemerkelsesverdig for overgangen til å bruke BLAKE2s hash-funksjon i stedet for SHA1 for entropiblandingsoperasjoner. Endringen forbedret sikkerheten til pseudo-tilfeldig tallgenerator ved å eliminere den problematiske SHA1-algoritmen og eliminere overskrivingen av RNG-initialiseringsvektoren. Siden BLAKE2s-algoritmen er overlegen SHA1 i ytelse, hadde bruken også en positiv effekt på ytelsen.
    • Lagt til beskyttelse mot sårbarheter i prosessorer forårsaket av spekulativ utførelse av instruksjoner etter ubetingede foroverhoppoperasjoner. Problemet oppstår på grunn av forebyggende behandling av instruksjoner umiddelbart etter greninstruksjonen i minnet (SLS, Straight Line Speculation). Aktivering av beskyttelse krever bygging med testutgivelsen av GCC 12.
    • Lagt til en mekanisme for sporing av referansetelling (refcount, reference-count), med sikte på å redusere antall feil i referansetelling som fører til tilgang til minnet etter at det har blitt frigjort. Mekanismen er foreløpig begrenset til nettverksundersystemet, men i fremtiden kan den tilpasses andre deler av kjernen.
    • Utvidede kontroller av nye oppføringer i prosessminnesidetabellen er implementert, noe som gjør det mulig å oppdage visse typer skader og stoppe systemet, og blokkere angrep på et tidlig stadium.
    • Lagt til muligheten til å pakke ut kjernemoduler direkte av selve kjernen, og ikke av en behandler i brukerområdet, noe som gjør det mulig å bruke LoadPin LSM-modulen for å sikre at kjernemoduler lastes inn i minnet fra en verifisert lagringsenhet.
    • Forsynt sammenstilling med "-Wcast-function-type"-flagget, som muliggjør advarsler om casting-funksjonspekere til en inkompatibel type.
    • Lagt til virtuell vertsdriver pvUSB for Xen-hypervisoren, og gir tilgang til USB-enheter videresendt til gjestesystemer (gir gjestesystemer tilgang til fysiske USB-enheter tilordnet gjestesystemet).
    • Det er lagt til en modul som lar deg samhandle via Wi-Fi med delsystemet IME (Intel Management Engine), som kommer i de fleste moderne hovedkort med Intel-prosessorer og er implementert som en egen mikroprosessor som opererer uavhengig av CPU.
    • For ARM64-arkitekturen er det implementert støtte for KCSAN (Kernel Concurrency Sanitizer) feilsøkingsverktøyet, designet for å dynamisk oppdage raseforhold i kjernen.
    • For 32-biters ARM-systemer er muligheten til å bruke KFENCE-mekanismen til å oppdage feil ved arbeid med minne lagt til.
    • KVM-hypervisoren legger til støtte for AMX-instruksjoner (Advanced Matrix Extensions) implementert i de kommende Intel Xeon Scalable serverprosessorene.
  • Nettverksundersystem
    • Lagt til støtte for avlasting av operasjoner relatert til trafikkstyring til siden av nettverksenheter.
    • Lagt til muligheten til å bruke MCTP (Management Component Transport Protocol) over serielle enheter. MCTP kan brukes til å kommunisere mellom administrasjonskontrollere og deres tilknyttede enheter (vertsprosessorer, periferiutstyr, etc.).
    • TCP-stakken har blitt optimalisert, for eksempel for å forbedre ytelsen til recvmsg-anrop, forsinket utgivelse av socketbuffere er implementert.
    • På CAP_NET_RAW-autoritetsnivået er det tillatt å sette SO_PRIORITY- og SO_MARK-modusene gjennom setsockopt-funksjonen.
    • For IPv4 tillates råsockets å være bundet til ikke-lokale IP-adresser ved å bruke alternativene IP_FREEBIND og IP_TRANSPARENT.
    • Lagt til sysctl arp_missed_max for å konfigurere terskelen for feil under ARP-overvåkingskontrollen, hvoretter nettverksgrensesnittet settes i en deaktivert tilstand.
    • Forutsatt muligheten til å konfigurere separate sysctl min_pmtu og mtu_expires verdier for nettverksnavneområder.
    • Lagt til muligheten til å angi og bestemme størrelsen på buffere for innkommende og utgående pakker til ethtool API.
    • Netfilter har lagt til støtte for filtrering av transitt-pppoe-trafikk i en nettverksbro.
    • ksmbd-modulen, som implementerer en filserver som bruker SMB3-protokollen, har lagt til støtte for nøkkelutveksling, aktivert nettverksport 445 for smbdirect og lagt til støtte for parameteren "smb2 max credit".
  • Оборудование
    • Støtte for skjermer for visning av konfidensiell informasjon er lagt til drm (Direct Renderering Manager)-delsystemet og i915-driveren, for eksempel er noen bærbare datamaskiner utstyrt med skjermer med innebygd konfidensiell visningsmodus, noe som gjør det vanskelig å se fra utsiden . De ekstra endringene lar deg koble til spesialiserte drivere for slike skjermer og kontrollere konfidensielle nettlesermoduser ved å angi egenskaper i vanlige KMS-drivere.
    • Amdgpu-driveren inkluderer støtte for STB (Smart Trace Buffer) feilsøkingsteknologi for alle AMD GPUer som støtter den. STB gjør det lettere å analysere feil og identifisere kilden til problemer ved å lagre i en spesiell buffer informasjon om funksjonene utført før siste feil.
    • i915-driveren legger til støtte for Intel Raptor Lake S-brikker og muliggjør støtte for grafikkundersystemet til Intel Alder Lake P-brikker som standard. Det er mulig å kontrollere skjermens bakgrunnsbelysning via VESA DPCD-grensesnittet.
    • Støtte for maskinvarerulleakselerasjon i konsollen har blitt returnert i fbcon/fbdev-driverne.
    • Fortsatt integrering av endringer for å støtte Apple M1-brikker. Implementerte muligheten til å bruke simpledrm-driveren på systemer med en Apple M1-brikke for utdata gjennom en rammebuffer levert av fastvaren.
    • Lagt til støtte for ARM SoС, enheter og kort Snapdragon 7c, 845 og 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek (MT8183) Acer Chromebook 314), Mediatek MT7986a/b (brukes i Wi-fi-rutere), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEArX320 i. , Aspeed AST8/AST8, Engicam i.Core STM2500MP2600, Allwinner Tanix TX32, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t1/t6 MacBook Pro 6000/6001.
    • Lagt til støtte for ARM Cortex-M55- og Cortex-M33-prosessorer.
    • Lagt til støtte for enheter basert på CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Lagt til støtte for StarFive JH7100 SoC basert på RISC-V-arkitektur.
    • Lagt til lenovo-yogabook-wmi-driver for å kontrollere tastaturets bakgrunnsbelysning og få tilgang til ulike sensorer i Lenovo Yoga Book.
    • Lagt til asus_wmi_sensors-driver for å få tilgang til sensorer som brukes på Asus X370, X470, B450, B550 og X399 hovedkort basert på AMD Ryzen-prosessorer.
    • Lagt til x86-android-nettbrett-driver for x86-baserte nettbrett-PC-er som leveres med Android-plattformen.
    • Lagt til støtte for TrekStor SurfTab duo W1 berøringsskjermer og elektronisk penn for Chuwi Hi10 Plus og Pro-nettbrett.
    • Drivere for SoC Tegra 20/30 har lagt til støtte for strøm- og spenningsstyring. Aktiverer oppstart på eldre 32-bits Tegra SoC-enheter som ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 og Pad TF300TG.
    • Lagt til drivere for Siemens industrielle datamaskiner.
    • Lagt til støtte for Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA og Team Source LCD Display T043015HXNUMXXXNUMX LCD-skjerm TXNUMXHXNUMXXXNUMX.
    • Lagt til støtte for lydsystemer og kodeker AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel-systemer som bruker NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLVxxx320AD. Problemer med Tegra3 HD-lyd er løst. Lagt til HDA-støtte for CS194L35-kodeker. Forbedret støtte for lydsystemer for bærbare datamaskiner fra Lenovo og HP, samt Gigabyte-hovedkort.

Kilde: opennet.ru

Legg til en kommentar