Ingo Molnar, tuntud Linuxi kerneli arendaja ja Completely Fair Scheduleri (CFS) looja, on esitanud arutamiseks Linuxi kerneli arendajate meilisĂ”numite nimekirjas seeria plaastrite kohta, mis mĂ”jutavad enam kui poolt kĂ”igist kerneli lĂ€htekoodifailidest ning vĂ”imaldavad kernelit tĂ€ielikult uuesti kompileerides kiirusincrease kuni 50-80%, sĂ”ltuvalt seadistustest. Tehtud optimeerimine on tĂ€helepanuvÀÀrne seetĂ”ttu, et see on seotud suurima muudatuskomplekti lisamisega kerneli arendamise ajaloos â ĂŒhe korraga on pakkuda 2297 plaastrit, mis muudavad ĂŒle 25 000 faili (10 000 pĂ€ise faili kaustades âinclude/â ja âarch/*/include/â ning 15 000 lĂ€htekoodifaili).
JĂ”udluse tĂ”us saavutatakse pĂ€isefailide töötlemismeetodi muutmise kaudu. TĂ€heldatakse, et kolmekĂŒmne aasta jooksul kerneli arendamist on pĂ€isefailide seis halvenenud paljude failide vaheliste keeruliste sĂ”ltuvuste tĂ”ttu. Töö pĂ€isefailide ĂŒmberstruktureerimiseks kestis rohkem kui aasta ja nĂ”udis mĂ€rkimisvÀÀrset redigeerimist hierarhias ja sĂ”ltuvustes. Ămberstruktureerimise kĂ€igus tehti töö tĂŒĂŒpide ja API definitsioonide eraldamiseks erinevate kerneli alamsĂŒsteemide jaoks.
TĂ€htsate muudatuste hulka kuulub: kĂ”rgemate pĂ€isefailide eraldamine ĂŒksteisest, siduvate inline-funktsioonide pĂ€isefailide eemaldamine, pĂ€isefailide eraldamine tĂŒĂŒpide ja API jaoks, pĂ€isefailide eraldi koostamise tagamine (umbes 80 faili omasid segavaid sĂ”ltuvusi, mis mĂ”jutavad koostamist teiste pĂ€isefailide kaudu), automaatne sĂ”ltuvuste lisamine â.hâ ja â.câ failidele, pĂ€isefailide jĂ€rkjĂ€rguline optimeerimine, âCONFIG_KALLSYMS_FAST=yâ reĆŸiimi kasutamine, C-failide valikuline konsolideerimine koostamisplokkideks objekti failide arvu vĂ€hendamiseks.
Töötulemused vÔimaldasid pealkirjafailide suurust vÀhendada 1-2 jÀrku, mis töödeldi postprotsessimise etapis. NÀiteks enne optimeerimist lisas pealkirjafail «linux/gfp.h» 13543 koodirida ja vajalike pealkirjafailide koguarv oli 303. PÀrast optimeerimist vÀhenes suurus 181 reale ja 26 vajalikele failidele. Teine nÀide: failide «kernel/pid.c» eeltöötlus ilma plaastrita hÔlmas 94 tuhat koodirida, millest enamik ei olnud pid.c-s kasutusel. Pealkirjafailide eraldamine vÔimaldas vÀhendada töödeldava koodi hulka kolm korda, vÀhendades töödeldavate ridade arvu 36 tuhandele.
TĂ€ieliku tuuma taasestamise kĂ€igus kĂ€suga «make -j96 vmlinux» testimasĂŒsteemis osutas plaastrite rakendamine tuuma haru v5.16-rc7 kompileerimise aja vĂ€hendamisele 231,34 sekundilt 129,97 sekundile (15,5-ni kuni 27,7 kompileerimist tunnis) ning parandas ka CPU tuumade kasutuse efektiivsust kompileerimise ajal. Inkremendilisel taasestamisel on optimeerimise mĂ”ju veelgi mĂ€rgatavam â pealkirjafailide muudatuste jĂ€rel tuuma taasestamise aeg vĂ€henes oluliselt (112% kuni 173% sĂ”ltuvalt muudetud pealkirjafailist). Optimeerimised on hetkel saadaval ainult arhitektuuridele ARM64, MIPS, Sparc ja x86 (32- ja 64-bit).
Allikas: opennet.ru
