Tracing and Profiling Java (and Native) Applications in Production

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.

Speaker Details

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 improving the performance of the .NET Common Language Runtime at Microsoft.