Conference:March 6-8, 2017
Workshops:March 9-10, 2017
Presentation: Using FlameGraphs To Illuminate The JVM
Location:
- Churchill, G flr.
Duration
Day of week:
- Wednesday
Level:
- Advanced
Persona:
- Developer, JVM
Key Takeaways
- Understand the benefits of using FlameGraphs
- Learn how to read FlameGraphs
- Familiarize yourself with Java application profiles: OS/GC/Compiler/Runtime/Java code
Abstract
FlameGraphs offer us a new way to visualize execution profiles, combined with Linux system profiler perf and the recently added -XX:+PreserveFramePointer option in JDK 8u60 we now have for the first time a way to capture a comprehensive profile for the OS, JVM and your Java code.
In this session, we explore the JVM and Java applications using this new perspective and reflect on the profiles and the utility of this new method:
- Introduction to FlameGraphs
- Old School? FlameGraphs using jstack and honest-profiler
- perf-map-agent + FlameGraphs + Java
- Java code left+right+center (oh yes, you are so special my child!)
- Profiling the profilers
- Compilers ate my mother profile
- GC thrashed my dad profile
- And more advanced FlameGraphs usage as time permits!
Interview
Currently I'm working with Martin Thompson and Todd Montgomery on Aeron, as well as maintaining JCTools and doing performance analysis work for clients.
I would like people to leave this talk with the feeling they can and should start using FlameGraphs to profile and analyse Java applications. I think it's an important tool/perspective which deserves a place in Java developers toolbox.
Why should I use Perf Java FlameGraphs?
a. A more accurate profiling method => find the ACTUAL bottlenecks
b. A better and more usable visualization => easily zoom in on parts or take in the full picture.
c. A wider scope of profiling => see your code + GC + Compiler + OS CPU utilization in one view, gain context and expand your understanding of the JVM.
d. Easy to participate! => Extend functionality or create your own tools! Filtering data and creating new insights is simple and approachable.
This is an intermediate to novice talk, there's nothing arcane going on.
Similar Talks
Tracks
-
Architecting for Failure
Building fault tolerate systems that are truly resilient
-
Architectures You've Always Wondered about
QCon classic track. You know the names. Hear their lessons and challenges.
-
Modern Distributed Architectures
Migrating, deploying, and realizing modern cloud architecture.
-
Fast & Furious: Ad Serving, Finance, & Performance
Learn some of the tips and technicals of high speed, low latency systems in Ad Serving and Finance
-
Java - Performance, Patterns and Predictions
Skills embracing the evolution of Java (multi-core, cloud, modularity) and reenforcing core platform fundamentals (performance, concurrency, ubiquity).
-
Performance Mythbusting
Performance myths that need busting and the tools & techniques to get there
-
Dark Code: The Legacy/Tech Debt Dilemma
How do you evolve your code and modernize your architecture when you're stuck with part legacy code and technical debt? Lessons from the trenches.
-
Modern Learning Systems
Real world use of the latest machine learning technologies in production environments
-
Practical Cryptography & Blockchains: Beyond the Hype
Looking past the hype of blockchain technologies, alternate title: Weaselfree Cryptography & Blockchain
-
Applied JavaScript - Atomic Applications and APIs
Angular, React, Electron, Node: The hottest trends and techniques in the JavaScript space
-
Containers - State Of The Art
What is the state of the art, what's next, & other interesting questions on containers.
-
Observability Done Right: Automating Insight & Software Telemetry
Tools, practices, and methods to know what your system is doing
-
Data Engineering : Where the Rubber meets the Road in Data Science
Science does not imply engineering. Engineering tools and techniques for Data Scientists
-
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS ideas
-
Workhorse Languages, Not Called Java
Workhorse languages not called Java.
-
Security: Lessons Learned From Being Pwned
How Attackers Think. Penetration testing techniques, exploits, toolsets, and skills of software hackers
-
Engineering Culture @{{cool_company}}
Culture, Organization Structure, Modern Agile War Stories
-
Softskills: Essential Skills for Developers
Skills for the developer in the workplace