Compañía Oracle
DTrace xa
eBPF é un intérprete de bytecode integrado no núcleo de Linux que permite crear controladores de operacións de rede, supervisar o funcionamento do sistema, interceptar chamadas ao sistema, controlar o acceso, procesar eventos con cronometraxe (perf_event_open), contar a frecuencia e o tempo de execución das operacións, realizar o rastrexo mediante kprobes. /uprobes /tracepoints. Grazas ao uso da compilación JIT, o bytecode tradúcese sobre a marcha en instrucións da máquina e execútase co rendemento do código nativo. DTrace pódese implementar enriba de eBPF, de forma similar a como se implementa enriba de eBPF
A tecnoloxía DTrace desenvolveuse para o sistema operativo Solaris para resolver o problema de rastrexar dinámicamente o núcleo do sistema e as aplicacións finais, dando ao usuario a posibilidade de supervisar o comportamento do sistema en detalle e diagnosticar problemas en tempo real. Durante o proceso de depuración, DTrace non afecta o funcionamento das aplicacións obxecto de estudo e non afecta de ningún xeito o seu rendemento, o que permite organizar a análise dos sistemas en execución sobre a marcha. Un dos puntos fortes de DTrace é a linguaxe D de alto nivel, similar a AWK, na que é moito máis doado crear scripts de rastrexo que usar as ferramentas que se ofrecen para escribir controladores eBPF en C, Python e Lua con bibliotecas externas.
Os enxeñeiros de Oracle tamén están a traballar na creación dun backend eBPF para GCC e xa o publicaron
Ademais do backend de xeración de bytecode, os parches propostos para GCC tamén inclúen un porto libgcc para eBPF e ferramentas para xerar ficheiros ELF, o que permite executar código na máquina virtual eBPF mediante cargadores proporcionados polo núcleo. Polo momento, o código na linguaxe C pódese traducir a bytecode (non todas as funcións da linguaxe están dispoñibles), pero no futuro espérase que amplíe as capacidades da linguaxe C dispoñibles para o seu uso, agregue compatibilidade con outros idiomas, cree un simulador e engadir soporte de GCC para depurar programas eBPF sen cargalos no núcleo.
Fonte: opennet.ru