Oracle eBPF ашиглан Linux-д зориулсан DTrace-г дахин боловсруулахаар төлөвлөж байна

Oracle компани мэдээлсэн DTrace-тэй холбоотой өөрчлөлтүүдийг дээд тал руу шилжүүлэх ажлын талаар болон Linux-ийн стандарт цөмийн дэд бүтэц дээр DTrace динамик дибаг хийх технологийг, тухайлбал eBPF гэх мэт дэд системүүдийг ашиглахаар төлөвлөж байгаа тухай. Эхэндээ Linux дээр DTrace ашиглахтай холбоотой гол асуудал нь лицензийн түвшинд нийцэхгүй байсан боловч 2018 онд Oracle дахин зөвшөөрөл авсан GPLv2 дор DTrace код.

DTrace аль хэдийн урт хугацаа нь Oracle Linux түгээлтийн өргөтгөсөн цөмийн нэг хэсэг болгон санал болгодог боловч бусад түгээлтэд ашиглахын тулд нэмэлт цөмийн засваруудыг ашиглах шаардлагатай байдаг нь энэ технологийн хэрэглээг хязгаарладаг. Жишээлбэл, Oracle бэлтгэсэн Fedora Linux дээр DTrace суулгах, ашиглах дэлгэрэнгүй заавар. Суулгахад угсралт шаардлагатай хэрэгсэл болон дахин бүтээгдсэн Линукс цөмийг ашиглах засварууд. Oracle болон Fedora нөхөөсүүдээр цөм бүтээх ажиллагааг автоматжуулахыг санал болгож байна. скрипт.

eBPF нь Линуксийн цөмд суурилагдсан байт код тайлбарлагч бөгөөд сүлжээний үйл ажиллагаа зохицуулагчийг үүсгэх, системийн ажиллагааг хянах, системийн дуудлагыг таслан зогсоох, хандалтыг хянах, үйл явдлыг цаг хэмжигчээр боловсруулах (perf_event_open), үйлдлүүдийн давтамж, гүйцэтгэлийн хугацааг тоолох, kprobe ашиглан мөрдөх боломжийг олгодог. /упробууд /tracepoints. JIT эмхэтгэлийг ашигласны ачаар байт кодыг шууд машины заавар болгон хөрвүүлж, эх кодын гүйцэтгэлээр гүйцэтгэдэг. DTrace нь eBPF дээр хэрэгждэгтэй адил eBPF дээр хэрэгжиж болно. ажил одоо байгаа мөрдөх хэрэгсэл.

DTrace технологийг Solaris үйлдлийн системд зориулж системийн цөм болон эцсийн програмуудыг динамикаар хянах асуудлыг шийдвэрлэх зорилгоор бүтээгдсэн бөгөөд хэрэглэгчдэд системийн үйл ажиллагааг нарийвчлан хянах, асуудлыг бодит цаг хугацаанд оношлох боломжийг олгодог. Дибаг хийх явцад DTrace нь судалж буй програмуудын үйл ажиллагаанд нөлөөлөхгүй бөгөөд тэдгээрийн гүйцэтгэлд ямар ч байдлаар нөлөөлөхгүй бөгөөд энэ нь ажиллаж байгаа системүүдийн шинжилгээг шууд зохион байгуулах боломжийг олгодог. DTrace-ийн давуу талуудын нэг нь AWK-тэй төстэй өндөр түвшний D хэл бөгөөд гадаад номын сантай C, Python, Lua хэл дээр eBPF боловсруулагч бичихэд санал болгож буй хэрэгслүүдийг ашиглахаас илүү мөрдөх скрипт үүсгэх нь илүү хялбар байдаг.

Oracle-ийн инженерүүд мөн GCC-д зориулсан eBPF backend үүсгэхээр ажиллаж байгаа бөгөөд аль хэдийн нийтэлсэн байна нөхөөсийн багц eBPF дэмжлэгийг GCC болон хүрсэн GNU binutils дахь eBPF-г дэмжих кодыг оруулаад. Эхэндээ eBPF-ийн дэмжлэгийн арын хэсэг нь LLVM технологи дээр суурилдаг боловч Oracle нь GCC-д eBPF-д зориулсан програм үүсгэх стандарт чадварыг сонирхож байгаа бөгөөд энэ нь Линуксийн цөмийг бүтээх болон програм бүтээхэд нэг хэрэглүүрийг ашиглах боломжийг олгоно. eBPF-ийн хувьд.

GCC-д зориулсан санал болгож буй засварууд нь байт код үүсгэх арын хэсгээс гадна eBPF-д зориулсан libgcc порт болон ELF файл үүсгэх хэрэгслүүдийг агуулдаг бөгөөд энэ нь цөмөөр хангагдсан дуудагчуудыг ашиглан eBPF виртуал машинд код ажиллуулах боломжтой болгодог. Одоогийн байдлаар Си хэл дээрх кодыг байт код руу хөрвүүлэх боломжтой (бүх хэлний функцууд байхгүй), гэхдээ ирээдүйд ашиглах боломжтой Си хэлний чадамжийг өргөжүүлэх, бусад хэлийг дэмжих, симулятор үүсгэх, eBPF програмуудыг цөмд ачаалахгүйгээр дибаг хийх GCC дэмжлэгийг нэмнэ.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх