Linux kernel ၏တည်ဆောက်မှုကို 50-80% အရှိန်မြှင့်ပေးသည့် ဖာထေးမှုအစုတစ်ခုကို ထုတ်ဝေလိုက်ပါပြီ။

Ingo Molnar သည် နာမည်ကြီး Linux kernel developer နှင့် CFS (Completely Fair Scheduler) task scheduler ကိုရေးသားသူဖြစ်ပြီး Linux kernel developer mailing list တွင် ဆွေးနွေးရန် အဆိုပြုထားသော kernel အရင်းအမြစ်များရှိ ဖိုင်အားလုံး၏ ထက်ဝက်ကျော်ကို သက်ရောက်မှုရှိသော ဖာထေးမှုအတွဲလိုက်နှင့် ဆက်တင်များပေါ် မူတည်၍ ပြီးပြည့်စုံသော kernel ပြန်လည်တည်ဆောက်မှု၏ အမြန်နှုန်းကို 50-80% တိုးမြှင့်ပေးပါသည်။ အကောင်အထည်ဖော်ထားသော ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းသည် kernel ဖွံ့ဖြိုးတိုးတက်မှုသမိုင်းတွင် အကြီးမားဆုံးပြောင်းလဲမှုအစုအဝေးနှင့် ဆက်စပ်နေသောကြောင့် မှတ်သားဖွယ်ဖြစ်ပါသည် - 2297 ဖာထေးမှုများကို တစ်ကြိမ်တည်းထည့်သွင်းရန် အဆိုပြုခဲ့ပြီး ဖိုင်ပေါင်း 25 ကျော်ကို ပြောင်းလဲခြင်း ("ပါဝင်သည့် ခေါင်းစီးဖိုင် 10" /” နှင့် “arch/*/include/” directories” နှင့် အရင်းအမြစ်စာသားများပါရှိသော ဖိုင် 15)။

ခေါင်းစီးဖိုင်များကို လုပ်ဆောင်သည့်နည်းလမ်းကို ပြောင်းလဲခြင်းဖြင့် စွမ်းဆောင်ရည် အမြတ်ကို ရရှိသည်။ kernel ဖွံ့ဖြိုးတိုးတက်မှု နှစ်သုံးဆယ်ကျော်ကြာသောအခါ၊ header files ၏ အခြေအနေသည် ဖိုင်များကြားတွင် အပြန်အလှန်မှီခိုမှုများစွာရှိနေခြင်းကြောင့် စိတ်ပျက်ဖွယ်အသွင်အပြင်ကို ပြောင်းလဲသွားသည်ကို မှတ်သားရပါသည်။ ခေါင်းစီးဖိုင်ကို ပြန်လည်ဖွဲ့စည်းခြင်းသည် တစ်နှစ်ကျော်ကြာမြင့်ပြီး အထက်အောက်နှင့် မှီခိုမှုများ၏ သိသာထင်ရှားသော ပြန်လည်ပြင်ဆင်မှုများ လိုအပ်သည်။ ပြန်လည်ဖွဲ့စည်းမှုအတွင်း၊ မတူညီသော kernel ခွဲစနစ်များအတွက် အမျိုးအစား အဓိပ္ပါယ်ဖွင့်ဆိုချက်များနှင့် API များကို ခွဲခြားလုပ်ဆောင်ခဲ့သည်။

ပြုလုပ်ထားသော အပြောင်းအလဲများထဲတွင်- အဆင့်မြင့်မားသော ခေါင်းစီးဖိုင်များကို တစ်ခုနှင့်တစ်ခု ခွဲထုတ်ခြင်း၊ header files များကို ချိတ်ဆက်ပေးသည့် inline functions များကို ဖယ်ရှားခြင်း၊ header files အမျိုးအစားများနှင့် APIs အတွက် header files များကို ခွဲခြားခြင်း၊ header files များ၏ သီးခြားစုဝေးမှုကို သေချာစေခြင်း (ဖိုင် 80 ခန့်တွင် အစုအဝေးကို အနှောင့်အယှက်ဖြစ်စေသော သွယ်ဝိုက်သောမှီခိုမှုများပါရှိသည်၊ အခြား header ဖိုင်များ) ".h" နှင့် ".c" ဖိုင်များသို့ အလိုအလျောက် မှီခိုမှုပေါင်းထည့်ခြင်း၊ header ဖိုင်များ၏ အဆင့်ဆင့် ပိုမိုကောင်းမွန်အောင် ပြုလုပ်ခြင်း၊ "CONFIG_KALLSYMS_FAST=y" မုဒ်ကို အသုံးပြုခြင်း၊ C ဖိုင်များကို စုစည်းထားသော ဘလောက်များအဖြစ် ရွေးချယ်ခြင်း အရာဝတ္ထုဖိုင်အရေအတွက်ကို လျှော့ချပါ။

ရလဒ်အနေဖြင့်၊ ပြီးခဲ့သောအလုပ်သည် ပြင်းအား 1-2 အမှာစာများဖြင့် ပြုလုပ်ထားသော ခေါင်းစီးဖိုင်များ၏ အရွယ်အစားကို လျှော့ချနိုင်စေခဲ့သည်။ ဥပမာအားဖြင့်၊ ပိုမိုကောင်းမွန်အောင်မလုပ်ဆောင်မီတွင်၊ ခေါင်းစီးဖိုင် “linux/gfp.h” ကိုအသုံးပြုခြင်းဖြင့် ကုဒ်လိုင်းပေါင်း 13543 လိုင်းနှင့် 303 မှီခိုနေသော header ဖိုင်များ ပါဝင်လာကာ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ပြီးနောက် အရွယ်အစားကို 181 လိုင်းနှင့် မှီခိုနေသောဖိုင် 26 ခုသို့ လျှော့ချခဲ့သည်။ သို့မဟုတ် အခြားဥပမာ- patch မပါဘဲ “kernel/pid.c” ဖိုင်ကို ကြိုတင်လုပ်ဆောင်သောအခါ၊ ကုဒ်လိုင်းပေါင်း ၉၄ဝဝဝ ပါဝင်ပြီး အများစုမှာ pid.c တွင် အသုံးမပြုပါ။ ခေါင်းစီးဖိုင်များကို ခွဲထုတ်ခြင်းဖြင့် လုပ်ဆောင်ပြီးသား ကုဒ်ပမာဏကို သုံးဆလျှော့ချနိုင်ကာ စီမံဆောင်ရွက်ထားသော လိုင်းအရေအတွက် ၃၆ဝဝဝ သို့ လျှော့ချနိုင်ခဲ့သည်။

စမ်းသပ်စနစ်တစ်ခုပေါ်ရှိ "make -j96 vmlinux" အမိန့်ဖြင့် kernel ကို အပြီးအပြတ် ပြန်လည်တည်ဆောက်သောအခါ၊ ဖာထေးမှုများ အသုံးချမှုသည် v5.16-rc7 ဌာနခွဲ၏ တည်ဆောက်ချိန်ကို 231.34 မှ 129.97 စက္ကန့်အထိ (15.5 မှ 27.7 စက္ကန့်အထိ လျော့ချကြောင်းပြသခဲ့သည် တစ်နာရီ) နှင့် စည်းဝေးပွဲများအတွင်း CPU cores အသုံးပြုခြင်း၏ ထိရောက်မှုကိုလည်း တိုးမြင့်စေသည်။ တိုးမြှင့်တည်ဆောက်ခြင်းဖြင့်၊ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း၏အကျိုးသက်ရောက်မှုသည် ပို၍သိသာထင်ရှားသည် - ခေါင်းစီးဖိုင်များကိုပြောင်းလဲပြီးနောက် kernel ကိုပြန်လည်တည်ဆောက်ရန်အချိန်သည် သိသိသာသာလျော့နည်းသွားသည် (ခေါင်းစီးဖိုင်ကိုပြောင်းလဲနေသည့်အပေါ် မူတည်၍ 112% မှ 173% သို့) ။ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းကို ARM64၊ MIPS၊ Sparc နှင့် x86 (32- နှင့် 64-bit) ဗိသုကာများအတွက်သာ ရရှိနိုင်ပါသည်။

source: opennet.ru

မှတ်ချက် Add