xdProf is a cross-platform tool that captures and analyzes stack traces sent at a fixed interval from Java Virtual Machines in a distributed system. The xdProf client uses the JVMPI and works with any compliant implementation; no access to application source code is necessary, no library modifications are needed, and there is no run-time instrumentation of Java byte code. Configuration options given at virtual machine startup specify the interval for stack trace transmission and the remote xdProf server. The xdProf server collects information from multiple xdProf clients and provides an extensible interface for analysis. Current tools include a GUI for viewing the most recent stack traces from multiple VMs and the generation of control flow graphs for each VM. The performance impact of the xdProf client sending data over a local area network is minimal: less than a 8% increase in total elapsed time for a set of standard benchmarks. Future plans include real-time visualization, reliability estimation, trace capture, and performance analysis. Contact John Lambert for more information.


xdProf will compile on Intel/Win32 (Visual C++), Intel/Linux (g++), and Ultra/Solaris (g++): it's written in C++ and uses the STL. xdProf uses the BSD license. I'll post binaries for other platforms as soon as I get a chance.


Quick Start

To start the xdProf server (do this before you start the clients): download xdprof-server.jar and put it in a directory. From the command-line, type:
java -cp xdprof-server.jar org.xdprof.listener.ServerGUI 1337

To start the xdProf clients: download xdprof.dll (for Win32 platforms, Sun/IBM JDK 1.3) and put it in the same directory as your Java program. Then, all on one line:
java -classic -Xnoagent -Xdebug -Xrunxdprof:server=machine_name,port=port#_above,refresh=in_milliseconds,description=Something ClassToRun args etc

If you want to use the HotSpot VM, take off the -classic flag. The Classic VM is much much slower, but provides more information; read the paper for more details.


I've used the xdProf client on the Win32 Sun 1.3 JDK (HotSpot and Classic), Win32 Sun 1.2 JDK (JIT and Classic), IBM Win32 1.3 JDK (JIT and Classic), the Intel/Linux IBM JDK 1.3, and Ultra/Solaris Sun JDK 1.3 (HotSpot and Classic). The xdProf server is written entirely in Java.

Contributions/Future Work

I'd be happy to work with people who are interested in contributing to xdProf. If you have any suggestions or ideas, feel free to email me or check out the xdProf project at SourceForge.

URL: http://xdprof.sourceforge.net / Contact: John Lambert jlambert@jlambert.com

SourceForge Logo