Virtual machines are commonly used in commercially-significant systems, for example, Sun Microsystems' Java and Microsoft's .NET. The virtual machine offers many advantages to the system designer and administrator, but complicates the task of workload characterization: it presents an extra abstraction layer between the application and observed hardware effects. Understanding the behavior of the virtual machine is therefore important for all levels of the system architecture.
We have constructed a tool which examines the state of a Sun Java HotSpot™ virtual machine running inside Virtutech's Simics execution-driven simulator. We can obtain detailed information about the virtual machine and application without disturbing the state of the simulation. For data, we can answer such questions as: Is a given address in the heap? If so, in which object? Of what class? For code, we can map program counter values back to Java methods and approximate Java source line information. Our tool allows us to relate individual events in the simulation, for example, a cache miss, to the higher-level behavior of the application and virtual machine.
In this report, we present the design of our tool, including its capabilities and limitations, and demonstrate its application on the simulation's cache contents and cache misses.
Cited By
- Shingarov B Live Introspection of Target-Agnostic JIT in Simulation Proceedings of the International Workshop on Smalltalk Technologies, (1-9)
- Tu C, Hsu H, Chen J, Chen C and Hung S (2014). Performance and power profiling for emulated Android systems, ACM Transactions on Design Automation of Electronic Systems (TODAES), 19:2, (1-25), Online publication date: 1-Mar-2014.
- Wimmer C, Haupt M, Van De Vanter M, Jordan M, Daynès L and Simon D (2013). Maxine, ACM Transactions on Architecture and Code Optimization (TACO), 9:4, (1-24), Online publication date: 1-Jan-2013.
Recommendations
A java virtual machine architecture for very small devices
Special Issue: Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool support for embedded systems (San Diego, CA).The smallest complete Java™ virtual machine implementations in use today are based on the CLDC standard and are deployed in mobile phones and PDAs. These implementations require several tens of kilobytes. Smaller Java-like implementations also exist, ...