A Oracle lançou o DTrace para Linux 2.0.0-1.14

Foi lançado um release experimental da ferramenta de depuração dinâmica DTrace para Linux 2.0.0-1.14, implementada como um processo em espaço de usuário, utilizando a subsistema eBPF e os mecanismos de rastreamento fornecidos pelo kernel do Linux. Em termos de funcionalidade, a implementação do DTrace baseada em eBPF é semelhante à primeira implementação do DTrace para Linux, realizada na forma de um módulo de kernel. O código do projeto é distribuído sob a licença GPLv2.

A ferramenta pode ser utilizada com kernels Linux padrão que suportam BPF. Para funcionar, é necessária a biblioteca libctf com suporte ao formato de depuração CTF (Compact Type Format), que faz parte do pacote binutils a partir da versão 2.40, ou a biblioteca libdtrace-ctf, portado do Solaris. Dois patches opcionais para o kernel 6.7 são oferecidos, permitindo acessar recursos avançados para obter dados adicionais sobre módulos e o kernel.

A tecnologia DTrace foi desenvolvida para lidar com tarefas de rastreamento dinâmico do kernel e de aplicações finais no sistema operacional Solaris. O DTrace permite aos usuários monitorar detalhadamente o comportamento do sistema e diagnosticar problemas em tempo real. Durante a depuração, o DTrace não influencia a operação das aplicações em teste e não afeta seu desempenho, o que facilita a análise de sistemas em funcionamento. Entre os pontos fortes do DTrace, destaca-se a linguagem de alto nível D, que se assemelha ao AWK, tornando a criação de scripts de rastreamento muito mais simples do que usando as ferramentas de escrita de manipuladores para eBPF em C, Python e Lua com bibliotecas externas.

Principais funcionalidades:

  • Provedores disponíveis:
    • cpc (Contador de Desempenho da CPU) - obtendo informações de desempenho.
    • dtrace - manipuladores BEGIN, END e ERROR, acionados antes ou depois de outras verificações, assim como em caso de erros.
    • fbt (Rastreamento de Fronteiras de Função) - rastreamento de chamadas de funções do kernel.
    • lockstat - rastreamento do estado das travas.
    • pid - rastreamento de chamadas de funções em processos que operam em espaço de usuário.
    • proc - rastreamento de atividades relacionadas a processos, como inicialização e término (fork, exec, exit, fault).
    • profile - salvando estatísticas de desempenho em intervalos específicos.
    • sdt, rawtp — rastreamento de kernel estático (SDT — Statically Defined Tracing).
    • usdt: rastreamento de aplicativos estáticos (USDT — Userspace Statically Defined Tracing)
    • sched — rastreamento da distribuição de recursos da CPU.
    • sycall — rastreamento de chamadas de sistema de entrada e saída.
  • Agregação de dados coletados: possibilidade de aplicar funções agregadas (avg, count, llquantize, lquantize, max, min, quantize, stddev e sum) e ações agregadas (clear, normalize, printa). Suporte à salvaguarda dos resultados da aplicação de funções agregadas em arrays normais e associativos.
  • Suporte ao rastreamento especulativo, permitindo rastrear dados de forma efêmera, decidindo quais deles devem ser registrados no buffer de rastreamento e quais devem ser descartados. Funções disponíveis: speculation, speculate, commit e discard.
  • Suporte a variáveis globais e locais, TLS (Thread-Local Storage), arrays associativos e strings.
  • Fornecimento de variáveis embutidas: arg0 — arg9, args[], caller, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, probefunc, probemod, probename, probeprov, stackdepth, tid, timestamp, ucaller, uid, uregs[], ustackdepth, walltimestamp.
  • Suporte a ações: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack e usym.
  • Disponibilidade de funções embutidas: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owned, mutex_owner, mutex_type_adaptive, mutex_type_spin, ntohl, ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • Disponibilidade de contadores de dados que não vão para os buffers de rastreamento.
  • Suporte à compilação de scripts de rastreamento na linguagem D na forma de programas BPF.
  • Pré-compilação de funções BPF para chamadas de biblioteca.
  • Opção bpflog para obter um log de verificação de programas BPF carregados.
  • Geração dinâmica de código e pré-compilação de código para reuso em programas BPF.

Mudanças na nova versão:

  • No provedor pid, aplicado para rastreamento de processos no espaço do usuário, foi adicionado suporte para rastreamento da execução de instruções por seu deslocamento no código.
  • Adicionado suporte ao uso das funções stack() e ustack() para agregar dados coletados.
  • Capacidade de remover elementos de qualquer tipo de arrays associativos através da atribuição do literal 0.
  • Adicionada a ação print para saída de dados estruturados com anotações de tipos.
  • Novas funções embutidas cleanpath(), d_path() e link_ntop() foram adicionadas.
  • Adicionado o parâmetro «-xcpu», permitindo vincular as verificações a CPUs específicas.
  • Adicionado o parâmetro «-xlockmem» para limitar o tamanho da memória.
  • Foi possibilitado o salvamento dos dados de rastreamento de processos (USDT) entre reinicializações do dtprobed.
  • Suporte ao mecanismo BTF (BPF Type Format), que fornece informações para verificação de tipos em pseudocódigo BPF.
  • Possibilidade de usar o script configure para compilação.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster