Fast Kernel Headers, plaastrite komplekt, mis kiirendab tuuma kompileerimist 50–80%

Ingo Molnar, tuntud Linuxi tuuma arendaja ja CFS Task Scheduleri autor pakkus Linuxi kerneli arenduse meililistide arutelule välja rea ​​plaastreid, mis mõjutavad rohkem kui pooli kõigist kerneli allika failidest ja suurendavad kerneli kogu taasehitamise kiirust olenevalt konfiguratsioonist 50–80%.

Optimeerimine on rakendatud on tähelepanuväärne, kuna see on seotud suurima muudatuste komplekti lisamisega kerneli arendamise ajaloos - nad tegid ettepaneku lisada korraga 2297 plaastrit, muutes rohkem kui 25 tuhat faili.

Tulemuslikkuse suurenemine saavutatakse päisefaili käsitlemise meetodi muutmisega. Tuleb märkida, et kolmekümne aastase kerneli arendamise jooksul on päisefailide olek võtnud failidevahelise suure hulga ristsõltuvuste tõttu masendava kuju.

Päisefailide ümberkorraldamine kestis üle aasta ja nõudis hierarhia ja sõltuvuste olulist ümberkujundamist. Ümberkorraldamise käigus tehti tööd erinevate kerneli alamsüsteemide tüübimääratluste ja API-de eraldamiseks.

Mul on hea meel teatada oma uue projekti "Fast Kernel Headers" esimesest avalikust väljalasest, millega olen töötanud alates 2020. aasta lõpust. See on Linuxi tuuma päise hierarhia ja päise sõltuvuste põhjalik ümbertöötlemine, mille eesmärk on kaks korda suurem :

- kiirendada kerneli ehitamist (nii absoluutne kui ka järkjärguline ehitusaeg)

– alamsüsteemi tüübi ja API määratluste lahtisidumine üksteisest

Nagu enamik kerneli arendajaid teab, on Linuxi tuumas umbes ~10,000 30 peamist .h päist, hierarhiates include / ja arch/*/include/. Viimase XNUMX+ aasta jooksul on need arenenud keeruliseks ja valusaks ristsõltuvuste kogumiks, mida kutsume hellitavalt sõltuvuspõrguks.

Tehtud muudatuste hulgas on järgmised: kõrgetasemeliste päisefailide eraldamine üksteisest, päisefaile linkivate tekstisiseste funktsioonide välistamine, päisefailide vastendamine tüüpide ja API-de jaoks, eraldi päisefailide komplekti pakkumine (umbes 80 failil olid kaudsed sõltuvused, mis segasid koostamist, avalikustati teiste failide päisefailide kaudu), sõltuvuste automaatne lisamine ".h" ja ".c" failidele, päisefailide samm-sammult optimeerimine, režiimi "CONFIG_KALLSYMS_FAST=y" kasutamine, C-failide selektiivne konsolideerimine montaažiplokkideks objektifailide arvu vähendamiseks.

Selle tulemusena tehtud töö võimaldas vähendada töödeldud päisefailide mahtujäreltöötluse etapis 1-2 suurusjärku.

  • Näiteks enne optimeerimist lisati päisefaili "linux/gfp.h" kasutamisega 13543 koodirida ja kaasati 303 sõltuvat päisefaili ning pärast optimeerimist vähendati suurust 181 reale ja 26 sõltuvat faili.
  • Teine näide: faili "kernel/pid.c" eeltöötlemine ilma paigata ühendab 94 tuhat koodirida, millest enamikku pid.c-s ei kasutata. Päisefailide poolitamine võimaldas meil töödeldava koodi hulka kolm korda vähendada, vähendades töödeldud ridade arvu 36 tuhandeni.

Kui kernel ehitati täielikult ümber testsüsteemi käsuga "make -j96 vmlinux", näitas paikade rakendamine v5.16-rc7 haru ehitusaja lühenemist 231,34-lt 129,97-le 15,5 sekundile (27,7-lt XNUMX-le). ehitamisi tunnis) ja suurendas ka protsessori tuuma kasutamise tõhusust ehitamise ajal.

Järkjärgulise ehitamisega on optimeerimise efekt veelgi märgatavam: kerneli taasehitamiseks kuluv aeg pärast päisefailides muudatuste tegemist on oluliselt vähenenud (112%-lt 173%-le, olenevalt muudetavast päisefailist).

Optimeeringud on praegu saadaval ainult ARM64, MIPS, Sparci ja x86 (32-bitine ja 64-bitine) arhitektuuri jaoks.

Peenelt kui olete huvitatud sellest rohkem teada saama, saate üksikasju vaadata järgmine link.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.