Avaldatud on plaastrite komplekt, mis kiirendavad Linuxi kerneli ehitamist 50–80%

Tuntud Linuxi tuuma arendaja ja CFS-i (Completely Fair Scheduler) ülesannete planeerija autor Ingo Molnar pakkus Linuxi tuuma arendajate meililoendis aruteluks rea plaastreid, mis mõjutavad enam kui poolt kõigist tuumaallikates olevatest failidest ja suurendavad kerneli täieliku taasehitamise kiirust 50–80% võrra, olenevalt sätetest. Rakendatud optimeerimine on tähelepanuväärne selle poolest, et see hõlmab tuumaarenduse ajaloo suurimate muudatuste komplekti lisamist - korraga pakuti kaasamiseks 2297 plaastrit, muutes enam kui 25 tuhat faili (10 tuhat päisefaili jaotises "include/"). ja "arch/*/include/" kataloogid "ja 15 tuhat faili koos lähtetekstiga).

Jõudluse suurendamine saavutatakse päisefailide töötlemise meetodi muutmisega. Märgitakse, et üle kolmekümne aasta kestnud kerneli arendamise on päisefailide olek muutunud masendavaks, kuna failide vahel on palju ristsõltuvusi. Päisefaili ümberkorraldamine võttis aega üle aasta ning nõudis hierarhia ja sõltuvuste olulist ümbertöötamist. Ümberkorralduste käigus tehti tööd erinevate kerneli alamsüsteemide tüübimääratluste ja API-de eraldamiseks.

Tehtud muudatuste hulgas: kõrgetasemeliste päisefailide eraldamine üksteisest, päisefaile linkivate sisemiste funktsioonide kaotamine, päisefailide eraldamine tüüpide ja API-de jaoks, päisefailide eraldi kokkupanemise tagamine (umbes 80 failil olid kokkupanekut segavad kaudsed sõltuvused, mis avalikustati muud päisefailid), sõltuvuste automaatne lisamine failidele “.h” ja “.c”, päisefailide samm-sammult optimeerimine, režiimi “CONFIG_KALLSYMS_FAST=y” kasutamine, C-failide selektiivne konsolideerimine montaažiplokkideks vähendada objektifailide arvu.

Selle tulemusena võimaldas tehtud töö vähendada järeltöötluse etapis töödeldavate päisefailide suurust 1-2 suurusjärgu võrra. Näiteks enne optimeerimist lisati päisefaili “linux/gfp.h” kasutamine 13543 koodirida ja kaasati 303 sõltuvat päisefaili ning pärast optimeerimist vähendati suurust 181 reale ja 26 sõltuvale failile. Või teine ​​näide: ilma paigata faili “kernel/pid.c” eeltöötlemisel kaasatakse 94 tuhat koodirida, millest enamikku pid.c-s ei kasutata. Päisefailide eraldamine võimaldas 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 sekundilt 129.97 sekundile (15.5-lt 27.7-le). tunnis) ja suurendas ka CPU tuumade kasutamise efektiivsust koostude ajal. Inkrementaalse ehitamise puhul on optimeerimise mõju veelgi märgatavam – kerneli uuesti ehitamise 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, Sparc ja x86 (32- ja 64-bitiste) arhitektuuride jaoks.

Allikas: opennet.ru

Lisa kommentaar