Approaches to Analyzing Performance Data

The metrics you choose to view depend on your application domain, your code, the demands for the application, and the operating environment. Look at all of the available ones, and analyze at least a few of the topmost entries.

Whenever possible, the console visualizers present all metrics sorted in decreasing order of resources used. This places the largest resource users at the top of the screen. Evaluate them knowing your application and its characteristics. Use your intuition. If you find anything that you cannot explain, take the time to investigate and find the cause. A high level of resource consumption may be legitimate, but it can also be an indication of a performance bottleneck.

Looking at the Data from the Bottom Up

One approach to performance analysis is the bottom-up technique. It can be used even if you are not very familiar with the application. Look at the following metrics, if available:

Method Call CountExclusive Method CPU TimeExclusive Method Clock Time

If you find a method, or a few methods that consume much time, they can become a target for your performance tuning. Similarly, if a method is called excessively many times, check to see if you can reduce the number of calls.

This will often require investigating the invocation context for the method in question. Mark the method , and find it later in the corresponding call graph. (See Using Call Graph Trees (page 75)).

Looking at the Data from the Top Down

An alternative, top-down approach to profile data analysis is to start from the call graph based on Clock or CPU time and continue expanding the topmost nodes until you find a method or multiple methods that implement high-level operations characteristic for your application (that is, are responsible for transaction processing). By expanding this node you can see how this high-level operation splits its work among the methods it calls. If your intuition tells you that the numbers do not look appropriate or correct, continue expanding the nodes that consume too much time to find the reason for the anomaly.

Looking for Inefficiencies in Memory Usage

Large applications put a lot of stress on all components of the computing system. One strategy for understanding the behavior of your application is to look at how well the application is working within the boundaries set for heap size and the selected garbage collection type in use by the JVM. Adjusting heap size and garbage collection type can improve memory usage and work efficiency when adjusted to the demands of a particular application. For a view of memory usage and object metrics, see Profile Memory and/or Heap Activity (page 144). See Analyzing Garbage Collection Data (page 80) to obtain a detailed view of the impact of GC activity on the system.

Operating system performance, third-party software performance, the bandwidth of the I/O subsystem, and so on, all affect application performance. Analyzing these factors is beyond the scope of this tool, but it should always remain on your agenda.

Considerations in Interpreting the Data

What information can be gleaned from various metrics depends on how the values are calculated. Use this section to understand the meaning of the performance measures used by HPjmeter.

68 Profiling Applications