The most flexible scheduling algorithms are those that can be altered by the system managers or by the users so that they can be tuned for a specific application or set of applications.
A workstation that performs high-end graphical applications, for instance, may have scheduling needs different from those of a Web server or file server.
Some operating systems particularly several versions of UNIX—allow the system manager to fine-tune the scheduling parameters for a particular system configuration.
For example, Solaris provides the dispadmin command to allow the system administrator to modify the parameters of the scheduling classes described in Section 6.7.3.
Another approach is to use APIs that can modify the priority of a process or thread. The Java, POSIX, and Windows API provide such functions.
The downfall of this approach is that performance-tuning a system or application most often does not result in improved performance in more general situations.