Oracle pretende redesenhar o DTrace para Linux usando eBPF

Empresa Oracle relatado sobre o trabalho de transferência de alterações relacionadas ao DTrace para upstream e 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 no Linux era a incompatibilidade no nível da licença, mas em 2018 a Oracle licenciado novamente Código DTrace sob GPLv2.

DTrace já muito tempo é oferecido como parte de um kernel estendido para a distribuição Oracle Linux, mas para seu uso em outras distribuições requer o uso de patches de kernel adicionais, o que limita o uso desta tecnologia. Por exemplo, a Oráculo preparado instruções detalhadas para instalar e usar o DTrace no Fedora Linux. Montagem necessária para instalação ferramentas e o uso de um kernel Linux reconstruído a partir de manchas. Para automatizar a execução da construção do kernel com patches Oracle e Fedora, propõe-se escrita.

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 работают 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 conjunto de remendos integrar o suporte eBPF no GCC e tem feito incluindo código para suportar eBPF em GNU binutils. Inicialmente, o backend para suporte eBPF é baseado em tecnologias LLVM, mas a Oracle está interessada no surgimento no GCC de uma capacidade padrão de geração de programas para eBPF, que permitirá a utilização de um kit de ferramentas tanto para construção do kernel Linux quanto para construção de programas para 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

Adicionar um comentário