Performance Basics

2. Application, System
Performance, regardless of measure, is dictated by what you bring to the table (the application) and by the capabilities of the computer system (both hardware and software). The following chart lists key components of each.

Performance: Application/System Interaction

Application Computer System
Language
Datasets
Libraries
Algorithms
Code Implementation
Prediction
(modeling)
======>

< ======
Measurement
(tools)
Chip Architecture
Memory Hierarchy
I/O Configuration
Node Interconnect (switch)
Compiler
Operating system

The application and the computer system are not isolated entities, but are fully engaged when the application is mapped onto the system. From a performance perspective, one ought to have a reasonable set of expectations even before the first job is run, based on knowledge of both the application and the system. This estimate of expected performance is called prediction, and one arrives at it by use of modeling.

After the job is running, one would like feedback from the system about the performance. This activity is called measurement, and there are a number of tools available for this work. These tools are introduced in later modules, Monitoring Cluster Computers with WMI and Profiling with MS Visual Studio Tools. The objective of measurement is two-fold: to see whether performance expectations are being met; if not, where does the bottleneck lie.

Quite often, this prediction/measurement cycle is repeated a number of times. After each cycle, the user makes modifications to the application or changes the way he/she makes use of the system. This process, called tuning, continues until the user is satisfied.

Calculating speedup:


                            time to run before optimization
      speedup = ------------------------------------------------
                               time to run after optimization