Most research on QoS-aware computing considers systems where code is generally partitioned into separately schedulable tasks with associated timing constraints. In sharp contrast to such systems is a myriad of mainstream off-the-shelf applications and services such as Web servers, caches, mail servers, and content distribution proxies where QoS guarantees may be needed, yet the software follows a best-effort one-size-serves-all model. In this model, different traffic classes are not mapped to different schedulable entities (tasks), making it impossible to use real-time scheduling meaningfully to satisfy application QoS. This paper presents a kernel-level solution to the problem of retrofitting such best-effort systems with QoS support without changing application code. The solution has been implemented in Linux. By downloading a few kernel patches and configuring the patched kernel appropriately, a system administrator can endow a best-effort service with QoS assurances transparent...
Ronghua Zhang, Tarek F. Abdelzaher, John A. Stanko