Introduction

Processes scheduling has been at the forefront of operating systems research since the 1960’s. The most significant advance in user-perceived performance has not come from better scheduling algorithms, but rather increased processor speeds. Real-time applications, like windowing systems or streaming video players have posed the greatest challenge. Sometimes users want processes to respond immediately and complete quickly (consume all the system resources) while other times they accept latency (share resources more evenly). It is exceptionally difficult for existing schedulers to determine which processes the user feels are most important and when.


Description

People place different levels of importance on applications they use. This importance is often transient. For example, when the user is in a rush and wants to quickly check their email before they leave, the email application should not have to wait on other applications. However, other times, the user might accept a longer launch time because they also value background processes, like a downloading a file or transferring pictures from their digital camera.

Anticipating user needs is practically impossible. However, users provide a wealth of feedback in the form of gestures. One common user gesture is to rapidly shake the mouse back and forth when the performance of an application is too slow. The OS could interpret this gesture as user frustration, and dedicate more resources and CPU time to the application the user is interacting with. This could be done by temporarily increasing the priority of the process.

Many applications slow down not because the application requires more resources, but because other, potentially background processes are running at higher intensity. Thus, contention for resources typically occurs in short sporadic bursts. In response, gesture-based increases in prioritization would be transient; the priority would fade over time, and eventually return to its original level.

© Chris Harrison