Publikuar një grup patch-esh që përshpejton ndërtimin e bërthamës Linux nga 50-80%

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

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster