Oracle ကုမ္ပဏီ
DTrace ပြီးပြီ။
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 တစ်ခုကို ဖန်တီးပြီး ထုတ်ဝေပြီးဖြစ်သည်။
bytecode မျိုးဆက် backend အပြင်၊ GCC အတွက် အဆိုပြုထားသော ဖာထေးမှုများတွင် eBPF အတွက် libgcc အပေါက်တစ်ခု နှင့် ELF ဖိုင်များကို ထုတ်လုပ်ရန် ကိရိယာများ ပါ၀င်သည်၊ ယခုအချိန်တွင်၊ C ဘာသာစကားရှိ ကုဒ်ကို bytecode သို့ ဘာသာပြန်ဆိုနိုင်သည် (ဘာသာစကားအင်္ဂါရပ်အားလုံး မရနိုင်ပါ)၊ သို့သော် နောင်တွင် ၎င်းသည် အသုံးပြုရန်ရရှိနိုင်သော C ဘာသာစကားစွမ်းရည်များကို ချဲ့ထွင်ရန် မျှော်လင့်ပြီး၊ အခြားဘာသာစကားများအတွက် ပံ့ပိုးမှုထည့်ရန်၊ Simulator တစ်ခုကို ဖန်တီးရန်နှင့်၊ kernel ထဲသို့မတင်ဘဲ eBPF ပရိုဂရမ်များကို အမှားရှာခြင်းအတွက် GCC ပံ့ပိုးမှုကို ထည့်ပါ။
source: opennet.ru