uma (boa) alternativa para
profiling de apps Java
Flame Graphs
Básicos
O que são?
Call stack
Presença nas amostras
para Java!
CPU flame graphs
Flight Recorder
DEMO TIME
•Funciona bem, para java
•disponível em todos os OSs
•licença comercial Oracle
•não se pode usar em produção
•pelo menos sem pagar…
Flight Recorder
perf
DEMO TIME
•dá para ver TUDO o que se passa
•em código java
•na JVM: compiler, gc, etc…
•em libs nativas (NIO)
•no kernel
perf
•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
dtrace, Instruments, hprof, jstack, etc…
Outros
NO DEMO
THIS TIME
Conclusões?
•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
•Uso com Java é problemático
•preencher os stacks
•obter os símbolos
•Para ter todas as vantagens, requisitos
exigentes:
•SO “unixy”
•Java 8
Problemas
Outros tipos
Mais informação
http://www.slideshare.net/brendangregg/javaone-2015-java-mixedmode-flame-graphs
https://github.com/chrishantha/jfr-flame-graph
https://github.com/jrudolph/perf-map-agent
https://github.com/brendangregg/FlameGraph
http://www.brendangregg.com/flamegraphs.html
Links

Flame Graphs, uma (boa) alternativa para profiling de apps Java