At this years Java Server-Side Symposium conference, I gave a talk on considering Java performance from a system-wide perspective. The talk aims at some general principles to start, then delves into the big point: the underlying system matters, a lot. I show in these slides a drill-down approach with a badly-designed Java app using process and run-time analysis tools available in the Solaris operating system.
The more interesting part of such talks is often a live demo, often fixing an ugly but subtle code bug, then showing how the apps performances in a so-much-better way. To keep your all-too-fleeting interest, your speaker typically uses graphic data visualization tools (VisualVM, JMeter) and maybe some other cool eye candy. This presentation doesn't have any of that -- for a reason -- but I think it's a good start for anyone who wants to peek over the JVM at the system to see how they can be correlated in a system-wide view of what's running poorly.
Kirk Pepperdine's talk has some interesting aspects as well. While his talk included a more in-depth live demo, his slides come to simple, effective points about how you should model performance -- more concise than mine. I tried to complement this talk, rather than compete with it, by adjusting my own presentation:
Kirk's had a second talk on performance, co-presented with Dan Hardiker. It repeats Kirk's metaphor of the Dominating Consumer from the first talk, perhaps a more useful metaphor than the dusty old "bottleneck." It contains some good high-level points that I would have modified my presentation further to complement. You may find it useful too: