Next: Generating Initial Candidates
Up: No Title
Previous: Discussion
A Model-Based Allocator
This section outlines a resource provisioning algorithm
that plans least-cost resource slices based on the models
from Section 3.
The utility OS executive periodically invokes it to adjust the
allotments, e.g., based on filtered load
and performance observations.
The output is an allotment
vector for each service, representing a CPU share
together with memory and storage allotments .
The provisioning algorithm comprises three primitives designed to
act in concert with an assignment planner, which maps the allotted
shares onto specific servers and storage units within the utility.
The resource provisioning
primitives are as follows:
- Candidate plans initial
candidate allotment vectors
that it predicts will
meet SLA response time targets for each service
at its load .
- LocalAdjust modifies a candidate
vector to adapt to a local resource constraint or
surplus exposed during assignment.
For example, the assignment planner might place some service on
a server with insufficient memory to supply the candidate M;
LocalAdjust constructs an alternative vector that
meets the targets within the resource constraint,
e.g., by increasing
to reduce RS.
- GroupAdjust modifies a set of candidate vectors
to adapt to a resource constraint or surplus exposed during assignment.
It determines how to reduce or augment the allotments to
optimize a global metric, e.g., to minimize predicted average response time.
For example, the assignment planner might
assign multiple hosted services to share a network storage unit;
if the unit is not powerful enough to meet the aggregate
resource demand, then GroupAdjust modifies each vector to conform
to the constraint.
We have implemented these primitives in a prototype
executive for a utility OS.
The following subsections discuss each of these primitives in turn.
Next: Generating Initial Candidates
Up: No Title
Previous: Discussion
Ronald Doyle
2003-01-20