Fast Kernel Headers, javítások készlete, amelyek 50-80%-kal felgyorsítják a kernelfordítást

Ingo Molnár, egy jól ismert Linux kernel fejlesztő és a CFS Task Scheduler szerzője A Linux kernel fejlesztési levelezőlistájához számos javítást javasoltak, amelyek a kernelforrásban található fájlok több mint felét érintik, és a konfigurációtól függően 50-80%-os általános kernel-újraépítési sebességnövekedést biztosítanak.

Az optimalizálás végrehajtva figyelemre méltó abból a szempontból, hogy a legnagyobb változtatáskészlet hozzáadásával jár a kernelfejlesztés történetében: 2297 javítást tűztek ki egyszerre, több mint 25 ezer fájl megváltoztatásával.

Teljesítménynövekedés a fejlécfájl-kezelési mód megváltoztatásával érhető el. Meg kell jegyezni, hogy a rendszermag harminc éves fejlesztése során a fejlécfájlok állapota lehangoló alakot öltött a fájlok közötti nagyszámú keresztfüggőség jelenléte miatt.

A fejlécfájlok átalakítása több mint egy évig tartott, és a hierarchia és a függőségek jelentős átalakítását igényelte. Az átalakítás során a különböző kernel-alrendszerekhez tartozó típusdefiníciók és API-k szétválasztására törekedtek.

Örömmel jelentem be új "Fast Kernel Headers" projektem első nyilvános verzióját, amelyen 2020 vége óta dolgozom. Ez a Linux kernelfejléc-hierarchia és a fejléc-függőségek átfogó átdolgozása, kettős céllal:

- felgyorsítja a kernel felépítését (abszolút és növekményes felépítési időket egyaránt)

- az alrendszer és a definíciók API típus-leválasztása egymástól

Mint a legtöbb kernelfejlesztő tudja, körülbelül 10,000 30 fő .h fejléc található a Linux kernelben, az include / és arch / * / include / hierarchiákban. Az elmúlt több mint XNUMX év során a keresztfüggőségek bonyolult és fájdalmas halmazává fejlődtek, amelyet szeretettel „függőségi pokolnak” nevezünk.

A végrehajtott változtatások között szerepel: a magas szintű fejlécfájlok elválasztása egymástól, a fejlécfájlokat összekapcsoló soron belüli függvények kizárása, a fejlécfájlok típusokhoz és API-khoz való hozzárendelése, külön fejlécfájlok készletének biztosítása (kb. 80 fájlnak volt közvetett függősége, amely zavarja az összeállítást, más fájlok fejlécfájljain keresztül), függőségek automatikus hozzáadása ".h" és ".c" fájlok, a fejlécfájlok lépésről lépésre történő optimalizálása, a "CONFIG_KALLSYMS_FAST = y" mód használata, a C fájlok szelektív konszolidálása összeállítási blokkokban az objektumfájlok számának csökkentése érdekében.

Ennek eredményeként az elvégzett munka lehetővé tette a feldolgozott fejlécfájlok méretének csökkentésétaz utófeldolgozási szakaszban 1-2 nagyságrenddel.

  • Például az optimalizálás előtt a „linux / gfp.h” fejlécfájl használata 13543 303 kódsor hozzáadását és 181 függő fejlécfájl beillesztését eredményezte, az optimalizálás után pedig a méret 26 sorra és XNUMX függő fájlra csökkent.
  • Egy másik példa: a javítatlan "kernel / pid.c" fájl előfeldolgozása 94 ezer kódsort köt össze, amelyek nagy részét a pid.c nem használja. A fejlécfájlok felosztása lehetővé tette, hogy háromszorosára csökkentsük a feldolgozott kód mennyiségét, így a feldolgozott sorok száma 36 XNUMX-re csökkent.

Amikor a kernelt teljesen átépítették a "make -j96 vmlinux" paranccsal a tesztrendszeren, a javítás a v5.16-rc7 ág fordítási idejének csökkenését mutatta 231,34-ről 129,97, 15,5 másodpercre (27,7-ről XNUMX-re buildenként óra), valamint növelte a CPU maghasználatának hatékonyságát a felépítés során.

A növekményes fordítással az optimalizálási hatás még szembetűnőbb: a fejlécfájlok módosítása után a kernel újraépítésének ideje jelentősen lecsökkent (112%-ról 173%-ra, attól függően, hogy melyik fejlécfájlt módosítjuk).

Az optimalizálás jelenleg csak az ARM64, MIPS, Sparc és x86 (32 bites és 64 bites) architektúrákhoz érhető el.

Finoman ha érdekel, hogy többet tudjon meg róla, ellenőrizheti a részleteket a következő link.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.