Greitos branduolio antraštės – pataisų rinkinys, pagreitinantis branduolio kompiliavimą 50–80 %

Ingo Molnaras, gerai žinomas Linux branduolio kūrėjas ir CFS Task Scheduler autorius Linux branduolio kūrimo adresų sąrašo diskusijoms pasiūlė keletą pataisų, kurios paveikia daugiau nei pusę visų branduolio šaltinio failų ir padidina bendrą branduolio atkūrimo greitį 50–80%, priklausomai nuo konfigūracijos.

Optimizavimas įgyvendintas yra pastebimas tuo, kad yra susijęs su didžiausio pakeitimų rinkinio pridėjimu branduolio kūrimo istorijoje: jie užsibrėžė vienu metu įtraukti 2297 pataisas, pakeičiant daugiau nei 25 tūkstančius failų.

Našumo padidėjimas pasiekiamas pakeitus antraštės failų tvarkymo metodą. Reikėtų pažymėti, kad per trisdešimt branduolio kūrimo metų antraštės failų būklė įgavo slogią formą, nes tarp failų yra daug kryžminių priklausomybių.

Antraštės failų pertvarka užtruko daugiau nei metus ir pareikalavo gerokai perdaryti hierarchiją ir priklausomybes. Restruktūrizavimo metu buvo atliktas darbas siekiant atskirti skirtingų branduolio posistemių tipų apibrėžimus ir API.

Džiaugiuosi galėdamas pranešti apie pirmąjį savo naujojo „Greitos branduolio antraštės“ projekto, su kuriuo dirbau nuo 2020 m. pabaigos, išleidimą. Tai yra visapusiškas „Linux“ branduolio antraštės hierarchijos ir antraščių priklausomybių pertvarkymas, kurio tikslas yra dvigubai didesnis nei :

- pagreitinti branduolio kūrimą (ir absoliutus, ir laipsniškas kūrimo laikas)

– posistemio tipo ir API apibrėžimų atsiejimas vienas nuo kito

Kaip žino dauguma branduolio kūrėjų, Linux branduolyje, įtraukiant / ir arch/*/include/ hierarchijose, yra apie 10,000 30 pagrindinių .h antraščių. Per pastaruosius XNUMX ir daugiau metų jie išsivystė į sudėtingą ir skausmingą kryžminių priklausomybių rinkinį, kurį švelniai vadiname „priklausomybės pragaru“.

Tarp atliktų pakeitimų yra: aukšto lygio antraščių failų atskyrimas vienas nuo kito, įterptųjų funkcijų, jungiančių antraščių failus, pašalinimas, antraščių failų tipų ir API susiejimas, atskiro antraščių failų rinkinio suteikimas (apie 80 failų turėjo netiesioginių priklausomybių, trukdančių surinkti, atskleisti per kitus failų antraštės failus), automatinis priklausomybių pridėjimas „.h“ ir „.c“ failai, žingsnis po žingsnio antraštės failų optimizavimas, „CONFIG_KALLSYMS_FAST = y“ režimo naudojimas, selektyvus C failų konsolidavimas į surinkimo blokus, siekiant sumažinti objektų failų skaičių.

Kaip rezultatas, atliktas darbas leido sumažinti apdorojamų antraščių failų dydįišankstinio apdorojimo etape 1–2 eilėmis.

  • Pavyzdžiui, prieš optimizavimą naudojant antraštės failą „linux / gfp.h“ buvo pridėtos 13543 303 kodo eilutės ir 181 priklausomi antraščių failai, o po optimizavimo dydis sumažėjo iki 26 eilutės ir XNUMX priklausomų failų.
  • Kitas pavyzdys: išankstinis failo „kernel/pid.c“ apdorojimas be pataisos sujungia 94 tūkstančius kodo eilučių, kurių dauguma nenaudojama pid.c. Antraštės failų padalijimas leido tris kartus sumažinti apdorojamo kodo kiekį, o apdorojamų eilučių skaičius sumažėjo iki 36 tūkst.

Kai branduolys buvo visiškai atkurtas naudojant komandą „make -j96 vmlinux“ bandomojoje sistemoje, pataisymas parodė, kad v5.16-rc7 šakos kompiliavimo laikas sumažėjo nuo 231,34 iki 129,97 15,5 sekundžių (nuo 27,7 iki XNUMX versijos per vieną valandą) ir taip pat padidino procesoriaus branduolio naudojimo efektyvumą kūrimo metu.

Naudojant laipsnišką kompiliavimą, optimizavimo efektas yra dar labiau pastebimas: laikas, per kurį reikia atkurti branduolį po antraštės failų pakeitimų, žymiai sutrumpėjo (nuo 112% iki 173%, priklausomai nuo pakeisto antraštės failo).

Šiuo metu galima optimizuoti tik ARM64, MIPS, Sparc ir x86 (32 bitų ir 64 bitų) architektūrai.

Smulkiai jei norite sužinoti daugiau apie tai, išsamią informaciją galite patikrinti sekanti nuoroda.


Būkite pirmas, kuris pakomentuos

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.