Paskelbtas pataisų rinkinys, kuris pagreitina Linux branduolio kūrimą 50–80 proc.

Ingo Molnaras, gerai žinomas Linux branduolio kūrėjas ir užduočių planuotojo CFS (Completely Fair Scheduler) autorius, pasiūlė aptarti Linux branduolio kūrėjų adresų sąraše keletą pataisų, kurios paveikia daugiau nei pusę visų branduolio šaltinių failų ir padidinti viso branduolio atkūrimo greitį 50–80%, priklausomai nuo nustatymų. Įdiegtas optimizavimas vertas dėmesio tuo, kad jis yra susijęs su didžiausiu branduolio kūrimo istorijoje pakeitimų rinkiniu - vienu metu buvo pasiūlyta įtraukti 2297 pataisas, pakeitus daugiau nei 25 tūkst. failų (10 tūkst. antraštės failų „įtraukti /“ ir „arch/*/include/“ katalogai „ir 15 tūkstančių failų su šaltinio tekstais).

Našumo padidėjimas pasiekiamas pakeitus antraštės failų apdorojimo metodą. Pastebima, kad per trisdešimt branduolio kūrimo metų antraštės failų būsena įgavo slogią išvaizdą, nes tarp failų yra daug kryžminių priklausomybių. Antraštės failo restruktūrizavimas užtruko daugiau nei metus, todėl reikėjo gerokai pakeisti hierarchiją ir priklausomybes. Restruktūrizavimo metu buvo atliktas darbas siekiant atskirti skirtingų branduolio posistemių tipų apibrėžimus ir API.

Tarp atliktų pakeitimų: aukšto lygio antraščių failų atskyrimas vienas nuo kito, įterptųjų funkcijų, kurios susieja antraščių failus, panaikinimas, antraščių failų atskyrimas pagal tipus ir API, atskiro antraščių failų surinkimo užtikrinimas (apie 80 failų turėjo netiesioginių priklausomybių, trukdančių surinkimui, atskleistos per kiti antraštės failai), automatinis priklausomybių pridėjimas prie „.h“ ir „.c“ failų, laipsniškas antraščių failų optimizavimas, „CONFIG_KALLSYMS_FAST=y“ režimo naudojimas, selektyvus C failų konsolidavimas į surinkimo blokus sumažinti objektų failų skaičių.

Dėl to atliktas darbas leido sumažinti antraštės failų, apdorojamų išankstinio apdorojimo etape, dydį 1–2 dydžiais. Pavyzdžiui, prieš optimizavimą naudojant antraštės failą „linux/gfp.h“ buvo pridėtos 13543 kodo eilutės ir 303 priklausomi antraščių failai, o po optimizavimo dydis sumažėjo iki 181 eilutės ir 26 priklausomų failų. Arba kitas pavyzdys: iš anksto apdorojant failą „kernel/pid.c“ be pataisos, įtraukiama 94 tūkstančiai kodo eilučių, kurių dauguma nenaudojama pid.c. Antraštės failų atskyrimas 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, pataisų taikymas parodė, kad v5.16-rc7 šakos kūrimo laikas sumažėjo nuo 231.34 iki 129.97 sekundės (nuo 15.5 iki 27.7 versijų). per valandą), taip pat padidino procesoriaus branduolių naudojimo efektyvumą surinkimo metu. Naudojant laipsnišką kūrimą, optimizavimo poveikis yra dar labiau pastebimas – laikas, per kurį reikia sukurti branduolį iš naujo, atlikus pakeitimus antraštės failuose, žymiai sumažėjo (nuo 112% iki 173%, priklausomai nuo keičiamo antraštės failo). Šiuo metu optimizavimas pasiekiamas tik ARM64, MIPS, Sparc ir x86 (32 ir 64 bitų) architektūroms.

Šaltinis: opennet.ru

Добавить комментарий