Po dvou měsících vývoje představil Linus Torvalds vydání jádra Linux 6.13. Mezi nejvýraznějšími změnami jsou: režim líného vytlačování v plánovači úloh, podpora atomického zápisu v XFS a Ext4, mechanismus „multigrain timestamps“, adaptivní režim zapínání pollingu v síťovém subsystému, možnost kompilace s optimalizacemi AutoFDO, podpora mechanismu ochrany ARM65 Guarded Control Stack, izolace virtuálních strojů pomocí rozšíření ARM CCA, oddělené zásobníky v BPF, odstranění ReiserFS, ovladač virtual-cpufreq, netlink API net-shaper, režim mountování tmpfs s ohledem na velká a malá písmena, podpora POSIX rozšíření v SMB3 a ovladač AMD Cache Optimizer.
Do nové verze bylo zahrnuto 14172 opravy od 2086 vývojářů, velikost patchu činí 46 MB (změny se dotkly 15375 souborů, bylo přidáno 598707 řádků kódu a odstraněno 406294 řádků). V minulém vydání bylo 14607 oprav od 2167 vývojářů, velikost patchu činila 37 MB. Přibližně 52 % všech změn v 6.13 souvisí s ovladači zařízení, asi 13 % změn se týká aktualizace kódu specifického pro hardwarové architektury, 11 % se vztahuje k síťovému stacku, 4 % k souborovým systémům a 3 % k interním subsystémům jádra.
Hlavní novinky v jádru 6.13:
- Diskový subsystém, vstup/výstup a souborové systémy
- Byl přidán mechanismus „multigrain timestamps“, který umožňuje získat informace o čase změny nebo přístupu k souborům s přesností méně než milisekunda, ale bez negativního vlivu na výkon. Zvýšení přesnosti značek vede k dodatečným nákladům v důsledku zvýšené intenzity zápisu metadat na disk, proto v navržené implementaci jsou přesnější značky vytvářeny ne pro všechny soubory, ale pouze pro ty, pro které procesy žádají podobné značky prostřednictvím volání getattr().
- Byla přidána podpora atomických zápisových operací, při nichž se zápis dat, jejichž velikost přesahuje velikost sektoru, provádí atomicky na úložných zařízeních, která tuto možnost poskytují. V současné době je atomický zápis realizován pro XFS, Ext4 v režimu O_DIRECT (Direct I/O) a md RAID 0/1/10.
- Byl navržen nový mechanismus počítání odkazů pro soubory, který zajišťuje zvýšení výkonu o 3-5 % při pracovních zátěžích s více než 255 vlákny.
- Byla odstraněna implementace souborového systému ReiserFS, který byl před dvěma lety vyhlášen jako zastaralý.
- Byl přidán sysctl parametr „fs.dentry-negative“ pro nastavení politiky čištění „dentry“ záznamů (interní reprezentace položek adresářů) v VFS po odstranění souvisejících souborů. Pro některé typy zátěže je výhodnější nechávat podobné záznamy o odstraněných souborech, zatímco pro jiné je lepší je odstranit, proto je v jádře tato možnost. (výchozí nastavení: „dentry“ se automaticky nemazou).
- Do systémového volání statmount() byl přidán příznak STATMOUNT_OPT_ARRAY pro vracení seznamu voleb souborového systému ve formě pole řetězců, které končí nulovým znakem a nevyužívají únik „\000“. Byla přidána podpora pro vracení podtypu FS (fs_subtype, pro určení použití FUSE), voleb bezpečného montování a zdrojového superbloku (sb_source).
- V OverlayFS byla přidána možnost specifikace vrstev prostřednictvím popisovačů souborů, nikoli názvů cest k souborům.
- Do souborového systému tmpfs byla přidána opce montování „casefold“ pro práci bez ohledu na velká a malá písmena a opce „strict_encoding“ pro blokování vytváření souborů s názvy obsahujícími neplatné znaky UTF-8.
- Byl navržen nový soubor systémových volání pro správu rozšířených atributů souborů: setxattrat(), getxattrat(), listxattrat() a removexattrat(). Na rozdíl od systémových volání setxattr(), getxattr(), listxattr() a removexattr() nové varianty vyžadují určení popisovače souboru adresáře, vůči kterému se provádí vyhledávání cesty k souboru.
- Do Btrfs byla přidána ioctl operace BTRFS_IOC_SUBVOL_SYNC_WAIT, zahrnující čekání na dokončení čištění podobjektů, což umožňuje provést příkaz „btrfs subvolume sync“ neprivilegovaným uživatelem, který nemá přístup k ioctl SEARCH_TREE (užitečné v aplikacích zálohování, čisticích podobjekty). Byla přidána ioctl operace ENCODED_READ pro čtení zakódovaných dat prostřednictvím io_uring, například čtení přímo komprimovaných extents bez dekomprese. Pokračuje práce na přechodu na použití stránek paměti (page folios). Bylo sníženo výskyt soutěžících zámků („lock contention“) při vyhledávání vestavěných referencí a při procházení bufferů extents. Byla zvýšena účinnost komprese mapy extentů.
- Ve файловém systému EROFS (Rozšiřitelný pouze pro čtení souborový systém), určeném pro použití na oddílech přístupných pouze pro čtení, byla zavedena možnost použití v systémovém volání lseek() voleb SEEK_HOLE a SEEK_DATA.
- Ve F2FS byla přidána podpora aliasování zařízení, která umožňuje dočasně rezervovat prostor ve F2FS pro použití části blokového zařízení v jiném souborovém systému. Po dokončení externí operace lze rezervovaný prostor vrátit do F2FS. Například je možné vytvořit souborový systém příkazem "mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb", po kterém bude obsah zařízení /dev/vdc rezervován a odražen do souboru vdc.file, a oddíl /dev/vdc lze použít pro vlastní potřeby, například naformátovat jej pro jiný souborový systém. Pro vrácení rezervovaného obsahu stačí smazat soubor vdc.file.
- Ve XFS byla zavedena podpora kvót pro realtime zařízení. Byla přidána podpora adresáře s metadaty, ve kterém jsou umístěny všechny inode s metadaty.
- V mechanismu FUSE byla přidána možnost dynamicky měnit maximální počet stránek (FUSE_MAX_MAX_PAGES) pomocí "sysctl fs.fuse.max_pages_limit". V provozu jsou zapojeny stránky paměti (page folios).
- V SMB byla implementována podpora rozšíření POSIX pro SMB3, která jsou nezbytná pro uložení speciálních typů souborů, jako jsou fifo, soubory zařízení a symbolické odkazy. Byla přidána možnost připojení oddílu s alternativním heslem, které se používá při rotaci hesel. Byla přidána nová možnost připojení „cifs.upcall“ pro určení jmenného prostoru. Bylo zajištěno rozpoznávání prostorových a blokových zařízení, která byla vytvořena ve Windows NFS Server. Byla přidána podpora symbolických odkazů ve stylu WSL (Windows Subsystem for Linux).
- Souborové systémy UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS a ECRYPTFS byly převedeny na nový API pro připojení oddílů.
- Souborové systémy ECRYPTFS, UFS a NILFS2 byly převedeny na použití stránek paměti (page folios).
- Paměť a systémové služby
- V plánovači je implementován model líného vyhazování úloh (PREEMPT_LAZY, lazy preemption), který odpovídá modelu plného vyhazování („full preemption“) pro realtime úlohy (RR/FIFO/DEADLINE), ale zpožďuje vyhazování běžných úloh (SCHED_NORMAL) do hranice tiků. Uvedené zpoždění vede k omezení případů vyhazování držitelů zámků, což umožňuje přiblížit výkon k konfiguracím využívajícím model dobrovolného vyhazování (voluntary preemption). Nový model tedy zachovává možnosti plného vyhazování v oblasti realtime úloh, ale minimalizuje pokles výkonu pro běžné úlohy. Kromě toho nový model zjednodušuje logiku operací vyhazování úloh v jádře tím, že vylučuje z plánovacího procesu obsluhy nacházející se v jiných komponentách jádra (mimo plánovač úloh).
- Při sestavování kompilátorem Clang je umožněno používat optimalizace
Zdroj: opennet.ru
