Aro da flikoj estis publikigitaj, kiuj plirapidigas la konstruon de la Linukso-kerno je 50-80%

Ingo Molnar, konata Linuksa kerno-programisto kaj verkinto de la CFS (Completely Fair Scheduler) taskoplanilo, proponis por diskuto en la dissendolisto de Linukso-kerno-programisto serion da flikoj kiuj influas pli ol duonon de ĉiuj dosieroj en la kernaj fontoj kaj havigi pliigon de la rapideco de kompleta kerno rekonstruo je 50-80% depende de agordoj. La efektivigita optimumigo estas rimarkinda pro tio, ke ĝi rilatas al la aldono de la plej granda aro de ŝanĝoj en la historio de la disvolviĝo de la kerno - 2297 flikaĵoj estis proponitaj por inkluzivi tuj, ŝanĝante pli ol 25 mil dosierojn (10 mil kapdosieroj en la "inkluzivi". /" kaj "arch/*/include/" dosierujoj "kaj 15 mil dosieroj kun fonttekstoj).

La rendimenta gajno estas atingita ŝanĝante la metodon de prilaborado de titoldosieroj. Oni rimarkas, ke dum tridek jaroj da kerno-disvolviĝo, la stato de la kapdosieroj alprenis malĝojan aspekton pro la ĉeesto de granda nombro da krucdependecoj inter dosieroj. La restrukturado de kapdosieroj daŭris pli ol jaron kaj postulis signifan reverkadon de la hierarkio kaj dependecoj. Dum la restrukturado, laboro estis farita por apartigi tipdifinojn kaj APIojn por malsamaj kernaj subsistemoj.

Inter la ŝanĝoj faritaj: apartigi altnivelajn kapdosierojn unu de la alia, forigi enliniajn funkciojn, kiuj ligas kapdosierojn, apartigante kapdosierojn por tipoj kaj API-oj, certigante apartan kunigon de kapdosieroj (ĉirkaŭ 80 dosieroj havis nerektajn dependecojn, kiuj malhelpas kunigon, elmontritajn trae. aliaj kapdosieroj), aŭtomata aldono de dependecoj al ".h" kaj ".c" dosieroj, paŝo-post-paŝa optimumigo de kapdosieroj, uzo de la "CONFIG_KALLSYMS_FAST=y" reĝimo, selektema firmiĝo de C-dosieroj en kunigblokojn por redukti la nombron da objektodosieroj.

Kiel rezulto, la laboro farita ebligis redukti la grandecon de kapdosieroj prilaboritaj en la post-antaŭprelabora stadio je 1-2 grandordoj. Ekzemple, antaŭ optimumigo, uzi la kapdosieron "linux/gfp.h" rezultigis la aldonon de 13543 linioj de kodo kaj la inkludo de 303 dependaj kapdosieroj, kaj post optimumigo la grandeco estis reduktita al 181 linioj kaj 26 dependaj dosieroj. Aŭ alia ekzemplo: kiam oni antaŭtraktas la dosieron “kernel/pid.c” sen flikaĵo, 94 mil linioj de kodo estas inkluzivitaj, el kiuj la plimulto ne estas uzata en pid.c. Disigi la kapdosierojn ebligis redukti la kvanton de prilaborita kodo trioble, reduktante la nombron de prilaboritaj linioj al 36 mil.

Kiam la kerno estis tute rekonstruita per la komando "make -j96 vmlinux" en testa sistemo, la aplikado de flikoj montris redukton en la konstrutempo de la branĉo v5.16-rc7 de 231.34 ĝis 129.97 sekundoj (de 15.5 ĝis 27.7 konstruoj). je horo), kaj ankaŭ pliigis la efikecon de uzado de CPU-kernoj dum asembleoj. Kun pliiga konstruo, la efiko de optimumigo estas eĉ pli rimarkinda - la tempo por rekonstrui la kernon post fari ŝanĝojn al la kapdosieroj signife malpliiĝis (de 112% ĝis 173% depende de la kapdosiero estanta ŝanĝita). Optimumigoj nuntempe nur disponeblas por arkitekturoj ARM64, MIPS, Sparc kaj x86 (32- kaj 64-bit).

fonto: opennet.ru

Aldoni komenton