Utgivelse av Linux kjernen 6.14

Etter to måneder med utvikling presenterte Linus Torvalds lanseringen av Linux-kjerne 6.14. Blant de mest bemerkelsesverdige endringene er: ntsync-driveren med synkroniseringprimitive fra Windows NT, balansering av leseoperasjoner i Btrfs RAID1, støtte for reflink i XFS i realtime-modus, mulighet for ukomprimert bufferinn-/utdata, dmem cgroup for minnebegrensning av GPU, utnyttelse av io_uring i FUSE, delegasjon av attributter i NFS, støtte for atomisk skriving i Device mapper, akselerasjon av symboliske lenker, styring av skriptkjøring, støtte for Qualcomm Snapdragon 8 Elite-brikker, driver for NPU fra AMD.

Den nye versjonen inkluderer 12115 feilrettinger fra 1984 utviklere, størrelsen på patchen er 39 MB (endringene berørte 10170 filer, 531586 linjer med kode ble lagt til, og 235999 linjer ble fjernet). I forrige utgave var det 14172 feilrettinger fra 2086 utviklere, patchstørrelsen var 46 MB. Omtrent 41 % av alle endringene i 6.14 er relatert til enhetstrekkere, omtrent 13 % av endringene er relatert til oppdatering av kode spesifikk for maskinvarearkitekturer, 14 % er relatert til nettverksstakken, 7 % til filsystemene og 4 % til de interne subsystemene i kjernen.

