Linux-kärnan version 6.13

Efter två månaders utveckling presenterade Linus Torvalds releasen av Linux 6.13-kärnan. Bland de mest anmärkningsvärda ändringarna: lazy preemption-läge i uppgiftsschemaläggaren, stöd för atomic skrivning i XFS och Ext4, "multigrain timestamps"-mekanismen, adaptivt läge för att möjliggöra polling i nätverksundersystemet, möjligheten att bygga med AutoFDO-optimeringar, stöd för ARM65 Guarded Control Stack-skyddsmekanismen, virtuella isoleringsmaskiner som använder ARM CCA-tillägget, separata stackar i BPF, borttagning av ReiserFS, virtuell-cpufreq-drivrutin, netlink API net-shaper, skiftlägeskänsligt tmpfs-monteringsläge, stöd för POSIX-tillägg i SMB3, AMD Cache Optimizer-drivrutin.

Den nya versionen innehåller 14172 2086 korrigeringar från 46 15375 utvecklare, patchstorleken är 598707 MB (ändringarna påverkade 406294 14607 filer, 2167 37 rader kod lades till, 52 6.13 rader raderades). Den senaste utgåvan hade 13 korrigeringar från 11 utvecklare, patchstorleken var 4 MB. Cirka 3 % av alla ändringar som införts i XNUMX är relaterade till drivrutiner, cirka XNUMX % av ändringarna är relaterade till uppdateringskod som är specifik för hårdvaruarkitekturer, XNUMX % är relaterade till nätverksstacken, XNUMX % är relaterade till filsystem och XNUMX % är relaterade till interna kärndelsystem.

