A software program includes at least two performance levels. Each
performance level has an associated processor utilization. Each
performance level corresponds to optimization criteria, such as a quality
of data processing performed by the software program. The performance
level is selected to maintain processor utilization by the software
program within constraints, such as a desired range of processor
utilization and a minimum idle thread allocation.