Seti ya viraka imechapishwa ili kuharakisha mkusanyiko wa kernel. Linux kwa 50-80%

Ingo Molnar, msanidi programu maarufu Linux kernel na mwandishi wa kipanga kazi cha CFS (Kipanga Kazi Kikamilifu), walikipendekeza kwa ajili ya majadiliano kuhusu orodha ya barua pepe ya watengenezaji wa kernel. Linux Mfululizo wa viraka vinavyoathiri zaidi ya nusu ya faili zote kwenye msimbo chanzo cha kernel na kutoa ongezeko la 50-80% katika kasi ya ujenzi upya kamili wa kernel, kulingana na mipangilio. Uboreshaji huu unaonekana kwa sababu unajumuisha seti kubwa zaidi ya mabadiliko katika historia ya ukuzaji wa kernel—viraka 2297 vilivyopendekezwa kuingizwa kwa wakati mmoja, na kubadilisha zaidi ya faili 25 (faili za kichwa 10 katika saraka za "include/" na "arch/*/include/" na faili 15 za msimbo 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

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster