next up previous
Next: Installation Instructions Up: Class Fair Scheduler for Previous: Introduction

Design and implementation

In our class fair scheduler, each class has its own runqueue. This makes performance isolation possible since tasks belonging to different classes are now stored in different run queue. We use a sliding window to keep track of the relative progress of these class runqueues. The class object is stored in the sliding window based on its effective priority: $ecp(c) = tick(c)/share(c)*r + top\_prio(c)$. $Tick$ represents the amount of CPU time received by class c. R is a configurable constant value. $top\_prio$ means the highest priority of the processes within class c. By combining both the progress ( $tick(c)/share(c)$) and the urgency $top\_prio$ together, our class fair scheduler achieves accurate proportional sharing while preserving good interactive job support.



Haoqiang Zheng 2003-07-22