Oracle има намера да го преработи DTrace за Linux користејќи eBPF

Компанијата Oracle пријавени за работата на пренесување на промените поврзани со DTrace во upstream и плановите за имплементација на DTrace технологија за динамично дебагирање на врвот на стандардната инфраструктура на кернелот на Linux, имено користење на потсистеми како што е eBPF. Првично, главниот проблем со користењето на DTrace на Linux беше некомпатибилноста на ниво на лиценца, но во 2018 година Oracle релиценциран DTrace код под GPLv2.

DTrace веќе долго време се нуди како дел од продолжен кернел за дистрибуцијата на Oracle Linux, но за негова употреба во други дистрибуции бара употреба на дополнителни закрпи на кернелот, што ја ограничува употребата на оваа технологија. Како пример, Oracle подготвени детални упатства за инсталирање и користење на DTrace на Fedora Linux. Потребно е склопување за инсталација алатки и употребата на кернелот Линукс повторно изграден од закрпи. За да се автоматизира извршувањето на градењето кернел со закрпи Oracle и Fedora, се предлага скрипта.

eBPF е преведувач на бајтекод вграден во кернелот на Линукс кој ви овозможува да креирате ракувачи со мрежни операции, да ја следите работата на системот, да пресретнувате системски повици, да го контролирате пристапот, да обработувате настани со мерење на времето (perf_event_open), да ја броите фреквенцијата и времето на извршување на операциите, да вршите следење користејќи kprobes / сонди / точки во трага. Благодарение на употребата на компилацијата JIT, бајт-кодот се преведува во лет во машински инструкции и се извршува со изведба на мајчин код. DTrace може да се имплементира на врвот на eBPF, слично како што се имплементира на врвот на eBPF работают постоечки алатки за следење.

Технологијата DTrace беше развиена за оперативниот систем Solaris за да го реши проблемот со динамичко следење на јадрото на системот и крајните апликации, давајќи му на корисникот можност детално да го следи однесувањето на системот и да ги дијагностицира проблемите во реално време. За време на процесот на дебагирање, DTrace не влијае на работата на апликациите што се проучуваат и на кој било начин не влијае на нивните перформанси, што ви овозможува да ја организирате анализата на системите што работат во лет. Една од силните страни на DTrace е јазикот D на високо ниво, сличен на AWK, во кој е многу полесно да се креираат скрипти за следење отколку да се користат алатките понудени за пишување ракувачи eBPF во C, Python и Lua со надворешни библиотеки.

Инженерите од Oracle исто така работат на создавање на заднина eBPF за GCC и веќе објавија сет на закрпи да се интегрира поддршката eBPF во GCC и постигне вклучувајќи код за поддршка на eBPF во GNU binutils. Првично, задниот дел за поддршка на eBPF се заснова на LLVM технологии, но Oracle е заинтересиран за појавата во GCC на стандардна способност за генерирање програми за eBPF, што ќе овозможи користење на еден пакет алатки и за градење на кернелот на Linux и за градење програми за eBPF.

Покрај заднината за генерирање бајтекод, предложените закрпи за GCC вклучуваат и libgcc порта за eBPF и алатки за генерирање ELF-датотеки, што овозможува извршување на код во виртуелната машина eBPF со помош на натоварувачи обезбедени од кернелот. Засега, кодот на јазикот C може да се преведе во бајтекод (не се достапни сите јазични карактеристики), но во иднина се очекува да се прошират можностите на јазикот C достапни за употреба, да се додаде поддршка за други јазици, да се создаде симулатор и додадете поддршка за GCC за дебагирање на програмите eBPF без вчитување во јадрото.

Извор: opennet.ru

Додадете коментар