In this paper we introduce a new operating system abstraction called reservation domains that enable explicit control over the provisioning of system resources among applications. To provide support for multiple real-time applications on a single platform we must allocate system resources in order to achieve desired levels of predictable performance. The quality of service (QoS) performance parameters that are of interest include fairness, delay, and delay jitter. We introduce a new QoS parameter, called cumulative service, which relates the actual progress made by a process under a scheduling policy to the ideal progress that the process would have achieved executing on each resource at the reserved rate and without interference from other processes. A policy provides a cumulative service guarantee if the actual accumulation of service never falls behind the ideal accumulation by more than a constant amount. The cumulative service parameter is particularly important for applications that provide continuous media streams.
Existing scheduling disciplines in the operating system literature that provide fairness and delay bounds fail provide a cumulative service guarantee. We present a new scheduling algorithm called shortest virtual time first round-robin (SVF-RR) which is fair and provides a delay bound and a cumulative service guarantee. We couple reservation domains with the SVF-RR scheduling algorithm to achieve desired levels of QoS guarantees.
A new operating system, called Eclipse, has been designed to provide QoS guarantees by supporting reservation domains. Eclipse implements scheduling of multiple resources and currently it supports CPU, disk and physical memory (working set size) scheduling. This is in contrast to other similar systems that support QoS only for CPU.
The Eclipse operating system is based the Plan9 from Bell Labs, and can run any Plan9 application without modification. Eclipse emphasizes the use of per-process name space, and it can schedule any I/O device or user level file system without any change to device driver or file system code. Eclipse was implemented by modifying less then 2,000 source lines in Plan9 kernel.
Furthermore, reservation domains and SVF-RR scheduling can also be implemented in most other modern operating systems.