Seti ya viraka imechapishwa ambayo inaharakisha ujenzi wa kernel ya Linux kwa 50-80%

Ingo Molnar, msanidi programu mashuhuri wa Linux na mwandishi wa ratiba ya kazi ya CFS (Mratibu wa Haki Kabisa), alipendekeza kwa majadiliano juu ya orodha ya utumaji barua ya wasanidi wa Linux kernel mfululizo wa viraka vinavyoathiri zaidi ya nusu ya faili zote kwenye vyanzo vya kernel na. toa ongezeko la kasi ya ujenzi kamili wa kernel kwa 50-80% kulingana na mipangilio. Uboreshaji uliotekelezwa ni muhimu sana kwa kuwa unajumuisha kuongezwa kwa seti kubwa zaidi ya mabadiliko katika historia ya ukuzaji wa kernel - viraka 2297 vilipendekezwa kujumuishwa mara moja, kubadilisha faili zaidi ya elfu 25 (faili za kichwa elfu 10 kwenye "pamoja na/" na saraka za "arch/*/include/" "na faili elfu 15 zilizo na maandishi chanzo).

Faida ya utendaji hupatikana kwa kubadilisha njia ya usindikaji faili za kichwa. Inabainisha kuwa zaidi ya miaka thelathini ya maendeleo ya kernel, hali ya faili za kichwa imechukua kuonekana kwa huzuni kutokana na kuwepo kwa idadi kubwa ya utegemezi wa msalaba kati ya faili. Urekebishaji wa faili ya kichwa ulichukua zaidi ya mwaka mmoja na ulihitaji urekebishaji muhimu wa safu na tegemezi. Wakati wa urekebishaji, kazi ilifanywa kutenganisha ufafanuzi wa aina na API za mifumo ndogo ya kernel.

Miongoni mwa mabadiliko yaliyofanywa: kutenganisha faili za vichwa vya kiwango cha juu kutoka kwa kila mmoja, kuondoa vitendaji vya ndani vinavyounganisha faili za vichwa, kutenganisha faili za vichwa vya aina na API, kuhakikisha mkusanyiko tofauti wa faili za kichwa (takriban faili 80 zilikuwa na utegemezi usio wa moja kwa moja unaoingilia mkusanyiko, wazi kupitia faili zingine za vichwa), kuongeza kiotomatiki vitegemezi kwa faili za ".h" na ".c", uboreshaji wa hatua kwa hatua wa faili za vichwa, matumizi ya modi ya "CONFIG_KALLSYMS_FAST=y", ujumuishaji uliochaguliwa wa faili za C kuwa vizuizi vya kusanyiko ili punguza idadi ya faili za kitu.

Matokeo yake, kazi iliyofanywa ilifanya iwezekanavyo kupunguza ukubwa wa faili za kichwa zilizosindika katika hatua ya baada ya usindikaji kwa amri 1-2 za ukubwa. Kwa mfano, kabla ya uboreshaji, kutumia faili ya kichwa "linux/gfp.h" ilisababisha kuongezwa kwa mistari 13543 ya kanuni na kuingizwa kwa faili 303 za kichwa tegemezi, na baada ya uboreshaji ukubwa ulipunguzwa hadi mistari 181 na faili 26 zinazotegemea. Au mfano mwingine: wakati wa kuchakata faili "kernel/pid.c" bila kiraka, mistari elfu 94 ya msimbo imejumuishwa, ambayo nyingi haitumiki katika pid.c. Kutenganisha faili za kichwa kulifanya iwezekanavyo kupunguza kiasi cha msimbo uliosindika kwa mara tatu, kupunguza idadi ya mistari iliyosindika hadi 36 elfu.

Wakati kernel ilijengwa upya kabisa na amri ya "make -j96 vmlinux" kwenye mfumo wa majaribio, utumiaji wa viraka ulionyesha kupunguzwa kwa wakati wa ujenzi wa tawi la v5.16-rc7 kutoka sekunde 231.34 hadi 129.97 (kutoka 15.5 hadi 27.7 hujenga kwa saa), na pia kuongeza ufanisi wa kutumia cores za CPU wakati wa makusanyiko. Pamoja na ujenzi unaoongezeka, athari ya uboreshaji inaonekana zaidi - wakati wa kujenga tena kernel baada ya kufanya mabadiliko kwenye faili za kichwa umepungua kwa kiasi kikubwa (kutoka 112% hadi 173% kulingana na faili ya kichwa kubadilishwa). Uboreshaji kwa sasa unapatikana tu kwa usanifu wa ARM64, MIPS, Sparc na x86 (32- na 64-bit).

Chanzo: opennet.ru

Kuongeza maoni