Ingo Molnar, yon devlopè renome Linux kernel la ak otè planifikatè travay CFS (Completely Fair Scheduler) la, te pwopoze li pou diskisyon sou lis adrès devlopè kernel yo. Linux Yon seri patch ki afekte plis pase mwatye nan tout fichye ki nan kòd sous nwayo a epi ki bay yon ogmantasyon 50-80% nan vitès rekonstriksyon nwayo konplè a, selon paramèt yo. Optimizasyon sa a remakab paske li gen ladan l pi gwo seri chanjman nan listwa devlopman nwayo aâ2297 patch pwopoze pou enklizyon an menm tan, chanje plis pase 25 fichye (10 fichye header nan anyè "include/" ak "arch/*/include/" yo ak 15 fichye kòd sous).
Se pwogrè nan pèfòmans reyalize pa chanje metòd la nan pwosesis dosye header. Li te note ke plis pase trant ane nan devlopman nwayo, eta a nan dosye yo header te pran yon aparans depresyon akòz prezans nan yon gwo kantite kwa-depandans ant dosye yo. Restriktirasyon dosye header la te pran plis pase yon ane e li te mande yon retravay enpòtan nan yerachi a ak depandans yo. Pandan restriktirasyon an, yo te fè travay pou separe definisyon kalite ak API pou diferan subsistèm nwayo.
Pami chanjman ki fèt yo: separe fichye header wo nivo youn ak lòt, elimine fonksyon inline ki konekte fichye header, separe dosye header pou kalite ak APIs, asire asanble separe dosye header (apeprè 80 fichye te gen depandans endirèk ki entèfere ak asanble, ekspoze atravè lòt dosye header), adisyon otomatik nan depandans nan dosye ".h" ak ".c", optimize etap pa etap nan dosye header, itilizasyon mòd "CONFIG_KALLSYMS_FAST=y", konsolidasyon selektif nan dosye C nan blòk asanble yo. redwi kantite fichye objè yo.
Kòm yon rezilta, travay la te fè li posib pou redwi gwosè dosye header ki te trete nan etap apre-pwosesis la pa 1-2 lòd nan grandè. Pou egzanp, anvan optimize, lè l sèvi avèk fichye header "linux/gfp.h" te lakòz adisyon 13543 liy kòd ak enklizyon de 303 dosye header depandan, epi apre optimize gwosè a te redwi a 181 liy ak 26 dosye depandan. Oswa yon lòt egzanp: lè w ap trete dosye "kernel/pid.c" san yon patch, 94 mil liy kòd yo enkli, pifò ladan yo pa itilize nan pid.c. Separe dosye header yo te fè li posib pou redwi kantite kòd trete pa twa fwa, diminye kantite liy trete a 36 mil.
Lè nwayo a te konplètman rebati ak kòmandman "make -j96 vmlinux" sou yon sistèm tès, aplikasyon an nan plak te montre yon rediksyon nan tan an bati nan v5.16-rc7 branch la soti nan 231.34 a 129.97 segonn (soti nan 15.5 a 27.7 bati. pou chak èdtan), epi tou ogmante efikasite nan lè l sèvi avèk nwayo CPU pandan asanble yo. Avèk yon konstriksyon incrÊmentielle, efè optimize a se menm plis aparan - tan pou re-konstwi nwayo a apre yo fin fè chanjman nan dosye header yo diminye anpil (soti nan 112% a 173% depann sou dosye a header yo te chanje). Aktyèlman optimizasyon yo disponib sèlman pou achitekti ARM64, MIPS, Sparc ak x86 (32- ak 64-bit).
Sous: opennet.ru
