DTrace, um excelente utilitário para monitoramento de sistemas e aplicativos

DTrace é uma estrutura de rastreamento e monitoramento

DTrace

DTrace é uma estrutura completa e dinâmica de rastreamento e monitoramento Desenvolvido para diagnosticar problemas de kernel e aplicativos em sistemas de produção em tempo real. Criado inicialmente para Solaris, o DTrace foi portado para outros sistemas operacionais do tipo Unix.

DTrace foi desenvolvido para apoiar administradores de sistema na solução de problemas de rastreamento dinâmico no kernel e em aplicativos finais no sistema operacional Solaris e é compatível com kernels Linux padrão que suportam BPF. Para funcionar, ele requer a biblioteca libctf compatível com o formato de depuração CTF incluída no pacote binutils ou a biblioteca libdtrace-ctf, portada do Solaris.

Esta ferramenta permite que administradores de sistema e desenvolvedores:

  • Monitoramento do sistema: O DTrace fornece ao usuário informações detalhadas sobre a utilização dos recursos do computador, como CPU, memória e armazenamento, permitindo identificar gargalos e melhorar a eficiência do sistema.
  • Problemas de desempenho de depuração: Ele permite identificar e diagnosticar problemas de desempenho em tempo real, facilitando a solução de problemas e a otimização do sistema.
  • Otimize o desempenho: Ao fornecer informações detalhadas sobre o comportamento do aplicativo, o DTrace permite que os desenvolvedores otimizem o desempenho de seus programas e melhorem a eficiência geral do sistema.

Até alguns anos atrás Oracle forneceu suporte DTrace para Linux e a ferramenta é oferecida como uma implementação de um processo de espaço de usuário que utiliza o subsistema eBPF e mecanismos de rastreamento padrão fornecidos pelo kernel Linux. Em termos de funcionalidade, esta implementação do DTrace baseada em eBPF se assemelha à primeira versão do DTrace para Linux, que foi implementada como um módulo do kernel.

Sobre o DTrace 2.0.0-1.14

Atualmente, O DTrace está na versão 2.0.0-1.14 e é distribuído na forma de dois patches opcionais para o kernel 6.7 que permitem utilizar funções avançadas para obter dados adicionais sobre os módulos e o kernel, além do provedor pid, usado para rastrear processos no espaço do usuário, agora possui suporte para rastrear a execução de instruções de acordo com seu deslocamento no espaço do usuário.

Possui suporte para usar as funções stack() e ustack() para agregar dados coletados, capacidade de remover elementos de qualquer tipo de matrizes associativas atribuindo literal 0, facilitando o gerenciamento de dados em matrizes.

O DTrace 2.0.0-1.14 oferece diversas opções para diferentes aspectos do sistema, incluindo contadores de desempenho de CPU, limites de recursos, bloqueios, ciclo de vida do processo e foi incluída uma nova ação de impressão para gerar dados estruturados com anotações de tipo, melhorando a apresentação dos resultados do monitoramento.

Além disso permite agregar dados de plotagem e executar ações com base nos resultados com novas funções cleanpath(), d_path() e link_ntop() foram integrados e a capacidade de salvar dados de rastreamento de processo (USDT) entre reinicializações do dtprobed foi fornecida, garantindo a continuidade do rastreamento mesmo após as reinicializações.

Além disso, também Ressalta-se que foi adicionado o parâmetro "-xcpu", que permite que a verificação seja vinculada a CPUs específicas, A opção "-xlockmem" foi introduzida para limitar o tamanho da memória utilizada, otimizando o desempenho do sistema.

Foi adicionado suporte para o mecanismo BTF, que fornece informações de verificação de tipo em pseudocódigo BPF e agora é possível usar o script de configuração para construir, simplificando o processo de configuração e customização do kit de ferramentas de depuração.

finalmente se você está interessado em saber mais sobre isso, você pode verificar o detalhes no link a seguir.

Obtenha o DTrace

Para os interessados ​​​​na ferramenta, você deve saber que a Oracle oferece pacotes de espaço de usuário DTrace x86_64 e aarch64 pré-construídos para Oracle Linux 9 (kernel UEK7), Oracle Linux 8 (kernel UEK7 ou UEK6) e Oracle Linux 7 (kernel UEK6).

Já para outras distribuições você deve ter uma série de dependências, que você pode consultar neste link e que são necessárias antes de compilar o código-fonte por conta própria.