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

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

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

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

uma (boa) alternativa para profiling de apps Java

Flame Graphs

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

Básicos

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

O que são?

Page 4: Flame Graphs, uma (boa) alternativa para profiling de apps Java
Page 5: Flame Graphs, uma (boa) alternativa para profiling de apps Java

Call stack

Presença nas amostras

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

para Java!

CPU flame graphs

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

Flight Recorder

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

DEMO TIME

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

•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

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

perf

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

DEMO TIME

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

•dá para ver TUDO o que se passa •em código java •na JVM: compiler, gc, etc… •em libs nativas (NIO) •no kernel

perf

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

•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

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

dtrace, Instruments, hprof, jstack, etc…

Outros

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

NO DEMO THIS TIME

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

Conclusões?

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

•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

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

•Uso com Java é problemático •preencher os stacks •obter os símbolos

•Para ter todas as vantagens, requisitos exigentes: •SO “unixy” •Java 8

Problemas

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

Outros tipos

Page 20: Flame Graphs, uma (boa) alternativa para profiling de apps Java
Page 21: Flame Graphs, uma (boa) alternativa para profiling de apps Java
Page 22: Flame Graphs, uma (boa) alternativa para profiling de apps Java
Page 23: Flame Graphs, uma (boa) alternativa para profiling de apps Java

Mais informação

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

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