Ingo Molnar, zhvillues i njohur i bĂ«rthamĂ«s Linux dhe autor i planifikuesit tĂ« detyrave CFS (Completely Fair Scheduler), ka propozuar pĂ«r diskutim nĂ« listĂ«n e shpĂ«rndarjes pĂ«r zhvilluesit e bĂ«rthamĂ«s Linux njĂ« seri patch-esh qĂ« prekin mĂ« shumĂ« se gjysmĂ«n e tĂ« gjithĂ« skedave nĂ« tekstet burimore tĂ« bĂ«rthamĂ«s dhe sigurojnĂ« njĂ« rritje tĂ« shpejtĂ«sisĂ« sĂ« rindĂ«rtimit tĂ« plotĂ« tĂ« bĂ«rthamĂ«s nga 50-80% nĂ« varĂ«si tĂ« cilĂ«simeve. Optimizimi i realizuar Ă«shtĂ« i shquar pĂ«r faktin se ai Ă«shtĂ« i lidhur me shtimin e grupit mĂ« tĂ« madh tĂ« ndryshimeve nĂ« historinĂ« e zhvillimit tĂ« bĂ«rthamĂ«s â pĂ«rfshirja njĂ«herĂ«sh e 2297 patch-eve qĂ« ndryshojnĂ« mĂ« shumĂ« se 25 mijĂ« skeda (10 mijĂ« skeda pĂ«rfshirĂ«s nĂ« katalogĂ«t "include/" dhe "arch/*/include/" dhe 15 mijĂ« skeda me tekstet burimore).
Rritja e performancës arrihet përmes ndryshimit të metodës së përpunimit të skedave përfshirëse. Theksohet se, pas tridhjetë viteve të zhvillimit të bërthamës, gjendja e skedave përfshirës ka kaluar në një gjendje të dëshpëruar për shkak të numrit të madh të varësive të ndërthurura midis skedave. Puna për rikonstruksionin e skedave përfshirës ka zgjatur më shumë se një vit dhe ka kërkuar një ripunim të rëndësishëm të hierarkisë dhe varësive. Gjatë rikonstruksionit është realizuar punë për ndarjen e definicioneve të tipeve dhe API-ve për nën-sistemet e ndryshme të bërthamës.
Disa nga ndryshimet e kryera përfshijnë: ndarjen e skedave përfshirëse të niveleve të larta nga njëri-tjetri, përjashtimin e skedave lidhëse me funksionet inline, ndarjen e skedave për tipe dhe API, sigurimin e ndërtimit të veçantë të skedave përfshirëse (rreth 80 skeda kishin varësi të drejtpërdrejta që pengonin ndërtimin, të vendosura përmes skedave të tjera), shtimin automatike të varësive për skedat ".h" dhe ".c", optimizimin gradual të skedave përfshirëse, përdorimin e modit "CONFIG_KALLSYMS_FAST=y", konsolidimin selektiv të skedave C në blloqe ndërtimi për të reduktuar numrin e skedave objekt.
Si pasojë, puna e bërë lejoj reduktimin e madhësisë së skedave të titullit në fazën e përpunimit pas-parashikues deri në 1-2 renditje. Për shembull, para optimizimit, përdorimi i skedës së titullit "linux/gfp.h" rezultoi në shtimin e 13543 rreshtave të kodit dhe lidhjen e 303 skedave të varura, kurse pas optimizimit, madhësia u ul në 181 rreshta dhe 26 skeda të varura. Një shembull tjetër: gjatë përpunimit të skedës "kernel/pid.c" pa patch, lidhen 94 mijë rreshta kodi, shumica e të cilave nuk përdoren në pid.c. Shkëputja e skedave të titullit ndihmoi në reduktimin e volumit të kodit të përpunuar me tre herë, duke e ulur numrin e rreshtave të përpunuar në 36 mijë.
GjatĂ« rikonstruktimit tĂ« plotĂ« tĂ« bĂ«rthamĂ«s me komandĂ«n "make -j96 vmlinux" nĂ« sistemin testues, aplikimi i patch-ave tregoi njĂ« reduktim tĂ« kohĂ«s sĂ« ndĂ«rtimit tĂ« degĂ«s v5.16-rc7 nga 231.34 nĂ« 129.97 sekonda (nga 15.5 nĂ« 27.7 ndĂ«rtimesh nĂ« orĂ«), si dhe pĂ«rmirĂ«soi efikasitetin e pĂ«rdorimit tĂ« bĂ«rthamave tĂ« CPU gjatĂ« ndĂ«rtimit. NĂ« ndĂ«rtimin inkremental, efekti i optimizimit Ă«shtĂ« edhe mĂ« i dukshĂ«m â koha e rikonstruktimit tĂ« bĂ«rthamĂ«s pas ndĂ«rrimeve nĂ« skedat e titullit u reduktua ndjeshĂ«m (nga 112% nĂ« 173% nĂ« varĂ«si tĂ« skedĂ«s sĂ« titullit tĂ« ndryshuar). Optimizimet aktualisht janĂ« tĂ« disponueshme vetĂ«m pĂ«r arkitekturĂ«n ARM64, MIPS, Sparc dhe x86 (32- dhe 64-bit).
Burimi: opennet.ru
