Alice Ryhl a Google-tól a Linux kernel Rust támogatásához kapcsolódóan dolgozik egy fontos fejlesztésen: a C segédfüggvények inline-olásán Rust kódba Link-Time Optimized (LTO) kernel build esetén. A javítások egy része a Linux 6.20~7.0 fejlesztési ciklus során kerülhet be, elősegítve a Rust kernel támogatás és az LLVM/Clang LTO képességeinek kombinált használatát a nagyobb teljesítmény érdekében.
Hogyan működik a fejlesztés
-
Minden Rust segédfüggvényhez hozzáadnak egy __rust_helper annotációt.
- Ez szükséges, mert a C segédfüggvények LTO mellett nem inline-olhatók Rust kódba a LLVM kódgenerálási beállításai miatt.
- LTO használatakor a __always_inline attribútum kerül hozzáadásra ezekhez a segédfüggvényekhez, kivéve a bindgen futtatásakor, hogy elkerüljék az inline-jelölés figyelmen kívül hagyását.
- Összesen 46 patch készült, amelyek a kernel különböző részein alkalmazzák ezt az annotációt. A patch-eket nem kell egyszerre elfogadni, a különböző subszisztémák karbantartóira van bízva a beolvasztásuk.
Elérhetőség és további lépések
- A patch-ek a vfs-7.0.rust Git ágon találhatók a VFS.git-ben, és itt már végrehajtották a C segédfüggvények inline-olását Rust kódba.
- A teljes sorozat elfogadása a különböző ágon még folyamatban van, és nem biztos, hogy az összes patch beépül a következő kernel ciklusra.
- Egy külön patch fogja kezelni a __rust_helper működésének összekapcsolását a kernel build folyamatával.
Teljesítmény előnyök
Az LTO-val épített Linux kernel LLVM/Clang használatával szignifikáns teljesítménynövekedést biztosít bizonyos helyzetekben. A Phoronix friss tesztjei is alátámasztják, hogy a Link-Time Optimization érdemben gyorsíthatja a kernel futását, különösen a Rust segédfüggvények és C-Rust hívások optimalizálásánál.
Ez a fejlesztés a Rust kernel támogatás számára mérföldkő lehet, különösen azoknak, akik LTO-t használó Clang/LLVM eszközlánccal építik a Linux kernelt a jövőben.

