ഒറാക്കിൾ കമ്പനി
DTrace ഇതിനകം
നെറ്റ്വർക്ക് ഓപ്പറേഷൻ ഹാൻഡ്ലറുകൾ സൃഷ്ടിക്കാനും സിസ്റ്റം ഓപ്പറേഷൻ നിരീക്ഷിക്കാനും സിസ്റ്റം കോളുകൾ തടസ്സപ്പെടുത്താനും ആക്സസ് നിയന്ത്രിക്കാനും സമയസൂചിക (perf_event_open) ഉപയോഗിച്ച് ഇവന്റുകൾ പ്രോസസ്സ് ചെയ്യാനും (perf_event_open), പ്രവർത്തനങ്ങളുടെ ആവൃത്തിയും നിർവ്വഹണ സമയവും കണക്കാക്കാനും kprobes ഉപയോഗിച്ച് ട്രെയ്സിംഗ് നടത്താനും നിങ്ങളെ അനുവദിക്കുന്ന ലിനക്സ് കേർണലിൽ നിർമ്മിച്ച ഒരു ബൈറ്റ്കോഡ് ഇന്റർപ്രെറ്ററാണ് eBPF. /upprobes /tracepoints. JIT കംപൈലേഷന്റെ ഉപയോഗത്തിന് നന്ദി, ബൈറ്റ്കോഡ് മെഷീൻ നിർദ്ദേശങ്ങളിലേക്ക് ഈച്ചയിൽ വിവർത്തനം ചെയ്യുകയും നേറ്റീവ് കോഡിന്റെ പ്രകടനത്തോടെ നടപ്പിലാക്കുകയും ചെയ്യുന്നു. eBPF-ന് മുകളിൽ എങ്ങനെ നടപ്പിലാക്കുന്നുവോ അതുപോലെ തന്നെ eBPF-ന് മുകളിൽ DTrace നടപ്പിലാക്കാം.
സിസ്റ്റം കേർണലും എൻഡ് ആപ്ലിക്കേഷനുകളും ചലനാത്മകമായി കണ്ടെത്തുന്നതിനുള്ള പ്രശ്നം പരിഹരിക്കുന്നതിനായി സോളാരിസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനായി ഡിട്രേസ് സാങ്കേതികവിദ്യ വികസിപ്പിച്ചെടുത്തു, സിസ്റ്റം സ്വഭാവം വിശദമായി നിരീക്ഷിക്കാനും തത്സമയം പ്രശ്നങ്ങൾ കണ്ടെത്താനുമുള്ള കഴിവ് ഉപയോക്താവിന് നൽകുന്നു. ഡീബഗ്ഗിംഗ് പ്രക്രിയയിൽ, ഡിട്രേസ് പഠനത്തിൻ കീഴിലുള്ള ആപ്ലിക്കേഷനുകളുടെ പ്രവർത്തനത്തെ ബാധിക്കില്ല, മാത്രമല്ല അവയുടെ പ്രകടനത്തെ ഒരു തരത്തിലും ബാധിക്കില്ല, ഇത് ഫ്ലൈയിൽ പ്രവർത്തിക്കുന്ന സിസ്റ്റങ്ങളുടെ വിശകലനം സംഘടിപ്പിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. DTrace-ന്റെ ശക്തികളിലൊന്ന് AWK-ന് സമാനമായ ഉയർന്ന തലത്തിലുള്ള D ഭാഷയാണ്, അതിൽ C, Python, Lua എന്നിവയിൽ eBPF ഹാൻഡ്ലറുകൾ എഴുതുന്നതിന് വാഗ്ദാനം ചെയ്യുന്ന ടൂളുകൾ ഉപയോഗിക്കുന്നതിനേക്കാൾ ട്രേസിംഗ് സ്ക്രിപ്റ്റുകൾ സൃഷ്ടിക്കുന്നത് വളരെ എളുപ്പമാണ്.
ഒറാക്കിളിൽ നിന്നുള്ള എഞ്ചിനീയർമാരും GCC-ക്കായി ഒരു eBPF ബാക്കെൻഡ് സൃഷ്ടിക്കാൻ പ്രവർത്തിക്കുന്നു, ഇതിനകം പ്രസിദ്ധീകരിച്ചിട്ടുണ്ട്
ബൈറ്റ്കോഡ് ജനറേഷൻ ബാക്കെൻഡിന് പുറമേ, ജിസിസിയ്ക്കായുള്ള നിർദ്ദിഷ്ട പാച്ചുകളിൽ eBPF-നുള്ള ഒരു libgcc പോർട്ടും ELF ഫയലുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള ഉപകരണങ്ങളും ഉൾപ്പെടുന്നു, ഇത് കേർണൽ നൽകുന്ന ലോഡറുകൾ ഉപയോഗിച്ച് eBPF വെർച്വൽ മെഷീനിൽ കോഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നത് സാധ്യമാക്കുന്നു. ഇപ്പോൾ, സി ഭാഷയിലുള്ള കോഡ് ബൈറ്റ്കോഡിലേക്ക് വിവർത്തനം ചെയ്യാൻ കഴിയും (എല്ലാ ഭാഷാ സവിശേഷതകളും ലഭ്യമല്ല), എന്നാൽ ഭാവിയിൽ ഇത് ഉപയോഗത്തിന് ലഭ്യമായ സി ഭാഷാ കഴിവുകൾ വികസിപ്പിക്കുകയും മറ്റ് ഭാഷകൾക്കുള്ള പിന്തുണ ചേർക്കുകയും ഒരു സിമുലേറ്റർ സൃഷ്ടിക്കുകയും ചെയ്യുമെന്ന് പ്രതീക്ഷിക്കുന്നു. കേർണലിലേക്ക് ലോഡ് ചെയ്യാതെ തന്നെ eBPF പ്രോഗ്രാമുകൾ ഡീബഗ്ഗ് ചെയ്യുന്നതിനായി GCC പിന്തുണ ചേർക്കുക.
അവലംബം: opennet.ru