Utilization


Utilization is one of Pablo's Performance Modules.  It provides a
simple interface for computing and displaying the utilization
of some collection of abstract processing elements.  In addition, 
aggregate utilization statistics ( such as the average utilization 
across all processing elements ) may be displayed.

In order to compute the utilization of a set of abstract processing
elements, the module must know when each element is idle and when 
each element is busy.  By default, each element is assumed to be 
busy when the execution starts.  ( The starting state of the elements 
may be changed during module configuration. )  Once the initial
states of the elements are known, the module tracks the state of
each processor throughout execution.  The input to the module is
used to indicate a change in the idle or busy state of a given 
element.  So, the input to the module consists of a processing element 
number to indicate which element is changing state, and a timestamp
to indicate when the state change took place.  Note that to compute
utilization correctly, timestamps and processing element numbers 
must be provided for transitions from both idle to busy state and from 
busy to idle state.

The reported utilization values are computed over small windows of 
time, called sliding windows.  The size of the sliding window is
given in the same units as the timestamp input to the module.
Decent results may be obtained by setting the window size to a value
slightly larger than the average length between state changes for 
a given processing element.  As the execution continues, these 
sliding windows advance through time.  The amount that the windows
move at each step is called the window increment.  The window increment
is also given in the same units as the state change timestamps.
Both the sliding window size and the window increment may be changed
during module configuration.

Utilization displays support one callback.  Clicking the left mouse
button with the pointer over one of the performance display elements
invokes a callback which provides a numerical representation of the
current utilization value for that element.  For example, in a 
Bar Graph Utilization display, clicking the left button over the 
bar graph which represents processing element 3 will display the
current utilization value for element 3.


Functional Unit Inputs ( see description, above ):
	PE Number: scalar
	Timestamp: scalar

Utilization attributes:
	The attributes of the Utilization displays are the same
	as those for the corresponding Pablo display module.  For
	example, the Bargraph displays used by Utilization support the
	same attributes as the Bargraph Pablo display module.


