Fast Kernel Headers, një grup arnimesh që përshpejtojnë përpilimin e kernelit me 50-80%

Ingo Molnar, një zhvillues i njohur i kernelit Linux dhe autor i CFS Task Scheduler propozoi për diskutimin e listës postare të zhvillimit të kernelit Linux një numër arnimesh, që prekin më shumë se gjysmën e të gjithë skedarëve në burimin e kernelit dhe siguron një rritje të përgjithshme të shpejtësisë së rindërtimit të kernelit prej 50 -80% në varësi të konfigurimit.

Optimizimi u zbatua është i dukshëm në atë që shoqërohet me shtimin e grupit të ndryshimeve më të mëdha në historinë e zhvillimit të kernelit: ata vendosën të përfshijnë 2297 arna menjëherë, duke ndryshuar më shumë se 25 mijë skedarë.

Fitimi i performancës arrihet duke ndryshuar metodën e trajtimit të skedarit të kokës. Duhet të theksohet se gjatë tridhjetë viteve të zhvillimit të kernelit, gjendja e skedarëve të kokës ka marrë një formë të zymtë për shkak të pranisë së një numri të madh të ndërvarësive midis skedarëve.

Ristrukturimi i skedarëve të titullit zgjati më shumë se një vit dhe kërkonte një ridizajnim 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ënsistemet e ndryshme të kernelit.

Kam kënaqësinë të njoftoj versionin e parë publik të projektit tim të ri "Fast Kernel Headers" për të cilin kam punuar që nga fundi i vitit 2020, i cili është një ripërpunim gjithëpërfshirës i hierarkisë së kokës së kernelit Linux dhe varësive të kokës, me qëllim të dyfishtë:

- përshpejtoni ndërtimin e kernelit (koha e ndërtimit absolute dhe në rritje)

- Shkëputja e tipit të nënsistemit dhe përkufizimet API nga njëri-tjetri

Siç e dinë shumica e zhvilluesve të kernelit, ka rreth ~ 10,000 tituj kryesorë .h në kernelin Linux, në hierarkitë përfshi / dhe arch / * / përfshi /. Gjatë 30+ viteve të fundit, ato kanë evoluar në një grup të ndërlikuar dhe të dhimbshëm ndërvarësish që ne i quajmë me dashuri "Ferri i varësisë".

Ndër ndryshimet e bëra janë: ndarja e skedarëve të titullit të nivelit të lartë nga njëri-tjetri, përjashtimi i funksioneve inline që lidhin skedarët e kokës, hartëzimi i skedarëve të kokës për llojet dhe API-të, sigurimi i një grupi të veçantë skedarësh të kokës (rreth 80 skedarë kishin varësi indirekte që ndërhyjnë në montimin, të ekspozuar përmes skedarëve të kokës së skedarëve të tjerë), 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 të zvogëluar numrin e skedarëve të objektit.

Si rezultat, puna e bërë lejoi të zvogëlonte madhësinë e skedarëve të përpunuar të kokësnë 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.
  • Një shembull tjetër: parapërpunimi i skedarit të papatchuar "kernel / pid.c" lidh 94 mijë rreshta kodi, shumica e të cilave nuk përdoren në pid.c. Ndarja e skedarëve të kokës na lejoi të reduktonim sasinë e kodit të përpunuar tre herë, duke reduktuar numrin e rreshtave të përpunuara në 36.

Kur kerneli u rindërtua plotësisht me komandën "make -j96 vmlinux" në sistemin e testimit, korrigjimi tregoi një reduktim në kohën e përpilimit të degës v5.16-rc7 nga 231,34 në 129,97, 15,5 sekonda (nga 27,7 në XNUMX ndërtime për orë) dhe gjithashtu rriti efikasitetin e përdorimit të bërthamës së CPU-së gjatë ndërtimit.

Me një përmbledhje në rritje, efekti i optimizimit është edhe më i dukshëm: koha për të rindërtuar kernelin pasi të keni bërë ndryshime në skedarët e kokës është zvogëluar ndjeshëm (nga 112% në 173%, në varësi të skedarit të kokës që është ndryshuar).

Optimizimet janë aktualisht të disponueshme vetëm për arkitekturat ARM64, MIPS, Sparc dhe x86 (32-bit dhe 64-bit).

Bukur nëse jeni të interesuar të dini më shumë për të, ju mund të kontrolloni detajet në lidhja vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.