Component-based environments place very different requirements on performance measurement and modeling (PMM). Traditionally, PMM has been viewed as an analysis-and-optimization phase done by the code developers when a stable code base was ported to a new architecture. Emphasis was laid on extensive instrumentation and analysis to gauge the behavior of the application on the architecture and to optimize it. Synthesizing a performance model from such data to serve as a predictive tool was usually done from a scaling point of view [4,5].
PMM plays a different role in component-based software. Since applications are dynamically composed at runtime, PMM can only be done in advance at a component-level. Further, since the component user is rarely the component developer, detailed instrumentation and analysis of the component by the user is not a credible option. Further, users are primarily expected to be interested in the coarse-grained performance of the component at the level of the public methods of the component. These two characteristics pose the requirements that PMM strategies (a) provide a coarse-grained performance model of the component and (2) be non-intrusive. The simplest approach, as verified in Section 2, is that of proxies, interposed between the caller and the called components, which intercept method calls and execute performance related tasks.
In this section we provide a brief summary of the CCA environment for HPC, adapt the approaches in Section 2 to HPC and address the issue of the minimal set of performance data required to construct component-level performance models.