A method, apparatus, system, and signal-bearing medium that in an
embodiment request a program or programs to tune themselves to run faster
or slower if a service class is not meeting its performance goal. In an
embodiment, the program is repeatedly requested to incrementally tune
itself until the performance goal is met or until no further improvement
occurs. In various embodiments, the programs to be requested to tune
themselves are selected based on whether the programs are bottlenecks for
the service class, whether the programs do the majority of work for the
service class, whether the programs easily meet their own performance
goals, or whether the programs are low priority. In this way, the
programs may be performance tuned in a way that is more effective and
less intrusive than by adjusting global, system-level resource
allocations.