Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds releasen av kÀrnan Linux 6.13. Bland de mest framtrÀdande förÀndringarna finns: en lat utflyttningsmetod i schemalÀggaren, stöd för atomÀr skrivning i XFS och Ext4, en mekanism för "multigrain timestamps", adaptiv polling-aktivering i nÀtverksunderlaget, möjlighet till kompilering med AutoFDO-optimeringar, stöd för skyddsmekanismen ARM65 Guarded Control Stack, isolering av virtuella maskiner via ARM CCA-tillÀgget, separata stackar i BPF, borttagning av ReiserFS, drivrutinen virtual-cpufreq, netlink API net-shaper, och ett tmpfs-monteringslÀge med storleksberoende registerhantering, samt stöd för POSIX-förlÀngningar i SMB3, och drivrutinen AMD Cache Optimizer.
Den nya versionen innehÄller 14172 korrigeringar frÄn 2086 utvecklare, patchens storlek Àr 46 MB (Àndringarna berörde 15375 filer, 598707 rader kod lades till, och 406294 rader tog bort). I den senaste utgÄvan var det 14607 korrigeringar frÄn 2167 utvecklare, och patchens storlek var 37 MB. Cirka 52% av alla Àndringar i 6.13 Àr relaterade till enhetsdrivrutiner, ungefÀr 13% av Àndringarna har att göra med uppdateringar av arkitekturspecifik kod, 11% rör nÀtverksstacken, 4% gÀller filsystem och 3% interna system i kÀrnan.
Huvudnyheterna i kÀrnan 6.13:
- Disksubsystem, in- och utmatning och filsystem
- En mekanism för "multigrain timestamps" har lagts till, vilket möjliggör att fÄ information om tidpunkten för Àndring eller Ätkomst av filer med mer Àn millisekundprecision, utan negativ pÄverkan pÄ prestanda. Att öka precisionen av tidsstÀmplarna leder till ytterligare overhead pÄ grund av ökad skrivintensitet av metadata pÄ disken, sÄ i den föreslagna implementationen skapas mer precisa stÀmplar inte för alla filer, utan endast för de filer dÀr processer begÀr sÄdana stÀmplar via anropet getattr().
- Stöd för atomÀra skrivoperationer har lagts till, dÀr skrivning av data som överstiger sektorns storlek görs atomÀrt pÄ lagringsenheter som tillhandahÄller sÄdan möjlighet. För nÀrvarande Àr atomÀr skrivning implementerad för XFS och Ext4 i lÀget O_DIRECT (Direct I/O) samt md RAID 0/1/10.
- En ny mekanism för referensrÀkning för filer har föreslagits, vilket ger en prestandaökning pÄ 3-5% i arbetsbelastningar med mer Àn 255 trÄdar.
- Implementeringen av filsystemet ReiserFS har tagits bort, vilket förra Äret förklarades som förÄldrat.
- En sysctl-parameter "fs.dentry-negative" har lagts till för att stÀlla in VFS:s policy för att rensa "dentry"-poster (det interna representationssÀttet för katalogelement) efter att relaterade filer har tagits bort. För vissa typer av belastning Àr det fördelaktigare att behÄlla sÄdana poster för raderade filer, medan det för andra Àr bÀttre att ta bort dem, dÀrför har möjlighet till val i kÀrnan tillhandahÄllits (standardinstÀllningen Àr att "dentry" automatiskt inte tas bort).
- I systemanropet statmount() har flaggan STATMOUNT_OPT_ARRAY lagts till för att returnera en lista över filsystemalternativ som en array av strÀngar som slutar med nolltecken och utan att anvÀnda "\000"-escapement. Stöd har lagts till för att returnera undertyp av FS (fs_subtype, för att bestÀmma anvÀndningen av FUSE), alternativ för sÀker montering samt den ursprungliga superblocket (sb_source).
- I OverlayFS har möjligheten att specificera lager genom filbeskrivare istÀllet för filvÀgsnamn tillkommit.
- Till filsystemet tmpfs har alternativet "casefold" för montering lagts till för att fungera utan hÀnsyn till teckenstorlek och alternativet "strict_encoding" för att blockera skapandet av filer med namn som innehÄller ogiltiga UTF-8-tecken.
- Ett nytt sett 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 varianterna att filbeskrivaren för katalogen, i förhÄllande till vilket filvÀgen söks, anges.
- I Btrfs har ioctl-operationen BTRFS_IOC_SUBVOL_SYNC_WAIT lagts till, vilket inkluderar att vÀnta pÄ att rensningen av undervolymer ska slutföras, vilket gör det möjligt för en oprivilegierad anvÀndare utan Ätkomst till ioctl SEARCH_TREE att utföra kommandot "btrfs subvolume sync" (nyttigt i backupapplikationer som rensar undervolymer). Ioctl-operationen ENCODED_READ har lagts till för att lÀsa kodade data via io_uring, till exempel för att lÀsa direkt frÄn komprimerade extents utan att packa upp. Arbetet fortgÄr med att övergÄ till anvÀndning av sidoföljder av minne (page folios). Förekomsten av konkurrerande lÄsningar har minskats nÀr man söker efter inbyggda bakÄtreferenser och vid iterering genom extents buffertar. Effektiviteten i komprimeringen av extentkartor har ökat.
- I filsystemet EROFS (Extendable Read-Only File System), avsett för anvÀndning pÄ partitioner som Àr tillgÀngliga i skrivskyddat lÀge, har möjligheten att anvÀnda alternativen SEEK_HOLE och SEEK_DATA i systemanropet lseek() implementerats.
- I F2FS har stöd för enhetsreflektion ('device aliasing') lagts till, vilket gör det möjligt att tillfÀlligt reservera ett omrÄde i F2FS för att anvÀnda en del av en blockenhet i ett annat filsystem. Efter att den externa operationen har slutförts kan det reserverade omrÄdet Äterföras till F2FS. Till exempel kan ett filsystem skapas med kommandot 'mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb', varvid innehÄllet pÄ enheten /dev/vdc kommer att reserveras och Äterspeglas i filen vdc.file, och partitionen /dev/vdc kan anvÀndas för egna behov, till exempel formateras till ett annat filsystem. För att Äterföra det reserverade innehÄllet rÀcker det med att ta bort filen vdc.file.
- I XFS har stöd för kvoter för realtime-enheter lagts till. Stöd för en metadata-katalog har införts, dÀr alla inoder med metadata placeras.
- I FUSE-mekanismen har möjligheten att dynamiskt Àndra det maximala antalet sidor (FUSE_MAX_MAX_PAGES) inkluderats genom att anvÀnda 'sysctl fs.fuse.max_pages_limit'. Arbetet involverar sidfollor (page folios).
- I SMB har stöd för POSIX-förlÀngningar för SMB3 implementerats, vilket Àr nödvÀndigt för lagring av sÀrskilda filtyper, sÄsom fifo, enhetsfiler och symboliska lÀnkar. Möjligheten att montera en partition med ett alternativt lösenord som anvÀnds vid lösenordsrotation har lagts till. En ny monteringsalternativ 'cifs.upcall' har introducerats för att bestÀmma namnrymden. Vidare har stöd för igenkÀnning av symboliska och blockenhetsfiler skapade i Windows NFS Server lagts till. Stöd för symboliska lÀnkar i WSL-stil (Windows Subsystem for Linux) har ocksÄ implementerats.
- Filsystemen UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS och ECRYPTFS har övergÄtt till att anvÀnda det nya API:t för att montera partitioner.
- Filsystemen ECRYPTFS, UFS och NILFS2 har övergÄtt till att anvÀnda sidfollor (page folios).
- Minne och systemtjÀnster
- I schemasmugningsmodellen implementeras i schemalÀggaren en modell för lat undantrÀngning av uppgifter (PREEMPT_LAZY, lat undantrÀngning), som motsvarar modellen för fullstÀndig undantrÀngning ("full preemption") för realtidsuppgifter (RR/FIFO/DEADLINE), men skjuter upp undantrÀngningen av vanliga uppgifter (SCHED_NORMAL) tills tikkans grÀns. Denna angivna fördröjning leder till fÀrre fall av undantrÀngning av lÄs-hÄllare, vilket gör det möjligt att nÀrma sig prestandan hos konfigurationer som anvÀnder modellen för frivillig undantrÀngning (voluntary preemption). SÄledes möjliggör den nya modellen att bevara möjligheterna för fullstÀndig undantrÀngning i förhÄllande till realtidsuppgifter, men minimerar prestandaförlusten för vanliga uppgifter. Dessutom förenklar den nya modellen logiken för undantrÀngningsoperationer i kÀrnan genom att utesluta hanterare som finns i andra komponenter av kÀrnan (utanför schemalÀggaren).
- Vid kompilering med Clang Àr det möjligt att anvÀnda optimeringar
KĂ€lla: opennet.ru
