Performance analysis with Projections typically involves two simple steps:
- Prepare your application by linking with the appropriate trace generation modules and execute it to generate trace data.
- Using the Java-based tool to visually study various aspects of the performance and locate the performance issues for that application execution.
The Charm++ runtime automatically records pertinent performance data for performance-related events during execution. These events include the start and end of entry method execution, message send from entry methods and scheduler idle time. This means most users do not need to manually insert code into their applications in order to generate trace data. In scenarios where special performance information not captured by the runtime is required, an API (see section E.2) is available for user-specific events with some support for visualization by the Java-based tool. If greater control over tracing activities (e.g. dynamically turning instrumentation on and off) is desired, the API also allows users to insert code into their applications for such purposes.
The automatic recording of events by the Projections framework
introduces the overhead of an if-statement for each runtime event,
even if no performance analysis traces are desired. Developers of
Charm++ applications who consider such an overhead to be
unacceptable (e.g. for a production application which requires the
absolute best performance) may recompile the Charm++ runtime with
--with-production flag, which removes the instrumentation
stubs. To enable the instrumentation stubs while retaining the other
optimizations enabled by
--with-production, one may
compile Charm++ with both
--enable-tracing, which explicitly enables Projections tracing.
To enable performance tracing of your application, users simply need to link the appropriate trace data generation module(s) (also referred to as tracemode(s)). (see section E.1)
- E.1 Enabling Performance Tracing at Link/Run Time
- E.1.1 Tracemode projections
- E.1.2 Tracemode summary
- E.1.3 General Runtime Options
- E.1.4 End-of-run Analysis for Data Reduction
- E.2 Controlling Tracing from Within the Program