Është publikuar një grup arnimesh që përshpejtojnë ndërtimin e kernelit Linux me 50-80%

Ingo Molnar, një zhvillues i mirënjohur i kernelit Linux dhe autor i planifikuesit të detyrave CFS (Completely Fair Scheduler), propozoi për diskutim në listën e postimeve të zhvilluesve të kernel Linux një seri arnimesh që prekin më shumë se gjysmën e të gjithë skedarëve në burimet e kernelit dhe siguroni një rritje të shpejtësisë së një rindërtimi të plotë të kernelit me 50-80% në varësi të cilësimeve. Optimizimi i zbatuar është i rëndësishëm në atë që shoqërohet me shtimin e grupit më të madh të ndryshimeve në historinë e zhvillimit të kernelit - 2297 arna u propozuan për t'u përfshirë menjëherë, duke ndryshuar më shumë se 25 mijë skedarë (10 mijë skedarë kokë në "përfshijnë drejtoritë /” dhe “arch/*/include/” dhe 15 mijë skedarë me tekste burimore).

Fitimi i performancës arrihet duke ndryshuar metodën e përpunimit të skedarëve të kokës. Vihet re se mbi tridhjetë vjet zhvillim të kernelit, gjendja e skedarëve të kokës ka marrë një pamje dëshpëruese për shkak të pranisë së një numri të madh të ndërvarësive midis skedarëve. Ristrukturimi i skedarit të titullit zgjati më shumë se një vit dhe kërkoi ripërpunim të konsiderueshëm të hierarkisë dhe varësive. Gjatë ristrukturimit, u punua për të ndarë përkufizimet e tipit dhe API-të për nënsisteme të ndryshme të kernelit.

Ndër ndryshimet e bëra: ndarja e skedarëve të titullit të nivelit të lartë nga njëri-tjetri, eliminimi i funksioneve inline që lidhin skedarët e kokës, ndarja e skedarëve të kokës për llojet dhe API-të, sigurimi i montimit të veçantë të skedarëve të kokës (rreth 80 skedarë kishin varësi indirekte që ndërhynin në montim, të ekspozuar përmes skedarë të tjerë të titullit), shtimi automatik i varësive në skedarët ".h" dhe ".c", optimizimi hap pas hapi i skedarëve të kokës, përdorimi i modalitetit "CONFIG_KALLSYMS_FAST=y", konsolidimi selektiv i skedarëve C në blloqet e montimit për zvogëloni numrin e skedarëve të objekteve.

Si rezultat, puna e bërë bëri të mundur zvogëlimin e madhësisë së skedarëve të titullit të përpunuar në fazën e pas-përpunimit me 1-2 rend të madhësisë. Për shembull, para optimizimit, përdorimi i skedarit të kokës "linux/gfp.h" rezultoi në shtimin e 13543 rreshtave të kodit dhe përfshirjen e 303 skedarëve të varur të kokës, dhe pas optimizimit madhësia u reduktua në 181 rreshta dhe 26 skedarë të varur. Ose një shembull tjetër: gjatë përpunimit paraprak të skedarit "kernel/pid.c" pa një patch, përfshihen 94 mijë rreshta kodi, shumica e të cilave nuk përdoren në pid.c. Ndarja e skedarëve të kokës bëri të mundur uljen e sasisë së kodit të përpunuar me tre herë, duke ulur numrin e linjave të përpunuara në 36 mijë.

Kur kerneli u rindërtua plotësisht me komandën "make -j96 vmlinux" në një sistem testimi, aplikimi i arnimeve tregoi një reduktim në kohën e ndërtimit të degës v5.16-rc7 nga 231.34 në 129.97 sekonda (nga 15.5 në 27.7 ndërtime në orë), dhe gjithashtu rriti efikasitetin e përdorimit të bërthamave të CPU gjatë montimeve. Me një ndërtim në rritje, efekti i optimizimit është edhe më i dukshëm - koha për të rindërtuar kernelin pas ndryshimeve në skedarët e kokës është ulur ndjeshëm (nga 112% në 173% në varësi të skedarit të kokës që ndryshohet). Optimizimet janë aktualisht të disponueshme vetëm për arkitekturat ARM64, MIPS, Sparc dhe x86 (32 dhe 64-bit).

Burimi: opennet.ru

Shto një koment