Our discussion above focused on the performance engineering model at the component level. Now we turn attention to component composition. The performance of component-based scientific applications depends as much (perhaps more) on the interplay of component functions and the computational resources used for component execution and interoperation, as it does on individual component performance. Because component operations and interactions can be complex and dynamic, and resource availability may be subject to variation, the management of component compositions throughout their execution becomes a critical element of their successful deployment and use. In general, this management can include resource assignment, component placement and scheduling, data communications control, and file storage and allocation. However, the issue for us is not necessarily to design the specific tools that will be part of the performance management solution, but to identify key technological capabilities needed to support the performance engineering of component ensembles. In practice, this distinction is blurred, admittedly, due to the different infrastructure used for scientific component computing, ranging from wide-area grids of heterogeneous resources to tightly-coupled large-scale computing systems. Thus, we restrict our attention to only two model concepts: performance awareness and performance attention.
Performance awareness of component compositions relates to an ensemble view of performance, how this information is obtained, and how it can be accessed. As with components, performance engineering looks at composition performance knowledge and observation. Composition performance knowledge can come from empirical as well as analytical evaluation, can utilize information provided at the component level, and can be stored in repositories for future review. Performance awareness extends the notion of component observation to ensemble-level performance monitoring. The idea is to associate monitoring components with levels of hierarchical component grouping, building upon component-level observation support. This is presented in Figure 3. These monitoring components act as performance integrators and routers, using component framework mechanisms to connect performance data ``producers'' to performance data ``consumers.'' Knowledge and observation support at the ensemble level can work together to evaluate performance goodness of an application during execution by comparing performance achieved to performance expected. Also, a global performance model, constructed from component models, could be used to make intelligent decisions for runtime crafting of an application to a particular computing environment, guided by performance observations.
Performance attention is the notion that there are active elements (sensors) in a component application looking for particular performance behaviors or patterns. These elements utilize access to component performance data to decide when performance phenomena are significant. At these instances, performance attention mechanisms may signal performance events that then notify other parts of the application about what was detected. Decisions about what to do in response to these performance events can then be made. Performance attention is utilized within an application to help control, adapt, or steer its performance. Component framework support, such as event services, can be leveraged to develop performance attention technology.