
|
 |
|
Expert System for Tuning Optimizations (ESTO)
|  |
Overview
|
 |
|
ESTO (Expert System for Tuning Optimizations) automates the process of identifying and tuning the optimal set of optimization options used when generating performance-optimized programs.
A typical use is to tune, for maximum performance, the optimization options used by a compiler when creating an application.
The set of possible optimizations is usually very large, an order of tens. In addition, some of the options require an additional parameter, which makes the selection process even more complex.
Selecting the optimal set for a given application is complex because optimization options do not necessarily add performance when combined with other options, and/or when used for certain application and a certain workload.
As a result of this complexity, users tend to use combination options, such as -O, O1, etc. These combinations select a subset of the optimization options that have shown up, in order to provide stable, high performance for large number of applications. Thus, in general, these options are not the optimal set for a specific application executing its representative workload.
Our goal is to define a strategy of finding the "optimal combination" of parameters for each concrete target program. This should occur during a minimal number of time-consuming cycles:
- Determine the parameters
- Run the program generator
- Measure the result
- Compare
- Decide
While it is not possible to prove that the "optimal combination" is indeed optimal in the absolute sense, it would be optimal in the sense that no significantly better set (more than a fraction of a percentage) can be found for most of the applications tested.
ESTO comes with built-in support in the form of a configuration file that includes all the available options and their value range. We also supply two supporting scripts that are used by the ESTO engine as follows:
- optcmd script - generates an optimized version (single "organism") based on set of options provided by the ESTO engine
- runcmd script - executes the created version and measures its performance
Today, ESTO includes built-in support for the GCC compiler optimizations and for the FDPR post-link optimizer.
ESTO is also being extended with a specific configuration file and scripts that enable it to tune the values of the AIX OS scheduling parameters altered by the AIX 'schedo' utility. The tuning is done to optimize a given application running on the system, while targeting both CPU usage and wall clock time.
The optimization is done by minimizing CPU usage without degrading the real-time beyond a pre-defined threshold, which is provided as input by the user. The following chart shows how ESTO operates on the tunables of the AIX scheduling:
More information on ESTO and download.
Publications
|
 |
|
|
 |
|
 |
|