Skip to main content

Tracing and Profiling Java (and Native) Applications in Production

Kaushik Srenevasan (Twitter)
Java & JVM
Average rating: ****.
(4.00, 4 ratings)

The ability to understand the behavior of a software system so as to be able to answer questions about its health, while important has always been a challenge for software developers. System tools or language debuggers and profilers tend to be myopic in their scope and cumbersome to understand, setup and use; More so when applied to a distributed system. Specifically, requiring recompilation of software with additional instrumentation, adding a non-trivial performance overhead, and, equally importantly, requiring an elaborate setup renders tools unfit to be used in production.

This talk describes a new, low overhead, full stack tool (based on the Linux perf profiler and infrastructure built into the Hotspot JVM) we’ve built at Twitter to help solve this problem of dynamically profiling and tracing the behavior of the kernel and applications (including managed runtimes like the JVM) in production.

Photo of Kaushik Srenevasan

Kaushik Srenevasan


Kaushik Srenevasan is the Lead on the VM Diagnostics team at Twitter,
where he hacks on the Hotspot JVM, on, among other things, improving
its observability. Before joining Twitter he authored the Chakra
JavaScript runtime’s AMD64 backend compiler and worked on the .NET CLR at