eBPF ഉപയോഗിച്ച് Linux-നുള്ള DTrace പുനർനിർമ്മിക്കാൻ Oracle ഉദ്ദേശിക്കുന്നു

ഒറാക്കിൾ കമ്പനി റിപ്പോർട്ടുചെയ്‌തു ഡിട്രേസുമായി ബന്ധപ്പെട്ട മാറ്റങ്ങൾ അപ്‌സ്ട്രീമിലേക്ക് മാറ്റുന്നതിനുള്ള പ്രവർത്തനത്തെക്കുറിച്ചും സാധാരണ ലിനക്സ് കേർണൽ ഇൻഫ്രാസ്ട്രക്ചറിന് മുകളിൽ ഡിട്രേസ് ഡൈനാമിക് ഡീബഗ്ഗിംഗ് സാങ്കേതികവിദ്യ നടപ്പിലാക്കാനുള്ള പദ്ധതികളെക്കുറിച്ചും, അതായത് ഇബിപിഎഫ് പോലുള്ള ഉപസിസ്റ്റങ്ങൾ ഉപയോഗിക്കുന്നു. തുടക്കത്തിൽ, ലിനക്സിൽ ഡിട്രേസ് ഉപയോഗിക്കുന്നതിലെ പ്രധാന പ്രശ്നം ലൈസൻസ് തലത്തിലുള്ള പൊരുത്തക്കേടായിരുന്നു, എന്നാൽ 2018 ൽ ഒറാക്കിൾ വീണ്ടും ലൈസൻസ് ചെയ്തു GPLv2-ന് കീഴിലുള്ള ഡിട്രേസ് കോഡ്.

DTrace ഇതിനകം നീണ്ട കാലം Oracle Linux വിതരണത്തിനായുള്ള ഒരു വിപുലീകൃത കേർണലിന്റെ ഭാഗമായി വാഗ്ദാനം ചെയ്യുന്നു, എന്നാൽ മറ്റ് വിതരണങ്ങളിൽ അതിന്റെ ഉപയോഗത്തിന് അധിക കേർണൽ പാച്ചുകളുടെ ഉപയോഗം ആവശ്യമാണ്, ഇത് ഈ സാങ്കേതികവിദ്യയുടെ ഉപയോഗം പരിമിതപ്പെടുത്തുന്നു. ഉദാഹരണമായി, ഒറാക്കിൾ തയ്യാറാക്കിയത് ഫെഡോറ ലിനക്സിൽ 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 പിന്തുണ GCC-യിലേക്ക് സമന്വയിപ്പിക്കുന്നതിനും നേടിയത് ഗ്നു ബിന്യൂട്ടിലുകളിൽ ഇബിപിഎഫിനെ പിന്തുണയ്ക്കുന്നതിനുള്ള കോഡ് ഉൾപ്പെടെ. തുടക്കത്തിൽ, eBPF പിന്തുണയ്‌ക്കുള്ള ബാക്കെൻഡ് LLVM സാങ്കേതികവിദ്യകളെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, എന്നാൽ eBPF-നുള്ള പ്രോഗ്രാമുകൾ ജനറേറ്റുചെയ്യുന്നതിനുള്ള ഒരു സ്റ്റാൻഡേർഡ് കഴിവ് GCC-യിൽ പ്രത്യക്ഷപ്പെടുന്നതിൽ Oracle താൽപ്പര്യപ്പെടുന്നു, ഇത് Linux കേർണൽ നിർമ്മിക്കുന്നതിനും പ്രോഗ്രാമുകൾ നിർമ്മിക്കുന്നതിനും ഒരു ടൂൾകിറ്റ് ഉപയോഗിക്കാൻ അനുവദിക്കും. eBPF-ന്.

ബൈറ്റ്‌കോഡ് ജനറേഷൻ ബാക്കെൻഡിന് പുറമേ, ജിസിസിയ്‌ക്കായുള്ള നിർദ്ദിഷ്ട പാച്ചുകളിൽ eBPF-നുള്ള ഒരു libgcc പോർട്ടും ELF ഫയലുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള ഉപകരണങ്ങളും ഉൾപ്പെടുന്നു, ഇത് കേർണൽ നൽകുന്ന ലോഡറുകൾ ഉപയോഗിച്ച് eBPF വെർച്വൽ മെഷീനിൽ കോഡ് എക്‌സിക്യൂട്ട് ചെയ്യുന്നത് സാധ്യമാക്കുന്നു. ഇപ്പോൾ, സി ഭാഷയിലുള്ള കോഡ് ബൈറ്റ്കോഡിലേക്ക് വിവർത്തനം ചെയ്യാൻ കഴിയും (എല്ലാ ഭാഷാ സവിശേഷതകളും ലഭ്യമല്ല), എന്നാൽ ഭാവിയിൽ ഇത് ഉപയോഗത്തിന് ലഭ്യമായ സി ഭാഷാ കഴിവുകൾ വികസിപ്പിക്കുകയും മറ്റ് ഭാഷകൾക്കുള്ള പിന്തുണ ചേർക്കുകയും ഒരു സിമുലേറ്റർ സൃഷ്ടിക്കുകയും ചെയ്യുമെന്ന് പ്രതീക്ഷിക്കുന്നു. കേർണലിലേക്ക് ലോഡ് ചെയ്യാതെ തന്നെ eBPF പ്രോഗ്രാമുകൾ ഡീബഗ്ഗ് ചെയ്യുന്നതിനായി GCC പിന്തുണ ചേർക്കുക.

അവലംബം: opennet.ru

ഒരു അഭിപ്രായം ചേർക്കുക