Design Goals
There are four primary goals for the HPM tracing infrastructure.
- Thread-specific data
- The infrastructure must be able to
discriminate between the various Java threads that make up the
application. Many large Java applications are multithreaded, with
different threads being assigned different portions of the overall
computation.
- Fine-grained temporal information
- The performance
characteristics of a thread may vary over time. The infrastructure
must enable the identification of such changes.
- SMP Support
- The infrastructure must work on SMPs.
In an SMP environment, multiple threads will be
executing concurrently on different physical processors,
and the same Java thread may execute on different processors over time.
There will be a stream of HPM data associated with each virtual processor and it
must be possible to combine these separate streams into a single
stream that accurately reflects the program's execution.
- Low overhead
- Low overhead is desirable both to minimize the
perturbations in the application introduced by gathering the data and
to enable it to be used to gather traces in production environments or
for long-running applications.