Oracle သည် eBPF ကို အသုံးပြု၍ Linux အတွက် DTrace ကို ပြန်လည်လုပ်ဆောင်ရန် ရည်ရွယ်ထားသည်။

Oracle ကုမ္ပဏီ အစီရင်ခံခဲ့သည် DTrace ဆိုင်ရာ အပြောင်းအလဲများကို အထက်ရေစီးကြောင်းသို့ လွှဲပြောင်းခြင်းဆိုင်ရာ အလုပ်အကြောင်းနှင့် eBPF ကဲ့သို့သော စနစ်ခွဲများကို အသုံးပြုသည့် စံ Linux kernel အခြေခံအဆောက်အဦ၏ထိပ်တွင် DTrace ဒိုင်နမစ် အမှားရှာပြင်ခြင်းနည်းပညာကို အကောင်အထည်ဖော်ရန် စီစဉ်ထားသည်။ အစပိုင်းတွင်၊ Linux တွင် DTrace ကိုအသုံးပြုခြင်း၏ အဓိကပြဿနာမှာ လိုင်စင်အဆင့်တွင် လိုက်ဖက်မှုမရှိသော်လည်း 2018 ခုနှစ်တွင် Oracle၊ လိုင်စင်ရ GPLv2 အောက်ရှိ DTrace ကုဒ်။

DTrace ပြီးပြီ။ အချိန်ကြာမြင့်စွာ Oracle Linux ဖြန့်ဖြူးမှုအတွက် တိုးချဲ့ထားသော kernel ၏ တစ်စိတ်တစ်ပိုင်းအဖြစ် ကမ်းလှမ်းထားသော်လည်း အခြားဖြန့်ဝေမှုများတွင် အသုံးပြုရန်အတွက် ၎င်းသည် ဤနည်းပညာအသုံးပြုမှုကို ကန့်သတ်ထားသည့် အပို kernel ဖာထေးမှုများကို အသုံးပြုရန် လိုအပ်သည်။ ဥပမာအနေနဲ့ Oracle ပါ။ ပြင်ဆင် Fedora Linux တွင် DTrace ထည့်သွင်းခြင်းနှင့် အသုံးပြုခြင်းအတွက် အသေးစိတ် ညွှန်ကြားချက်များ။ တပ်ဆင်မှုအတွက် လိုအပ်သော တပ်ဆင်မှု ကိရိယာများ Linux kernel မှ ပြန်လည်တည်ဆောက်အသုံးပြုမှု ဖာထေးမှုများ. Oracle နှင့် Fedora ဖာထေးမှုများဖြင့် kernel တည်ဆောက်မှုကို အလိုအလျောက်လုပ်ဆောင်ရန် အဆိုပြုထားသည်။ ဇာတ်ညွှန်း.

eBPF သည် Linux kernel တွင်တည်ဆောက်ထားသော bytecode စကားပြန်တစ်ခုဖြစ်ပြီး ကွန်ရက်လည်ပတ်မှုကိုင်တွယ်ကိရိယာများကိုဖန်တီးခြင်း၊ စနစ်လည်ပတ်မှုကိုစောင့်ကြည့်ခြင်း၊ စနစ်ခေါ်ဆိုမှုများကြားဖြတ်ခြင်း၊ ဝင်ရောက်အသုံးပြုမှုကိုထိန်းချုပ်ခြင်း၊ အချိန်ထိန်းခြင်း (perf_event_open) ဖြင့်လုပ်ဆောင်သည့်ဖြစ်ရပ်များ၊ အကြိမ်ရေနှင့်လုပ်ဆောင်မှုအချိန်ကိုရေတွက်ခြင်း၊ kprobes ကိုအသုံးပြု၍ ခြေရာခံခြင်းလုပ်ဆောင်ရန်ခွင့်ပြုပေးသော /uprobes / ခြေရာခံများ။ JIT စုစည်းမှုကို အသုံးပြုခြင်းကြောင့် bytecode ကို စက်ညွှန်ကြားချက်များအဖြစ် ပျံသန်းပြီး မူရင်းကုဒ်၏စွမ်းဆောင်ရည်ဖြင့် လုပ်ဆောင်ပါသည်။ DTrace ကို eBPF ထိပ်တွင် အကောင်အထည်ဖော်ပုံနှင့် ဆင်တူသည်၊ ၎င်းကို eBPF ၏ထိပ်တွင် အကောင်အထည်ဖော်နိုင်သည် работают ရှိပြီးသား ခြေရာခံကိရိယာများ။

