The CHARM++ runtime automatically records pertinent performance data at performance-related events encountered by the runtime. These events include the start and end of entry method execution, message sends from entry methods and scheduler idle time. This means most users will 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 2.1) 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 the -DCMK_OPTIMIZE flag which removes the instrumentation stubs.
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 2.2)
March 03, 2008
Charm Homepage