Rust bude možná už v jádru 5.20, XFS zrychluje díky IO_uring

24. 6. 2022
Doba čtení: 4 minuty

Sdílet

 Autor: Depositphotos
První část novinek mířících do Linuxu 5.20. Vedle Rustu a XFS jde také o (ne)podporu stařičké VMEbus v Linuxu, rychlejší scrollování při startu pro FBDEV či jak Multi-Gen LRU zrychlí různé typy úloh.

Rychlejší scrollování při startu pro staré ovladače FBDEV

Do větve DRM-Misc-Next zamířil pull request zahrnující několik novinek, z nichž jedna představuje zvýšení rychlosti scrollingu pro frame-buffer console (FBCON) tam, kde je současně zobrazeno logo (například ikony Tuxe v počtu CPU jader). Zvýšení výkonu v těchto záplatách se netýká čehokoli relativně modernějšího běžícího před DRM, jen a pouze starého dobrého běhu s frame-bufferem přes příslušné ovladače zajišťující jeho akceleraci (v souvislosti s jinak uplatňovaným omezením na úrovni 9600baudové terminálové linky). Vše shrnuje Thomas Zimmermann ze SUSE.

Async Buffered Writes pro XFS s IO_uring

Známý stíhač I/O výkonu a správce příslušné části jádra Jens Axboe zasílá do budoucího Linuxu 5.20 práci vývojářů na asynchronních bufferovaných zápisech u souborového systému XFS při použití IO_uring. Pro XFS by to mělo znamenat výrazný nárůst výkonu v zápisech.

Vedoucí vývoje tohoto kódu, Stefan Roesch z Meta (Facebook), k tomu uvádí, že tato sada patchů mění dosavadní přístup, kdy IO_uring podporoval bufferované zápisy pomalou cestou (slow path) na rychlou cestu (fast path). Vyžaduje to, aby příslušné stránky byly ve stánkové cache, pak mohou být příslušné zámky u XFS zpřístupněny okamžitě a není potřeba sahat na žádné další bloky na disku. Výkonově to vypadá slibně (viz popis sady patchů), tam kde sekvenční zápis nyní dával 77k IOPS, roste výkon na 209k IOPS, propustnost z 314 na 854 MB/s a latence klesá z 9 600 ns na 120 ns. Jens Axboe pak dodává, že se již pracuje na implementaci pro další souborové systémy, pro příští verzi by měl jít o btrfs.

S Multi-Gen LRU zrychlí různé typy úloh

Jak praví tl;dr vývojářů Googlu, současná implementace pro page reclaim v jádru je neefektivní, z hlediska CPU cyklů nákladná a ne vždy zvolí optimální řešení, co zahodit nejdřív. Proto v Googlu již delší dobu vyvíjejí nový mechanismus nazvaný Multi-Gen LRU alias MGLRU, který má nyní už 12. generaci patchů a vypadá to, že začlenění do jádra 5.20 se dočká. Pokud se tak stane, pak s jádrem od verze 5.20 stoupne výkon systému v mnoha reálných typech úloh.

Google už MGLRU používá v Androidu a Chrome OS a technika je používána roznými variantami linuxového jádra, Phoronix zmiňuje XanMod, Liquorix či Arch Linux Zen kernel.

Rust možná už v jádru 5.20

Na závěr trochu odbočme od patchů, které míří od začlenění k povídání Linuse Torvaldse s Dirkem Hohndelem na Open-Source Summit pořádaném The Linux Foundation. Linus se zde vyjádřil, že použití kódu psaného v Rustu v rámci linuxového jádra (resp. Rustové infrastruktury) je už blízko a dojde na něj nejspíš už s příštím vydáním. Phoronix dodává, že zatím neexistuje žádný pull request zaslaný či dokonce schválený, který by Rust řešil, nicméně dobrat se lze základního kódu pro aktivaci podpory Rustu, základních vzorových ovladačů apod.

V tuto chvíli i přes výrazný vývoj podpory Rustu v Linuxu za poslední měsíc, je podpora zatím stále jen volitelná při sestavování jádra. Začleňovací okno pro jádro 5.20 – připomeňme – se otevře po vydání Linuxu 5.19 (aktuálně máme -rc3 verzi), tedy někdy na konci července, takže vývojáři, kteří na Rustu pracují, mají ještě dostatek času doladit případné patche přeměnivší se za několik týdnů v pull requesty.

bitcoin_skoleni

Podpora VMEbus míří pryč z jádra

Trocha archeologie na úplný závěr. Dávno před zrozením první verze Linuxu vznikl standard Versa Module Eurocard „VMEbus“ související s procesory Motorola 68000. Ten se v průmyslu využíval po léta, vlastně i teď. Na Linuxu ale neměl nikdy na růžích ustláno, samotné rozhraní se sice před dekádou dostalo ze Staging větve do hlavního jádra, ale ovladače pro něj nikoli. Několik posledních let je ani ve Staging víceméně nikdo neudržuje, takže se není čemu divit, že nejnovější patch posílá ovladač CA91CX42 Universe-II pryč z jádra a Arnd Bergmann připravuje odsunutí celého VME subsystému zase do Staging větve.

Dodává k tomu, že ty čtyři zbývající ovladače používají starodávné rozhraní virt_to_bus(), nikoli nějaké s DMA mapováním, což je beztak činí nekompatibilní s většinou moderního železa. Nikdo tuto věc neopravil a je poměrně vysoká pravděpodobnost, že ty ovladače ani nikdo nepoužívá. Daný čip byl uveden v roce 1997 a podporuje pouze staré 32bit PCI rozhraní a v roce 2004 je nahradilo moernější řešení TSI148, které už bylo ukončeno (původní Universe II se však vyrábí i nyní o 25 let později). Na druhou stranu však Phoronix odkazuje na zajímavou prezentaci CERNu [60str. PDF], která vtipně zasazuje VMEbus do kontextu doby (Válka o Falklandy, založení Sun Microsystems, vydání alba Thriller) a také konstatuje, že v CERNu se používá více než 1000 systémů s VMEbus.

Autor článku

Příznivec open-source rád píšící i o ne-IT tématech. Odpůrce softwarových patentů a omezování občanských svobod ve prospěch korporací.