Flame Graphs são gráficos que mostram o perfil de execução de aplicações Java de forma concisa. Eles fornecem uma visão geral do uso da CPU, incluindo overhead de compilação e coleta de lixo, em código Java e nativo. Flight Recorder da Oracle permite gerar Flame Graphs, mas requer licença comercial; perf no Linux é outra opção, mas requer configurações específicas. Flame Graphs podem identificar gargalos de desempenho, mas requerem compatibilidade de hardware e software.
12. •dá para ver TUDO o que se passa
•em código java
•na JVM: compiler, gc, etc…
•em libs nativas (NIO)
•no kernel
perf
13. •só para Linux
•só com Java 8 > u60
•tem que levar o -XX:+PreserveFramePointer
• 0-3% de impacto na performance
• necessita do perf-map-agent
• tem impacto na altura de recolher os
símbolos
perf
17. •Fácil de perceber a “big picture”
•Mostra coisas que os métodos
tradicionais não vêm
• Overhead de compilação
• Overhead de GC
• Tempo em código nativo
•Pouco impacto na performance
• A Netflix usa em produção
Benefícios
18. •Uso com Java é problemático
•preencher os stacks
•obter os símbolos
•Para ter todas as vantagens, requisitos
exigentes:
•SO “unixy”
•Java 8
Problemas