ओरॅकल कंपनी
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 с использованием предоставляемых ядром загрузчиков. В байткод пока может транслироваться код на языке Си (не все возможности языка доступны), но в будущем ожидается расширение доступных для применения возможностей языка Си, добавление поддержки других языков, создание симулятора и добавление поддержки GCC для отладки eBPF-программ без загрузки в ядро.
स्त्रोत: opennet.ru