Appendix B. Performance tooling and empirical performance analysis
183
Locking can be at the Java code level or at the system level. Java Lock Monitor is an easy to
use tool that identifies locking bottlenecks at the Java language level or in internal JVM
locking. A profile that is slowing a significant fraction of time in kernel locking routines
indicates that system level locking that might be related to an underlying Java locking issue.
Other AIX tools, such as
splat
, are helpful in diagnosing locking problems at the system level.
Always evaluate locking in the largest required scalability configuration (the largest number
of cores).
Java Lock Monitor
The Java Lock Monitor is a valuable tool to deal with concurrency and synchronization in
multi-threaded applications. The JLM can provide detailed information, such as how
contested every monitor in the application is, how often a particular thread acquires a
particular monitor, and how often a monitor is reacquired by a thread that already owns it. The
locks that are surveyed by the JLM include both application locks and locks used internally by
the JVM, such as GC locks. These statistics can be used to make decisions about GC
policies, lock reservation, and so on, to make optimal usage of processing resources. For
more information about the Java Lock Monitor, see Java diagnostics, IBM style, Part 3:
Diagnosing synchronization and locking problems with the Lock Analyzer for Java,
available at:
http://www.ibm.com/developerworks/java/library/j-ibmtools3
Also, see “Hot method or routine analysis” on page 177.
Thread state analysis
Multi-threaded Java applications, especially applications that are running on top of
WebSphere Application Server, often have many threads that might be blocked or waiting on
locks, database operations, or file system operations. A powerful analysis technique is to look
at the state of the threads to diagnose performance issues.
Always evaluate thread state analysis in the largest required scalability configuration (the
largest number of cores).
WAIT
WAIT is a lightweight tool to assess various performance issues that range from GC to lock
contention to file system bottlenecks and database bottlenecks, to client delays and
authentication server delays, and more, including traditional performance issues, such as
identifying hot methods.
WAIT was originally developed for Java and Java Platform, Enterprise Edition workloads, but
a beta version that works with C/C++ native code is also available. The WAIT diagnostic
capabilities are not limited to traditional Java bottlenecks such as GC problems or hot
methods. WAIT employs an expert rule system to look at how Java code communicates with
the wider world to provide a high-level view of system and application bottlenecks.
WAIT is also agentless (relying on javacores,
ps
,
vmstat
, and similar information, all of which
are subject to availability). For example, WAIT produces a report with whatever subset of data
can be extracted on a machine. Getting javacores, ps, and
vmstat
data almost never requires
a change to command lines, environment variables, and so on.
Output is viewed in a browser such as Firefox, Chrome, Safari, and Internet Explorer, and
assuming one has a browser, no additional installation is needed to view the WAIT output.
Summary of Contents for Power System POWER7 Series
Page 2: ......
Page 36: ...20 POWER7 and POWER7 Optimization and Tuning Guide...
Page 70: ...54 POWER7 and POWER7 Optimization and Tuning Guide...
Page 112: ...96 POWER7 and POWER7 Optimization and Tuning Guide...
Page 140: ...124 POWER7 and POWER7 Optimization and Tuning Guide...
Page 162: ...146 POWER7 and POWER7 Optimization and Tuning Guide...
Page 170: ...154 POWER7 and POWER7 Optimization and Tuning Guide...
Page 223: ......