Empresa Oracle sobre o trabalho de transferência das alterações relacionadas ao DTrace para o código principal e os planos para implementar a tecnologia de depuração dinâmica do DTrace sobre a infraestrutura padrão do kernel. Linux, ou seja, usando subsistemas como o eBPF. Inicialmente, o principal problema com o uso do DTrace em Linux Havia incompatibilidade no nível da licença, mas em 2018, a Oracle... Código DTrace sob GPLv2.
DTrace já oferecido como parte de um kernel estendido para a distribuição Oracle LinuxPorém, para uso em outras distribuições, requer patches adicionais no kernel, o que limita a utilização dessa tecnologia. Por exemplo, a Oracle Instruções detalhadas para instalar e usar o DTrace no Fedora. LinuxÉ necessária montagem para a instalação. e o uso do kernel Linux, remontado a partir de . Para automatizar a execução da construção do kernel com patches Oracle e Fedora, propõe-se .
eBPF é um recurso integrado ao kernel Linux Um interpretador de bytecode que permite criar manipuladores de operações de rede, monitorar operações do sistema, interceptar chamadas de sistema, controlar acessos, processar eventos com temporização (perf_event_open), calcular a frequência e o tempo de execução de operações e realizar rastreamento usando kprobes/uprobes/tracepoints. Graças ao uso da compilação just-in-time (JIT), o bytecode é traduzido em instruções de máquina em tempo real e executado com o desempenho de código nativo. O DTrace pode ser implementado sobre o eBPF, de forma semelhante à sua implementação sobre o próprio eBPF. ferramentas de rastreamento existentes.
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 integrar o suporte eBPF no GCC e Inclui código para suporte a eBPF no GNU binutils. O backend eBPF é inicialmente baseado em tecnologias LLVM, mas a Oracle tem interesse em adicionar recursos nativos de geração de eBPF ao GCC, o que permitirá o uso de uma única cadeia de ferramentas tanto para compilação quanto para builds do kernel. Linux, bem como para a criação de programas para o eBPF.
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
