Bola zverejnená sada opráv, ktoré zrýchľujú zostavenie linuxového jadra o 50 – 80 %

Ingo Molnar, známy vývojár jadra Linuxu a autor plánovača úloh CFS (Completely Fair Scheduler), navrhol na diskusiu na konferencii vývojárov jadra Linuxu sériu opráv, ktoré ovplyvňujú viac ako polovicu všetkých súborov v zdrojoch jadra a poskytujú zvýšenie rýchlosti kompletného prebudovania jadra o 50-80% v závislosti od nastavení. Implementovaná optimalizácia je pozoruhodná v tom, že je spojená s pridaním najväčšieho súboru zmien v histórii vývoja jadra - 2297 záplat bolo navrhnutých na zahrnutie naraz, čím sa zmenilo viac ako 25 10 súborov (15 XNUMX hlavičkových súborov v „zahŕňa /“ a „arch/*/include/“ a XNUMX tisíc súborov so zdrojovými textami).

Zvýšenie výkonu sa dosiahne zmenou spôsobu spracovania hlavičkových súborov. Je potrebné poznamenať, že počas tridsiatich rokov vývoja jadra nadobudol stav hlavičkových súborov depresívny vzhľad v dôsledku prítomnosti veľkého počtu krížových závislostí medzi súbormi. Reštrukturalizácia súboru hlavičiek trvala viac ako rok a vyžadovala si značné prepracovanie hierarchie a závislostí. Počas reštrukturalizácie sa pracovalo na oddelení definícií typov a rozhraní API pre rôzne subsystémy jadra.

Medzi vykonané zmeny patrí: oddelenie hlavičkových súborov na vysokej úrovni od seba, eliminácia inline funkcií, ktoré prepájajú hlavičkové súbory, oddelenie hlavičkových súborov pre typy a API, zabezpečenie samostatného zostavovania hlavičkových súborov (približne 80 súborov malo nepriame závislosti zasahujúce do zostavovania, vystavené cez iné hlavičkové súbory), automatické pridávanie závislostí do súborov „.h“ a „.c“, postupná optimalizácia hlavičkových súborov, používanie režimu „CONFIG_KALLSYMS_FAST=y“, selektívna konsolidácia súborov C do montážnych blokov do znížiť počet súborov objektov.

Výsledkom bolo, že vykonaná práca umožnila znížiť veľkosť hlavičkových súborov spracovaných v štádiu post-predspracovania o 1-2 rády. Napríklad pred optimalizáciou použitie hlavičkového súboru „linux/gfp.h“ viedlo k pridaniu 13543 303 riadkov kódu a zahrnutiu 181 závislých hlavičkových súborov a po optimalizácii sa veľkosť znížila na 26 riadkov a 94 závislých súborov. Alebo iný príklad: pri predspracovaní súboru „kernel/pid.c“ bez opravy je zahrnutých 36 tisíc riadkov kódu, z ktorých väčšina sa v pid.c nepoužíva. Oddelenie hlavičkových súborov umožnilo trojnásobne znížiť množstvo spracovaného kódu, čím sa počet spracovaných riadkov znížil na XNUMX tisíc.

Keď bolo jadro úplne prebudované pomocou príkazu „make -j96 vmlinux“ na testovacom systéme, aplikácia opráv ukázala skrátenie času zostavenia vetvy v5.16-rc7 z 231.34 na 129.97 sekúnd (z 15.5 na 27.7 zostavení za hodinu) a tiež zvýšili efektivitu využívania jadier CPU počas montáží. Pri inkrementálnom zostavovaní je efekt optimalizácie ešte výraznejší – čas na opätovné zostavenie jadra po vykonaní zmien v hlavičkových súboroch sa výrazne skrátil (zo 112 % na 173 % v závislosti od zmeneného hlavičkového súboru). Optimalizácie sú momentálne dostupné len pre architektúry ARM64, MIPS, Sparc a x86 (32- a 64-bit).

Zdroj: opennet.ru

Pridať komentár