Компания Oracle
DTrace вече
eBPF е интерпретатор на байт код, вграден в ядрото на Linux, който ви позволява да създавате манипулатори на мрежови операции, да наблюдавате работата на системата, да прихващате системни повиквания, да контролирате достъпа, да обработвате събития с поддържане на времето (perf_event_open), да броите честотата и времето за изпълнение на операциите, да извършвате проследяване с помощта на kprobes /uprobes /tracepoints. Благодарение на използването на 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