Huvudsakliga innovationer i kärnan 6.13:

  • Diskundersystem, I/O och filsystem
    • Lade till mekanismen för "multigrain timestamps", som låter dig få information om tidpunkten för ändring eller åtkomst till filer med mer än en millisekunds noggrannhet, men utan negativ inverkan på prestandan. Att öka etiketternas noggrannhet leder till ytterligare overhead på grund av ökad intensitet för att skriva metadata till disk, så i den föreslagna implementeringen skapas inte mer exakta etiketter för alla filer, utan bara för de för vilka processer begär sådana etiketter via getattr() samtal.
    • Tillagt stöd för atomskrivning, där data större än sektorstorleken skrivs atomärt på lagringsenheter som tillhandahåller denna förmåga. För närvarande är atomskrivning implementerad för XFS, Ext4 i O_DIRECT (Direct I/O)-läge och md RAID 0/1/10.
    • En ny mekanism för filreferensräkning föreslås som ger en prestandaökning på 3-5 % i arbetsbelastningar med mer än 255 trådar.
    • Implementeringen av filsystemet ReiserFS, som förklarades föråldrat förra året, har tagits bort.
    • Lade till sysctl-parametern "fs.dentry-negative" för att ställa in VFS-policyn för att rensa "dentry"-poster (den interna representationen av katalogobjekt) efter borttagning av filerna som är associerade med dem. För vissa typer av belastning är det optimalt att lämna sådana poster om raderade filer och för andra att ta bort dem, så kärnan ger ett val (som standard raderas inte "dentries" automatiskt).
    • Lade till STATMOUNT_OPT_ARRAY-flaggan till statmount()-systemanropet för att returnera en lista med filsystemalternativ som en array av nollterminerade strängar som inte använder "\000"-escape. Lade till stöd för att returnera FS-undertypen (fs_subtype, för att avgöra om FUSE används), säkra monteringsalternativ och källsuperblocket (sb_source).
    • OverlayFS ger möjligheten att specificera lager via filbeskrivningar snarare än filsökvägsnamn.
    • Lade till ett "casefold"-monteringsalternativ till tmpfs-filsystemet för skiftlägesokänslig operation och ett "strict_encoding"-alternativ för att blockera skapandet av filer med namn som innehåller ogiltiga UTF-8-tecken.
    • En ny uppsättning systemanrop har föreslagits för att hantera utökade filattribut: setxattrat(), getxattrat(), listxattrat() och removexattrat(). Till skillnad från systemanropen setxattr(), getxattr(), listxattr() och removexattr() kräver de nya alternativen att man specificerar en filbeskrivning för katalogen mot vilken en sökväg ska sökas.
    • Lade till ioctl-operationen BTRFS_IOC_SUBVOL_SYNC_WAIT till Btrfs, som inkluderar att vänta på att rensningen av undervolymen ska slutföras, vilket gör att kommandot "btrfs subvolume sync" kan köras av en oprivilegierad användare som inte har tillgång till SEARCH_TREE ioctl (användbart i säkerhetskopieringsapplikationer som rensar upp undervolymer) . Tillagd ioctl-operation ENCODED_READ för att läsa kodad data via io_uring, till exempel för att läsa direkt komprimerade omfattningar utan att dekomprimera. Arbetet fortsatte med övergången till användning av sidfolios. Minskade förekomsten av samtidiga lås (”låskonflikt”) vid sökning efter inbäddade bakåtlänkar och vid iteration genom omfattningsbuffertar. Förbättrad komprimeringseffektivitet för omfattningskarta.
    • I filsystemet EROFS (Extendable Read-Only File System), avsett för användning på partitioner som är tillgängliga i skrivskyddat läge, är det möjligt att använda alternativen SEEK_HOLE och SEEK_DATA i systemanropet lseek().
    • F2FS stöder nu enhetsaliasing, vilket gör att du tillfälligt kan reservera ett område i F2FS för att använda en del av en blockenhet i en annan FS. Efter att den externa operationen är klar kan det reserverade området återställas till F2FS. Du kan till exempel skapa en FS med kommandot "mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb", varefter innehållet i /dev/vdc-enheten reserveras och återspeglas i vdc.file-filen, och /dev/vdc-partitionen kan användas för dina egna behov, till exempel formateras för en annan FS. För att återställa det reserverade innehållet, radera helt enkelt vdc.file-filen.
    • XFS inkluderar stöd för kvoter för realtidsenheter. Lagt till stöd för en metadatakatalog, som innehåller alla metadatainoder.
    • FUSE-motorn inkluderar möjligheten att dynamiskt ändra det maximala antalet sidor (FUSE_MAX_MAX_PAGES) med "sysctl fs.fuse.max_pages_limit". Arbetet involverar minnessidesfolios.
    • SMB ger stöd för POSIX-tillägg till SMB3, som behövs för att lagra speciella filtyper som fifo, enhetsfiler och symboliska länkar. Lade till möjligheten att montera en partition med ett alternativt lösenord som används under lösenordsrotation. Lade till nytt monteringsalternativ "cifs.upcall" för att definiera namnutrymme. Igenkänning av tecken- och blockenhetsfiler skapade i Windows NFS Server tillhandahålls. Tillagt stöd för symboliska länkar i WSL-stil (Windows Subsystem for Linux).
    • Filsystemen UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS och ECRYPTFS har konverterats för att använda det nya partitionsmonterings-API.
    • Filsystem och ECRYPTFS, UFS och NILFS2 har konverterats för att använda sidfolios.
  • Minnes- och systemtjänster
    • Schemaläggaren implementerar en lazy preemption-modell för uppgifter (PREEMPT_LAZY, lazy preemption), som motsvarar den fullständiga preemption-modellen för realtidsuppgifter (RR/FIFO/DEADLINE), men fördröjer preemption av vanliga uppgifter (SCHED_NORMAL) tills bockgränsen. Denna fördröjning resulterar i färre förbud för låshållare, vilket för prestandan närmare konfigurationer som använder den frivilliga företrädesmodellen. Således låter den nya modellen dig behålla fulla preemption-funktioner för realtidsuppgifter, men minimerar prestandaförsämring för vanliga uppgifter. Dessutom förenklar den nya modellen logiken i aktivitetsförbudsoperationer i kärnan genom att eliminera hanterare som finns i andra kärnkomponenter (utanför uppgiftsschemaläggaren) från schemaläggningsprocessen.
    • När man bygger med Clang-kompilatorn är det möjligt att använda optimeringar

      Källa: opennet.ru

Lägg en kommentar