Empresa Oracle
DTrace já
eBPF é um interpretador de bytecode embutido no kernel do Linux que permite criar manipuladores de operação de rede, monitorar a operação do sistema, interceptar chamadas do sistema, controlar o acesso, processar eventos com cronometragem (perf_event_open), contar frequência e tempo de execução das operações, realizar rastreamento usando kprobes /uprobes /tracepoints. Graças ao uso da compilação JIT, o bytecode é traduzido dinamicamente em instruções de máquina e executado com o desempenho do código nativo. O DTrace pode ser implementado sobre o eBPF, semelhante à forma como é implementado sobre o eBPF
A tecnologia DTrace foi desenvolvida para o sistema operacional Solaris para resolver o problema de rastreamento dinâmico do kernel do sistema e dos aplicativos finais, dando ao usuário a capacidade de monitorar detalhadamente o comportamento do sistema e diagnosticar problemas em tempo real. Durante o processo de depuração, o DTrace não afeta o funcionamento dos aplicativos em estudo e não afeta de forma alguma seu desempenho, o que permite organizar dinamicamente a análise dos sistemas em execução. Um dos pontos fortes do DTrace é a linguagem D de alto nível, semelhante ao AWK, na qual é muito mais fácil criar scripts de rastreamento do que usar as ferramentas oferecidas para escrever manipuladores eBPF em C, Python e Lua com bibliotecas externas.
Engenheiros da Oracle também estão trabalhando na criação de um backend eBPF para GCC e já publicaram
Além do backend de geração de bytecode, os patches propostos para GCC também incluem uma porta libgcc para eBPF e ferramentas para geração de arquivos ELF, possibilitando a execução de código na máquina virtual eBPF usando carregadores fornecidos pelo kernel. Por enquanto, o código na linguagem C pode ser traduzido em bytecode (nem todos os recursos da linguagem estão disponíveis), mas no futuro espera-se expandir os recursos da linguagem C disponíveis para uso, adicionar suporte para outras linguagens, criar um simulador e adicione suporte GCC para depuração de programas eBPF sem carregar no kernel.
Fonte: opennet.ru