May 9, 2007

Java Platform Performance on Multicore: Better Performance or Bigger Headache?

Session Title: Java Platform Performance on Multicore: Better Performance or Bigger Headache?
Session Abstract: Java technology-based applications are not easy to optimize, especially on multicore processors, with issues ranging from garbage collection and Java Virtual Machine (JVM) options to quality of generated Java code. Multiple cores should improve Java technology performance, but when performance doesn't materialize, developers are left wondering what's going on.

AMD CodeAnalyst Performance Analyzer allows developers using the Java programming language to correlate time-based profiles, event-based profiles, generated (JIT) code, and other hardware issues back to their original Java source code. This session discusses intelligent use of AMD CodeAnalyst Performance Analyzer to investigate ways of improving Java platform performance with multicore machines.

Highlights include hardware counters, thread investigations, the effects of changes on generated code, and investigating hot methods. By the end of the session, developers will have an understanding of how to improve the multicore-machine performance of their programs written in the Java programming language.
Track: Tools and Languages
Duration: 60
Speaker(s): Azeem Jiva, AMD

Opinion: good overview on why debugging & optimizing multi-threaded software is difficult, which really applies to JEE applications where a lot of multi-threading happens explicitly or not (pooled objects, database connections, multiple cores, etc). The speaker then explained that although there are plenty of tools out there to instrument bytecode (Jfluid, Eclipse TPTP) or just profile (gprof, OProfile, etc), none of them gathers the full spectrum of information needed for analysis. Using a couple of demos, he introduced AMD Code Analyst (free to download for Windows & Linux on the AMD website), which uses CPU hardware events to collect the lowest-level and most complete information available while you application is running. Then, it's up to you to pinpoint problems, understand what your code does wrong and fix it. No silver bullet, but if you have some idea of what you're looking, you'll get there. Good tool and good session.