DTrace နည်းပညာသည် စနစ် kernel နှင့် end applications များကို dynamically ခြေရာခံခြင်းပြဿနာကို ဖြေရှင်းရန်အတွက် Solaris လည်ပတ်မှုစနစ်အတွက် အသုံးပြုသူများအား စနစ်၏အပြုအမူကို အသေးစိတ်စောင့်ကြည့်ရန်နှင့် ပြဿနာများကို အချိန်နှင့်တပြေးညီ ရှာဖွေဖော်ထုတ်နိုင်စေမည့် တီထွင်ထုတ်လုပ်ထားပါသည်။ အမှားရှာပြင်ခြင်းလုပ်ငန်းစဉ်အတွင်း၊ DTrace သည် လေ့လာမှုအောက်တွင်ရှိသော အပလီကေးရှင်းများ၏လည်ပတ်မှုကို မထိခိုက်စေဘဲ ၎င်းတို့လုပ်ဆောင်နေသည့်စနစ်များကို ခွဲခြမ်းစိတ်ဖြာမှုကို စုစည်းနိုင်စေသည့် ၎င်းတို့၏စွမ်းဆောင်ရည်ကို မည်သို့မျှထိခိုက်စေမည်မဟုတ်ပေ။ DTrace ၏အားသာချက်များထဲမှတစ်ခုမှာ AWK နှင့်ဆင်တူသောအဆင့်မြင့် D ဘာသာစကားဖြစ်ပြီး၊ ပြင်ပစာကြည့်တိုက်များတွင် eBPF handlers များကို C, Python နှင့် Lua တို့တွင် eBPF handlers များရေးသားခြင်းအတွက် ပေးထားသော tools များကိုအသုံးပြုခြင်းထက် tracing scripts များကိုဖန်တီးရန်ပိုမိုလွယ်ကူသည်။

Oracle မှ အင်ဂျင်နီယာများသည် GCC အတွက် eBPF backend တစ်ခုကို ဖန်တီးပြီး ထုတ်ဝေပြီးဖြစ်သည်။ patch အစုံ eBPF အထောက်အပံ့ကို GCC နှင့် ပေါင်းစည်းရန် အောင်မြင်သည်။ GNU binutils တွင် eBPF ကိုပံ့ပိုးရန်ကုဒ်အပါအဝင်။ အစပိုင်းတွင် eBPF ပံ့ပိုးမှုအတွက် နောက်ခံအစွန်သည် LLVM နည်းပညာများကို အခြေခံထားသည်၊ သို့သော် Oracle သည် eBPF အတွက် ပရိုဂရမ်များထုတ်လုပ်ရန် စံစွမ်းရည်တစ်ခု၏ GCC တွင် အသွင်အပြင်ကို စိတ်ဝင်စားသည်၊ ၎င်းသည် Linux kernel တည်ဆောက်ရန်နှင့် တည်ဆောက်ရေးပရိုဂရမ်များအတွက် ကိရိယာတန်ဆာပလာတစ်ခုအား အသုံးပြုခွင့်ပေးမည်ဖြစ်သည်။ eBPF အတွက်

bytecode မျိုးဆက် backend အပြင်၊ GCC အတွက် အဆိုပြုထားသော ဖာထေးမှုများတွင် eBPF အတွက် libgcc အပေါက်တစ်ခု နှင့် ELF ဖိုင်များကို ထုတ်လုပ်ရန် ကိရိယာများ ပါ၀င်သည်၊ ယခုအချိန်တွင်၊ C ဘာသာစကားရှိ ကုဒ်ကို bytecode သို့ ဘာသာပြန်ဆိုနိုင်သည် (ဘာသာစကားအင်္ဂါရပ်အားလုံး မရနိုင်ပါ)၊ သို့သော် နောင်တွင် ၎င်းသည် အသုံးပြုရန်ရရှိနိုင်သော C ဘာသာစကားစွမ်းရည်များကို ချဲ့ထွင်ရန် မျှော်လင့်ပြီး၊ အခြားဘာသာစကားများအတွက် ပံ့ပိုးမှုထည့်ရန်၊ Simulator တစ်ခုကို ဖန်တီးရန်နှင့်၊ kernel ထဲသို့မတင်ဘဲ eBPF ပရိုဂရမ်များကို အမှားရှာခြင်းအတွက် GCC ပံ့ပိုးမှုကို ထည့်ပါ။

source: opennet.ru

မှတ်ချက် Add