Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Tecnologia da Internet das Coisas

Perfilando Aplicações Distribuídas com Linux perf: Guia Prático

Perfilando Aplicações Distribuídas com Linux perf: Guia Prático

Otimizar aplicação madura pode parecer caçar agulha no palheiro. A melhor forma de identificar gargalos reais de performance é deixar dados, não intuição, guiar suas decisões. Na prática, código mais time-consuming é frequentemente o menos óbvio.

Quando suspeito que um pedaço de código é lento, primeiro verifico a evidência antes de modificá-lo.

Profiling transforma essa intuição em fatos mensuráveis. Embora existam dezenas de profilers no mercado, escolher ferramenta certa para sistema multi-threaded ou distribuído pode ser desafiador. Profilers tradicionais de contagem de instruções como Callgrind podem distorcer timing, especialmente sob contenção pesada de mutex, porque medem instruções em vez de wall-clock time.

Profilers estatísticos, por outro lado, amostram programa em execução com baixo overhead, tornando-os ideais para workloads complexos, concorrentes. perf do Linux é exemplo premier desta abordagem.

Abaixo workflow step-by-step demonstrando como usar perf junto com FlameGraph de Brendan Gregg para identificar hot spots em aplicação distribuída. O exemplo visa sample c/hello_dynamic do RTI Connext 5.3.0.

1. Instalar perf
No Ubuntu, execute:

sudo apt-get install linux-tools-common linux-tools-3.13.0-107-generic

2. Clonar FlameGraph
Clone repositório para local conveniente (ex: seu home directory):

git clone https://github.com/brendangregg/FlameGraph

3. Build do exemplo
Navegue para rti_workspace/examples/c e compile com debug symbols:

export DEBUG=1 make -f makefile_Hello_x64Linux3gcc4.8.2

Substitua nome do makefile pelo que corresponde sua plataforma se necessário.

4. Executar publisher enquanto profiling
Inicie subscriber em background, então lance perf:

objs/x64Linux3gcc4.8.2/Hello sub & sudo perf record -g objs/x64Linux3gcc4.8.2/Hello pub

Após curto período de teste, pressione Ctrl+C para parar publisher. perf gerará perf.out.

5. Converter dados para FlameGraph
Traduzir output do perf em folded stack file:

perf script -f | ~/FlameGraph/stackcollapse-perf.pl > out.perf-folded

Então gerar flame graph visual:

~/FlameGraph/flamegraph.pl out.perf-folded > perf.svg

6. Inspecionar resultados
Abra perf.svg em navegador web. Eixo horizontal mostra tempo gasto em cada função, enquanto barras empilhadas revelam call stack. Clicar em barra dá zoom naquele stack. Rodar publisher sem subscriber removerá porção right-hand do gráfico, confirmando que DDS só emite dados quando subscribers existem.

Perf oferece muitas mais opções — ajustar frequência de sampling, excluir código kernel, ou focar em CPUs específicos. Se você tem dicas ou descobriu ferramentas complementares que simplificam profiling, compartilhe nos comentários.

Happy profiling!

Tecnologia da Internet das Coisas

  1. O Molibdênio Pode Combinar com Outros Elementos? Insights de Especialistas sobre Liga e Uso em Alta Temperatura
  2. Construindo Aplicações Híbridas Blockchain-Nuvem com Ethereum e Google Cloud
  3. Construa Apps Móveis Serverless Escaláveis com React Native e AWS
  4. Sensor de Proximidade Indutivo: Projeto de Circuito, Funcionalidade e Aplicações Práticas
  5. Sensores Analógicos vs Digitais: Tipos, Aplicações e Exemplos Práticos
  6. Microchip Lança MCUs Baseados em Arm para Missões Espaciais Escaláveis — de COTS a Tolerantes e Endurecidos à Radiação
  7. Elimine Gargalos de TI com Plataformas Low-Code: Simplificando a Transformação Digital
  8. Ovo Energy Fortalece Estratégia de Energia Distribuída com Aquisição de Smart Grid VCharge
  9. Roteador CNC para Madeira: Precisão Versátil para Móveis de Alta Qualidade e Mais
  10. IA na Medicina: 5 Aplicações Reais Comprovadas com Exemplos Práticos