Компанијата Oracle
DTrace веќе
eBPF е преведувач на бајтекод вграден во кернелот на Линукс кој ви овозможува да креирате ракувачи со мрежни операции, да ја следите работата на системот, да пресретнувате системски повици, да го контролирате пристапот, да обработувате настани со мерење на времето (perf_event_open), да ја броите фреквенцијата и времето на извршување на операциите, да вршите следење користејќи kprobes / сонди / точки во трага. Благодарение на употребата на компилацијата JIT, бајт-кодот се преведува во лет во машински инструкции и се извршува со изведба на мајчин код. DTrace може да се имплементира на врвот на eBPF, слично како што се имплементира на врвот на eBPF
Технологијата DTrace беше развиена за оперативниот систем Solaris за да го реши проблемот со динамичко следење на јадрото на системот и крајните апликации, давајќи му на корисникот можност детално да го следи однесувањето на системот и да ги дијагностицира проблемите во реално време. За време на процесот на дебагирање, DTrace не влијае на работата на апликациите што се проучуваат и на кој било начин не влијае на нивните перформанси, што ви овозможува да ја организирате анализата на системите што работат во лет. Една од силните страни на DTrace е јазикот D на високо ниво, сличен на AWK, во кој е многу полесно да се креираат скрипти за следење отколку да се користат алатките понудени за пишување ракувачи eBPF во C, Python и Lua со надворешни библиотеки.
Инженерите од Oracle исто така работат на создавање на заднина eBPF за GCC и веќе објавија
Покрај заднината за генерирање бајтекод, предложените закрпи за GCC вклучуваат и libgcc порта за eBPF и алатки за генерирање ELF-датотеки, што овозможува извршување на код во виртуелната машина eBPF со помош на натоварувачи обезбедени од кернелот. Засега, кодот на јазикот C може да се преведе во бајтекод (не се достапни сите јазични карактеристики), но во иднина се очекува да се прошират можностите на јазикот C достапни за употреба, да се додаде поддршка за други јазици, да се создаде симулатор и додадете поддршка за GCC за дебагирање на програмите eBPF без вчитување во јадрото.
Извор: opennet.ru