The WHAM Tools are used as part of a performance tuning methodology
that has been proven to work by numerous customers as well as WHAM's
consultants over the years. The process begins by understanding the
application architecture and then collecting the appropriate data during
load test, functional tests or even in production problem situations.
In cases where CPU usage is a signifcant contributtion
to the response time of an application or where resource usage needs to be
minimized, WHAM has noted that the practice of CPU profiling is
quite helpful in identifying the appropriate locations for code tuning.
CPU profiling is the process of taking regularly spaced samples of the
current instruction locaion/address under execution for a program and
mapping them back to the libraries, functions, and lines of code in the
program.
The analysis of the samples can be by time, by function, or a combination of
both if timestamps are also recorded. The longer the program runs and the
more samples are collected, the better is the estimate of the distribution
of the CPU usage in the program. There are commercial tools that enable this
for UNIX systems and there is a system utility called prof/gprof that allows
a developer to do code profiling under UNIX. The weakness of these tools is
that they require recompiling the application and insert additional code
in order to trace caller/callee relationships. The result is a program that
uses almost two times the CPU. This means that profiling is generally not
possible for applications that are in system test or production. So it is
left up to developers to do this analysis and if they don't there isn't much
recourse for integrators.
WHAM has remedied this situation by creating a code-profiling capability that
doesn't require recompling or relinking in any way and can be run against
an applicaiton that is already up and running such as a production or test
environment. In addition, since WHAM collects timestapms with the instruction
address (IA) values, the changes in CPU profile with respect to time can be
analyzed. This is quite useful in testing various different loads applied
to an application. The WHAM profiling agent is non-intrusive and uses at
most .5% of the system resources to accomplish a sampling of all CPUs at
a rate of 1000 samples per second.
The WHAM Profiling agent can profile Java applications to the method
level. This too is accomplished in a non-intrusive fashion. Commercial Java
profiling tools do not use CPU sampling but instead measure latency by taking
timestamps at the entry and exit from each method. This means that two
samples per method call must be recorded and additionally, all the storage
for this is part of the application memory footprint. The additional overhead
introduced by Java profilers far exceeds 2x as in the compiled applications
on UNIX. Typically, a java profiler will increase the time taken for an
application to run by a factor of five to ten.
The WHAM Profiling agent is the tool that integrators and system analysts have
long needed in order to get a handle on CPU hogs. This data can be used by an
objective observer to make criticisms of CPU heavy applications. Developers
are put off by profiling because it is a significant extra effort. Consider
that the turnaround time to make and test a change is two to ten times as long
when standard profiling tools are used. This means a 50% to 90% reduction in
productivity is associated with code profiling. The result is that typically,
applications are not tuned and timelines are addressed with more/faster
hardware. WHAM can save your organization time and money if you use our
non-intrusive profiling tools.
The following demo highlights some of the important
features of the WHAM Profiling agent through the Silhouette toolset.