Yo te pibliye yon seri plak ki pi vit konstriksyon nwayo Linux la 50-80%.

Ingo Molnar, yon byen li te ye Linux kernel devlopè ak otè CFS (Completely Fair Scheduler) travay orè, te pwopoze pou diskisyon sou lis adrès devlopè Linux kernel la yon seri plak ki afekte plis pase mwatye nan tout dosye ki nan sous nwayo yo ak bay yon ogmantasyon nan vitès la nan yon rebati konplè nwayo pa 50-80% depann sou anviwònman. Optimizasyon an aplike se enpòtan pou remake nan ke li asosye ak adisyon a nan seri a pi gwo nan chanjman nan istwa a nan devlopman nwayo - 2297 plak yo te pwopoze pou enklizyon nan yon fwa, chanje plis pase 25 mil fichye (10 mil dosye header nan "gen ladan yo /” ak “arch/*/include/” répertoires “ak 15 mil fichye ak tèks 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

Add nouvo kòmantè