Our approach is to introduce a notion of feedback control. This is an adaptive approach, in which a controller adjusts application QoS demands in the light of the observed performance. This should be distinguished from the more usual type of feedback where applications degrade gracefully when resources are over committed. This is shown schematically in figure 1.
Figure 1: QoS Feedback Control
The QoS Controller dictates the policy to be followed and can be directly dictated by the user, by an agent running on the user's behalf, or more normally both. The QoS Manager implements the allocation of resources to try and achieve the policies dictated by the QoS Controller, ensures their enforcement by informing the operating system and applications so they can adapt their behaviour.
This scheme is directly analogous to many window systems, where the Window Manager and Server are the counterparts of the QoS Controller and Manager. In a window system, applications are made aware of the pixels they have been allocated by the server and adapt accordingly; the server enforces these allocations by clipping; and users, by using a preference profile and resizing windows directly, interact with the window manager (their agent) to express their desired policies.
This approach allows applications (and application writers) to be free from the problem of determining exactly what resources an application requires at the cost of requiring them to implement adaptive algorithms. However a useful side effect is that it thus simplifies the porting of applications to new platforms.
Where does this lead in relation to providing QoS guarantees within the operating system? Can everything be left to the controller, manager and applications? A brief consideration of the feedback system leads to a conclusion: the forward performance function, that is, the application performance for a given set of resources and instruction stream, need not necessarily be predictable to obtain the desired performance but it must be consistent. Note that while efficiency and speed of execution are desirable, they are not as important to the stability of the QoS control system as consistency.
Consistency in turn requires that resources are accounted correctly to the applications that consume them, or to be more accurate, to the applications that cause them to be consumed, and that QoS crosstalk between applications be kept to a minimum.