Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 6.13. Blandt de mest bemærkelsesværdige ændringer er: lazy eviction mode i opgaveplanlæggeren, støtte til atomisk skrivning i XFS og Ext4, mekanismen 'multigrain timestamps', adaptiv polling-mode i netværkssubsystemet, mulighed for at bygge med AutoFDO-optimeringer, støtte for ARM65 Guarded Control Stack beskyttelsesmekanisme, isolering af virtuelle maskiner ved hjælp af ARM CCA-udvidelsen, separate stacks i BPF, fjernelse af ReiserFS, driveren virtual-cpufreq, netlink API net-shaper, tmpfs mount mode med case sensitivity, støtte til POSIX-udvidelser i SMB3, driver for AMD Cache Optimizer.
Den nye version indeholder 14.172 rettelser fra 2.086 udviklere, patchstørrelsen er 46 MB (ændringerne påvirkede 15.375 filer, 598.707 linjer kode er tilføjet, 406.294 linjer er fjernet). I den tidligere udgave var der 14.607 rettelser fra 2.167 udviklere, patchstørrelsen var 37 MB. Cirka 52% af alle ændringerne i 6.13 vedrører enhedsdrivere, omtrent 13% af ændringerne relaterer sig til opdatering af arkitekturnær kode, 11% relaterer sig til netværksstakken, 4% til filsystemer og 3% til interne kernel subsystems.
De vigtigste nyheder i kernen 6.13:
- DiskSubsystem, input/output og filsystemer
- En ny mekanisme til 'multigrain timestamps' er tilføjet, som gør det muligt at få information om tidspunktet for ændring eller adgang til filer med en præcision på mere end millisekunder, men uden negativ indflydelse på ydelsen. Forbedringen af præcisionen i timestamps fører til ekstra overhead på grund af en øget intensitet i skrivningen af metadata til disken, så i den foreslåede implementering skabes mere præcise timestamps ikke for alle filer, men kun for dem, hvor processer anmoder om sådanne timestamps via kaldet getattr().
- Støtte til atomiske skriveoperationer er tilføjet, hvor data, der overstiger sektorstørrelsen, skrives atomisk på lagringsenheder, der tilbyder denne mulighed. I øjeblikket er atomisk skrivning implementeret for XFS, Ext4 i O_DIRECT (Direct I/O) mode og md RAID 0/1/10.
- En ny mekanisme til referencecounting for filer er foreslået, hvilket giver en præstationsforøgelse på 3-5% i arbejdsbelastninger med mere end 255 tråde.
- Implementeringen af filsystemet ReiserFS er fjernet, efter at det sidste år blev erklæret forældet.
- En sysctl-parameter "fs.dentry-negative" er blevet tilføjet for at indstille VFS-politikken for rydning af "dentry"-poster (det interne repræsentation af katalogelementer) efter sletning af de tilknyttede filer. For nogle typer belastninger er det mere optimalt at beholde sådanne poster om de slettede filer, mens det for andre er bedre at slette dem, derfor er der i kernen givet mulighed for valg (som standard slettes "dentry" ikke automatisk).
- Til systemopkaldet statmount() er der tilføjet en flag STATMOUNT_OPT_ARRAY for at returnere en liste over filsystemmuligheder som et array af strenge, der slutter med et nultegn og ikke bruger escape-sekvenser "\000". Der er tilføjet støtte til at returnere FS-subtypen (fs_subtype, til bestemmelse af brugen af FUSE), sikre monteringsindstillinger og den oprindelige superblok (sb_source).
- I OverlayFS er der givet mulighed for at angive lag gennem filbeskrivelser i stedet for filstier.
- Der er tilføjet en monteringsmulighed "casefold" til filsystemet tmpfs for at arbejde uden hensyntagen til tegnregistrering, samt muligheden "strict_encoding" til at blokere oprettelsen af filer med navne, der indeholder ugyldige UTF-8-tegn.
- Et nyt sæt systemopkald er blevet foreslået til styring af udvidede filattributter: setxattrat(), getxattrat(), listxattrat() og removexattrat(). I modsætning til systemopkaldene setxattr(), getxattr(), listxattr() og removexattr() kræver de nye varianter angivelse af filbeskrivelsesnummeret for den mappe, som filstien skal findes i.
- I Btrfs er der tilføjet en ioctl-operation BTRFS_IOC_SUBVOL_SYNC_WAIT, der inkluderer ventetid på afslutning af oprydning af undervolume, hvilket gør det muligt for en ikke-privilegeret bruger uden adgang til ioctl SEARCH_TREE at udføre kommandoen "btrfs subvolume sync" (nyttigt i sikkerhedskopieringsapplikationer, der rydder undervolume). En ioctl-operation ENCODED_READ er blevet tilføjet for at læse kodede data gennem io_uring, f.eks. til direkte læsning af komprimerede ekstensjoner uden dekomprimering. Arbejdet med overgang til brug af hukommelsessider (page folios) er fortsat. Der er reduceret forekomsten af låsede konflikter (lock contention) under søgning efter indbyggede tilbagesporinger og ved gennemgang af bufferne til ekstensjoner. Effektiviteten af kompaktering af ekstensjonskortet er blevet forbedret.
- I filsystemet EROFS (Extendable Read-Only File System), der er designet til at blive brugt på partitioner, der kun kan tilgås i skrivebeskyttet tilstand, er der mulighed for at benytte optionerne SEEK_HOLE og SEEK_DATA i systemopkaldet lseek().
- F2FS har fået tilføjet understøttelse af enhedsaliasering ('device aliasing'), som midlertidigt tillader at reservere et område i F2FS til at bruge en del af det bloklager, der anvendes i et andet filsystem. Efter afslutning af den eksterne operation kan det reserverede område tilbageføres til F2FS. For eksempel kan et filsystem oprettes med kommandoen 'mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb', hvorefter indholdet af enheden /dev/vdc vil være reserveret og spejlet i filen vdc.file, og partitionen /dev/vdc kan bruges til egne formål, f.eks. formateres til et andet filsystem. For at returnere det reserverede indhold er det tilstrækkeligt at slette filen vdc.file.
- XFS har fået tilføjet understøttelse af kvoter for realtime-enheder. Understøttelse af en metadata-katalog er blevet tilføjet, hvor alle inode med metadata opbevares.
- I FUSE-mekanismen er muligheden for dynamisk at ændre det maksimale antal sider (FUSE_MAX_MAX_PAGES) blevet tilføjet ved hjælp af 'sysctl fs.fuse.max_pages_limit'. I arbejdet benyttes sidetemaer (page folios).
- SMB har implementeret understøttelse af POSIX-udvidelser for SMB3, som er nødvendige for at gemme specielle filtyper, såsom fifo, enheds filer og symboliske links. Der er tilføjet mulighed for at montere en partition med et alternativt kodeord, der anvendes ved rotering af kodeord. En ny monteringsoption 'cifs.upcall' er blevet tilføjet for at definere namespace. Der er sikret genkendelse af symboliske og blok enheds filer, der er oprettet i Windows NFS Server. Understøttelse af symboliske links i WSL-stil (Windows Subsystem for Linux) er også blevet tilføjet.
- Filsystemerne UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS og ECRYPTFS er blevet opdateret til at anvende det nye API til montering af partitioner.
- Filsystemerne ECRYPTFS, UFS og NILFS2 er blevet opdateret til at bruge sidetemaer (page folios).
- Hukommelse og systemtjenester
- I planlæggeren er der implementeret en model for latenstid med præemption (PREEMPT_LAZY, lazy preemption), som svarer til modellen for fuld præemption («full preemption») til realtime-opgaver (RR/FIFO/DEADLINE), men forsinker præemption af normale opgaver (SCHED_NORMAL) til tick-grænsen. Denne forsinkelse reducerer tilfælde af præemption af låsholdere, hvilket gør det muligt at nærme sig ydeevnen i konfigurationer, der bruger modellen for frivillig præemption (voluntary preemption). Dermed muliggør den nye model at bevare kapaciteterne for fuld præemption vedrørende realtime-opgaver, men minimerer nedgangen i ydeevnen for normale opgaver. Desuden forenkler den nye model logikken for opgavepræemption i kernen ved at udelukke behandlere, der befinder sig i andre kernekomponenter (uden for opgaveplanlæggeren).
- Ved kompilering med Clang er der mulighed for at anvende optimeringer.
Kilde: opennet.ru
