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

Post on 07-Jan-2017

2.219 views 1 download

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

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