De viktigste nyhetene i kjernen 6.14:

  • Disk subsystem, I/O og filsystemer
    • I Btrfs-filsystemet er det lagt til støtte for nye metoder for balansering av leseoperasjoner mellom lagringsenheter som inngår i RAID1-arrayet. I tillegg til den tidligere gjeldende lastbalanseringen basert på prosess-ID-er (pid), tilbys tre nye balanseringsmodi i den nye versjonen: «rotation» (jevn fordeling av lasten over alle lagringsenheter, modus aktivert som standard); «latency» (fordeling med hensyn til forsinkelser, kan være nyttig ved feil eller ustabil drift av lagringsenhetene); devid (manuell styring). For å endre balanseringsmodus er grensesnittet «/sys/fs/btrfs//read_policy» lagt til. Blant andre endringer i Btrfs er implementering av ioctl FS_IOC_READ_VERITY_METADATA.
    • Ennlagt en modus for ukashering av buffret inn- og utdata, der data fjernes fra siden cache umiddelbart etter at lese- eller skriveoperasjonene er fullført. Endringen kan være nyttig ved bruk av veldig raske lagringsenheter, der caching av operasjoner i RAM er overflødig. For slike enheter tillater den nye modusen å unngå unødig forbruk av minne av sidens cache uten å bruke en komplisert Direct I/O API.
    • I fsnotify, mekanismen for å overvåke endringer i filsystemet, er det lagt til en ny hendelse FS_PRE_ACCESS, som genereres i fasen før tilgang til filinnholdet. Hendelsen behandles synkront, dvs. kjernen sender hendelsen og venter på å motta et svar. Hvis svaret er mottatt, utføres operasjonen, og hvis det oppstår en feil, returnerer systemanropet en feilkode til brukerrommet. Ved hjelp av FS_PRE_ACCESS kan prosesser i brukerrommet for eksempel organisere fylling av filen etter hvert som data blir tilgjengelige på et tregt lagringsmedium.
    • I FUSE, subsystemet som gir mulighet for å lage filsystemimplementasjoner i brukerrommet, er det lagt til støtte for datadeling mellom kjernen og behandleren i brukerrommet ved hjelp av io_uring inn- og utdata mekanismen. Endringen forbedrer FUSEs ytelse ved å redusere kontektsvekslinger mellom kjernen og brukerrommet.
    • I XFS-filsystemet er det lagt til mulighet for å bruke bakoversøking (rmap, reverse-mapping) i en modus for arbeid med forutsigbare forsinkelser ("realtime device"). Bakoversøking lar deg bestemme hvilket fil som bruker den angitte blokken på lagringsenheten. Ved hjelp av rmap i XFS er det implementert støtte for reflink-operasjonen i realtime-modus, som lar deg lage kopier av filer ved å klone filmetadata og opprette en lenke til allerede eksisterende data uten å faktisk kopiere dem.
    • I VFS er det implementert caching av størrelsen på symboliske lenker, noe som har økt hastigheten på readlink-operasjonen med 1,5% (i testen med /initrd.img i ext4). Caching er aktivert i ext4- og tmpfs-filsystemene.
    • I NFSv4.2 er det lagt til støtte for delegasjon av filattributter, noe som gjør det mulig å administrere slike filattributter som endringstid (mtime) på NFS-klienten, uten behov for å tilbakestille endringer på serveren. NFS har også fått forbedret støtte for protokollen "LOCALIO", som lar deg bestemme om klienten og NFS-serveren er på samme vert, for å bruke tilsvarende optimaliseringer, som å la klienten bruke direkte inn-/utgang (Direct I/O).
    • Ytelsen for leseoperasjoner i filsystemene NETFS, CIFS og AFS (Andrew File System) er forbedret.
    • Squashfs har fått en modus for direkte lasting av blokker inn i sidecache (SQUASHFS_FILE_DIRECT), noe som gjør det unødvendig å ha en egen read_page-cache. Denne endringen har redusert mengden minne som kreves under Squashfs-operasjoner.
    • Det er implementert et flagg STATX_DIO_READ_ALIGN i systemanropet statx(), for å bestemme nødvendig justering for leseoperasjoner fra fil.
    • I filsystemet Bcachefs er formatet for diskstrukturer oppdatert og stabilisert. Fremtidige endringer i formatet vil bli klassifisert som valgfrie og vil bli implementert som valgfrie tillegg. Hastigheten på FS-integritetskontroller er betydelig forbedret. I tillegg er ytelsen i skrivebeskyttet modus forbedret; problemer som førte til tilgang til minne etter frigjøring (use after free) er løst; problemer med reflink-pekerne i fsck er løst; og behandlingen av transaksjonsgjenoppretting er forbedret.
    • Modulen md-linear er gjeninnført, som er ment for å kombinere blokkenheter. Denne modulen ble tidligere erklært som foreldet og fjernet fra kjerner 6.8, men det viste seg at den var etterspurt, så den er nå gjenopprettet.
    • Filsystemene F2FS og SQUASHFS er oversatt til å bruke sidefollier (page folios).
    • Filsystemene OCFS2 og DLMFS er oversatt til bruk av det nye API-et for montering av partisjoner.
    • I null_blk-driveren er det implementert en attributt "rotational", som kan settes via configfs for å simulere arbeid med en enhet basert på roterende skiver for å forenkle testing av kjernens funksjoner.
    • I Device mapper-systemet og modulene dm-mirror, dm-io, dm-table, dm-linear, dm-stripe og dm-raid1 er det implementert støtte for atomisk skriving.
  • Minne og systemtjenester
    • Integrasjonen i kjernen av ntsync-driveren, som implementerer det symbolske enheten /dev/ntsync og et sett med primitive synkroniseringsverktøy brukt i Windows NT-kjernen, er fullført. Implementering av slike primitive verktøy på kjernenivå gjør det mulig å betydelig øke ytelsen til Windows-spill som kjøres ved hjelp av Wine. Ytelsesgevinsten oppnås ved å fjerne kostnader knyttet til bruk av RPC i brukerrens rom. Opprettelsen av en egen driver for Linux-kjernen skyldes vanskelighetene med å korrekt implementere NT-synkroniserings-API-er på toppen av eksisterende primitive verktøy i kjernen.
    • En ny DMEM cgroup-kontroller har blitt lagt til for separat regnskap av minneområder fra enheter som GPU. DMEM gjør det mulig å lage separate cgroups for ulike oppgaver som arbeider med GPU, slik at de kan kjøres uten å påvirke hverandre. Den nye funksjonaliteten løser problemet med tvungen avslutning av operasjoner med GPU når tilgjengelig minne er oppbrukt, ved å regne med minnet som gjenspeiles tilbake fra GPU og minnet brukt av CPU-drivere i separate cgroups.
    • Optimaliseringer er utført for skalerbarheten til flush-operasjonen for TLB (Translation Lookaside Buffer), som brukes til å akselerere konvertering av virtuelle adresser til fysiske adresser. De tilføjede optimaliseringene innebærer utsatt oppdatering av enkelte datakonstruksjoner under konteksskift, noe som forbedrer ytelsen ved gjennomføring av visse tester.
    • Ytelsen til MGLRU (Multi-Generational LRU)-mekanismen, som brukes til å bestemme hvilke minnesider som er i bruk og hvilke som kan byttes ut i sidefilen, er forbedret.
    • Overførselen av endringer fra Rust-for-Linux-grenen er fortsatt, knyttet til bruken av Rust som et andre språk for utvikling av drivere og kjernemoduler (støtte for Rust er ikke aktivert som standard, og fører ikke til at Rust blir en obligatorisk byggebestilling for kjernen). Muligheten for å bruke makroen "derive(CoercePointee)" i kjernens kode er gitt, noe som muliggjør bruk av smarte pekere med trait-objekter. Rust-bindings for PCI, plattformer, Open Firmware, tegnretter og visse inn-/utdatafunksjoner er inkludert i kjernen. Greg Kroah-Hartman, som har ansvaret for støtten til den stabile kjernemodellen, karakteriserte den nåværende tilstanden som "nesten klar for å skrive en faktisk driver i Rust".
    • Det er foreslått en ny kode for å generere versjoner av feilsøking symboler for lastbare moduler i bygningsscenarier, som nå bruker informasjon fra feilsøkingsposter i DWARF-format, i stedet for å analysere kildekoden direkte. Denne endringen gjør det mulig å bruke versjonering av feilsøking symboler for moduler skrevet i Rust. Den gamle implementeringen er også bevart i kjernen, og valget av generator gjøres på nivået av bygningsoptioner.
    • For PowerPC-arkitekturen er støtten for modusen for lat oppheving av oppgaver (PREEMPT_LAZY, lazy preemption) implementert, som tilsvarer modusen for full oppheving («full preemption») for sanntidsoppgaver (RR/FIFO/DEADLINE), men forsinker oppheving av vanlige oppgaver (SCHED_NORMAL) til tikgrensen.
    • Støtte for energiforbruks teller for AMD-prosessorer er lagt til i ytelsesprofilering undersystemet "perf". Muligheten til å fungere på systemer med opptil 2048 CPU-kjerner er også lagt til.
    • Det er gitt mulighet for å bruke sysctl-parameteren pid_max med prosessidentifier ventilasjonsrom (ID namespace). Parameteren pid_max er ment for å begrense den maksimale verdien av prosess-identifikatorer (PID) og kan nå brukes til å begrense det maksimalt mulige antallet prosesser som kan kjøres i det angitte rommet for identifikatorer. Behandlingen av parameteren skjer hierarkisk, dvs. begrensningene i eksterne rom for identifikatorer gjelder for innbygde rom.
    • Når du bruker systemanropet execveat til å starte prosessen, vil nå filnavnet som er kjørt vises i filsystemet /proc i stedet for filbeskrivelsesnummeret.
    • I kildekoden til kjernen (i katalogen samples/vfs) er det lagt til et verktøy, mountinfo, som demonstrerer bruken av systemanropene statmount() og listmount().
    • I BPF-subsystemet er nye funksjoner bpf_local_irq_save() og bpf_local_irq_restore() foreslått for midlertidig å deaktivere avbrudd på lokal CPU. Disse funksjonene kan brukes for strukturer der behandling ikke stoppes av avbrudd.
    • I systemanropet madvise() er det sikret at sidetabeller knyttet til det frigjorte adresseområdet frigis ved bruk av flaggene MADV_DONTNEED og MADV_FREE, da tomme minnesider i enkelte situasjoner kan ta betydelig minne.
    • For OpenRISC-arkitekturen er støtte for restartable sequences (rseq, restartable sequences) implementert, som er designet for rask atomisk utføring av operasjoner som i tilfelle avbrudd av en annen tråd blir ryddet og får en ny forsøkskjøring.
    • Koden er reorganisert med implementeringen av algoritmene CRC32 og CRC-T10DIF, som ikke lenger overlapper med kryptosubsystemet og blir kalt direkte fra bibliotekgrensesnittet. Endringen har forenklet koden og forbedret dens effektivitet.
    • I io_uring-systemet for asynkron inn- og utdata er et grensesnitt lagt til for å sende ekstra metadata om integritet ved utføring av lese- og skriveoperasjoner.
  • Virtualisering og sikkerhet
    • I systemanropet execveat er flagget AT_EXECVE_CHECK lagt til, som tillater en sjekk av filens kjørbarhet uten faktisk oppstart, men med hensyn til sikkerhetspolicyer, tilgangsrettigheter og aktive LSM-moduler. For bruk i kombinasjon med AT_EXECVE_CHECK er securebit-flaggene SECBIT_EXEC_RESTRICT_FILE og SECBIT_EXEC_DENY_INTERACTIVE foreslått, som kan brukes til å begrense kjøring av filer med skript i tolkede programmeringsspråk. Flagget SECBIT_EXEC_RESTRICT_FILE pålegger sammenstillere og tolker å bruke alternativet AT_EXECVE_CHECK for å sjekke kjørbarhet, mens flagget SECBIT_EXEC_DENY_INTERACTIVE forbyr behandlingen av interaktive kommandoer. Hovedideen med endringen er muligheten til å anvende sikkerhetspolicyer ikke bare på tradisjonelle kjørbare filer, men også på tekstfiler med skript som kan lastes inn via tolkeren (dvs. forbud mot kjøring kan implementeres ikke bare ved å kjøre './script.sh', men også ved å utføre 'sh script.sh').
    • På x86-systemer er det implementert støtte for sikre tidsmålere for gjestesystemer, som ikke tillater endring av systemklokken i gjestesystemet fra vertsmiljøet. Muligheten er implementert på grunnlag av AMD SEV (Secure Encrypted Virtualization)-mekanismen, som brukes i virtualisering for beskyttelse virtual machines mot innblanding fra hypervisoren eller administratoren av verts-systemet.
    • Det er lagt til støtte for xperm-regler i SELinux-systemet for obligatorisk tilgangskontroll, som gjør det mulig å binde SELinux-politikker til bestemte ioctl()-anrop eller netlink-meldinger.
    • For digital signering av kjernemoduler er SHA512-algoritmen nå standard i stedet for SHA1.
    • Driverne for gjestesystemer i VirtualBox har fått støtte for ARM64-arkitekturen.
    • I hypervisoren KVM Arbeidet med å implementere Intel TDX (Trusted Domain Extensions)-mekanismen for kryptering av gjestesystemenes minne har fortsatt.
    • Virtio_blk har fått støtte for feilgjenopprettingsmodus.
  • Nettverks subsystem
    • I implementeringen av RxRPC-protokollen har det blitt mulig å bruke store UDP-pakker for å forbedre båndbredden.
    • For TCP er støtten for RACK-TLP-algoritmen lagt til for å oppdage pakke-tap.
    • En ny sysctl-parameter, tcp_tw_reuse_delay, er lagt til, som virker i tilknytning til navnerommet (network namespace) og gjør det mulig å definere forsinkelsen før systemet kan gjenbruke nummeret til nettverksporten etter lukking av TCP-socket.
    • Muligheten til å velge tidsleverandør (PTP) for å generere tidsstempler på PHY- og MAC-nivåene er lagt til.
    • IPsec har fått implementert støtte for mekanismen for aggregering og fragmentering av innkapslede IP-pakker — IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
    • Det er lagt til støtte for overføring av prioriteringsinformasjon (SO_PRIORITY) i kontrollmeldinger (cmsg — control messages) i nettverks-socket systemet. For nettverks-sockets er det lagt til en opsjon SO_RCVPRIORITY, som inkluderer sending av prioriteringsinformasjon via recvmsg().
  • Utstyr
    • Det er lagt til en driver for amdxdna for NPU (Neural Processing Unit)-akseleratorer innebygd i AMD CPU-er, basert på XDNA-arkitekturen, beregnet for å akselerere oppgaver knyttet til maskinlæring. NPU basert på XDNA-arkitekturen leveres i 7040 og 8040-serien av AMD Ryzen-prosessorer, AMD Alveo V70-akseleratorer og AMD Versal SoC.
    • I driver i915 har fått nye GPU-identifikatorer, det er implementert en håndterer for HDMI-initialiseringsfeil, og påliteligheten ved tilbakestilling av GPU-motorer på Haswell og eldre systemer er forbedret.
    • Arbeidet med drm-driveren (Direct Rendering Manager) Xe for GPU-er basert på Intel Xe-arkitekturen, som brukes i Intel Arc-grafikkort og integrert grafikk fra Tiger Lake-prosessorene, fortsetter.
    • I Nouveau-driveren er der tilføjet mulighed for at overføre buffer med GSP-RM logs via debugfs.
    • AMDGPU-driveren har fått støtte for DRM-panic-mekanismen, som viser en lignende «blå skjerm for død» ved feil. Forberedelsene til støtte for den kommende Radeon RX 9000-serien av grafikkort basert på RDNA4-arkitekturen er fortsatt på gang. Støtten for DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS og ISP er oppdatert.
    • I DRM-driveren msm (Qualcomm Adreno GPU) er det lagt til støtte for Qualcomm SM6150-plattformen (QCS615).
    • I DRM-driveren panfrost er støtte til MediaTek MT8188 SoC med Mali-G57 GPU blevet tilføjet.
    • I DRM-driveren vc4 er støtte til Broadcom BCM2712 (Raspberry Pi 5) SoC blevet tilføjet.
    • I vfio-driveren nvgrace-gpu er det lagt til støtte for NVIDIA Grace Blackwell 200-brikker.
    • Det er inkludert en driver for Intel THC (Touch Host Controller), som brukes til interaksjon med berøringsskjermer og touchpads på enkelte bærbare datamaskiner. Støtte for Wacom-enheter med PCI-grensesnitt er lagt til. Støtte for QH Electronics spillkontrollere er også lagt til.
    • Støtte for ARM-plattformer, SoC-er og enheter er lagt til: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Det er også lagt til støtte for SoC SpacemiT K1 basert på RISC-V-arkitekturen.
    • I lydsystemet ALSA for MIDI 2.0 er API-ene rawmidi og sequencer utvidet. I API-en for utvinning av kompresjonsoperasjoner til lydkortet er ASRC (Asynchronous Sample Rate Conversion) lagt til.
    • Støtte for lydsystemene til enhetene Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 og 18i20 er lagt til. Støtte for SteelSeries Arctis 9 trådløse hodetelefoner er også 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