In order to evaluate the role of modeling techniques in performance understanding, we consider three attributes of performance models:
There are two main approaches to performance modeling. In bottom-up modeling the system is described via sets of parameters or functions that abstract the software and hardware, and the interactions between them. The meaning and importance of these parameters distinguish the various bottom-up approaches. Analytical modeling techniques and their extensions are examples of bottom-up modeling.
Top-down modeling begins with the structure of the application. The parameters of the models arise from the application features and from the interactions between software and hardware that are derived from the application. Description-based models and performance modeling via static analysis are examples of top-down modeling.
In general, bottom-up modeling is more suited to investigate architecture or environment factors, since the software is also defined via parameters. Top-down modeling focuses more on the parallelization of the application, the data partition adopted, and other software aspects, and therefore is better suited to exploring application issues.
Below we describe these approaches in more detail, pointing out their strengths and weaknesses via examples from the literature. The first two sections present bottom-up approaches; the remaining section describes top-down (or structural) approaches.