This is a single value specifying a fixed metric. It is exactly
equivalent to
<derived><constant>x</constant></derived>, but much
shorter to type.
This data type expresses a metric that can take on one of several
values, or a continuous range of values.
A continuous range is given
using the <min> and <max> elements to bound the (inclusive)
range of values the metric may take.
For a discrete set, one can either add the <by> element to a
continuous specification, which specifies an increment value. This
converts the continuous range into a discrete set of values formed by
starting at the minimum value and repeatedly adding the increment until
the value exceeds the maximum. This is analogous to a for loop.
Alternatively, you can list the discrete values each in a
<discrete> element.
The set of valid names for metrics used when referencing one metric
freom a derived metric.
This is a term in an arithmetic constraint of a resource metric. It's
an encoding of a simple linear forumla into a data structure. Each
choice of term value is documented below. Expressions are evaluated
from the inside out so:
<sum>
<product>
<term><constant>2</constant></term>
<term><constant>3</constant></term>
</product>
<term><constant>1</constant></term>
</sum>
is a verbose way to say 7.
Each choice for a MetricTerm is described below.
A simple constant value.
Substitution for the value of another metric in this resource
description. The "resource" attribute is the ID attribute of the
referenced resource and the "metric" attribute identifies the
specific metric (power, capacity, latency, etc.) to use.
Constraints must be resolvable, though it is difficult to specify
data structure constraints that allow complexity but avoid possible
circular definitions.
A sum of constraint terms.
A product of constraint terms.
The difference between constraint terms. Note that differences are
pariwise.
The quotient of constraint terms. Note that division is
pariwise.
This is the data type for resource metrics. All resources are
characterized by one or more metrics with units attached to them. In
the simplest form this value is just a real number that describes the
amount of the resource. The type can also express ranges of available
values (continuous or discrete) and arithmetic constraints.
An example of two components that are arithmetically constrained is a
storage resource (ID="disk") and communication resource (id=Net) that
share a 300Mb/s bus. The storage resource could have a rate="1 to 300"
(rateUnits="Mbs") and the communication resource a capacity of (300 -
disk:rate) (units="Mbs"). This would be expressed as:
<storage id="disk">
<capacity units="MB"><value>300</value></capacity>
<rate>
<range><min>1</min><max>300</max></range>
</rate>
</storage>
<communication>
<capacity>
<derived>
<difference>
<term><constant>300</constant></term>
<term><metric resource="disk" metric="rate"/></term>
</difference>
</derived>
</capacity>
</communication>
Each resource subclasses this datatype to constrain the acceptable
units for the reources, but all use the language for expressing
constraints.
For processing resources that do not have full programmability, this
data type describes their capabilities in the terms we discussed on
list. I'll document those more fully later.
These are the units of processing power. These are a little vague
right now and are strawmen for what will eventually characterize
processing power.
This is the data type for describing a processing resource. Each
allocable processing resource will be described by a separate
occurrance of this data type, each uniquely identified by an ID
attribute.
The processor's capacity is expressed in the "power" attribute in units
given in the "units" attribute. "Power" is a metric data type, so it
can be constrained as described in that data type's description. If
the "function" element is present, it describes the processors
capabilities.
Several components describe their capacity in terms of data rates.
This base type sets values for a few application independent rates that
other types can use.
These are the units a communication resource can describe its capacity
in. In addition to the generic data rates in the base class, rates can
be given in terms of the units addded here.
I'm not sure how to actually use a sub-classing here, so the DataRates
terms are copied.
These are values that a communication resource can use to describe its
interaction with other communication resources, or to specify that no
such interaction exists. The various shared values correspond to time,
space, and frequency division multiplexing while "exclusive" implies
that the communication is unaffected by other communicators. Again,
straw men.
A data type used to characterize the underlying communication model in
very broad terms. Placeholder, of course.
The communication resource data type. Like processing, it describes
its capacity in the "capacity" attribute expressed in the units in the
"units" attribute. "Units" default to Mbs, and can be omitted. The ID
must be unique. Again, "capacity" is a metric and can be constrained.
If the "medium" element is present, it characterizes the interaction of
the communication resource with other resources. If the "model"
element is present, it charcaterizes the model. Both elements are
optional, but can only occur once.
Another extension of the DataRates type to specialize for measurement.
Measurement devices may characterize their output in terms of events.
I'm not sure how to actually use a sub-classing here, so the DataRates
terms are copied.
A simple attempt to characterize the sort of measurement a mesaurement
resource may be up to. Obviously a straw man.
A measurement resoucre description. Of a set of sketches, this is the
sketchiest. The resource is characterized in terms of its measurement
capacity in the "capacity" attribute (which is again a constrainable
Metric datatype) in the uints in the "units" attribute. The type of
measurement accomplished is given in the "type" attribute, expressed in
the broad terms of the MeasurementType datatype.
Storage capacity units. All of these are in bytes.
Units used to describe the latency of the storage resource. Time
units.
Some storage can be removed from components and transported other
places for post mortem analysis or other use. This datatype is used to
indicate if the resource in question is removable or not.
How can users of the storage resource use it. The standard choices are
varients of reading and writing. Are there more?
Sorage resources may characterize themselves across three axes -
capacity, data rate, and atency. Each axis has a metric in an
attribute of the obvous name, but only capacity is a required
characterization. Each axis is a constrainable metric and has its own
associated attribute for the units of that metric.
In addition, optional elements specifying the type of permissable axis
(the "access" element) and the persistence of the storage (the
"persistence" element) may appear. Both are optional.
This data type describes a components resources - or one configuration
of a set of possible constained configurations. Elements with types of
the "Processing," "Communication," "Measurement," and "Stroage" defines
above may appear more than once , with the collection defining the
component resources. As described under the "Metric" data type, these
resources may constrain their capacities in terms of each other's
capacities.
Any ResourceGroup can be assigned an identifier using teh ID attribute
to simplify references to that ResourceGroup.
This is a part of the constraint system that presents choices
between complete configurations. The name is somewhat confusing.
This data type describes a set of possible configuration choices,
each surrounded by an <and> ... </and> pair. The set
of <and>s is then put in an <or> to indicate that any
one of the choices contained in an <and> ... </and>
pair is possible, but only one choice from the enclosing
<or> ... </or> is acceptable.
For example:
<or>
<and>
<processing>
<power><value>10</value></power>
</processing>
<storage>
<capacity><value>10</value></capacity>
</storage>
</and>
<and>
<measurement>
<capacity units="EventsPerSecond"><value>100</value></capacity>
</measurement>
</and>
</or>
describes a component that can either be a 10 Mhz CPU with a 10
MB disk or a 100 event/s sensor, but no other mix of
configuration is possible.
This allows one to specify that a node can support one of several
mutually exclusive configurations (which can be internally
constrained using Metric constraints).
Each <and> block may have an identifier and a weight
attribute that can be used in describing choices and expressing
preferences. <and> groups with higher weight values are
preferable to the entity describing the resources. The type of
the <and> group extends the ResourceGroup type to provide
this attribute. All ResourceGroups can have an identifier.
N.B. A single available configuration is expressed as an <or>
group with a single <and> group inside.