Original Publication Date: 1995-Aug-01
Included in the Prior Art Database: 2005-Mar-30
Provided is a Work-Load Manager and a work load scheduling or balancing method which are suitable for distributing the load of a variable number of work items across a variable number of server tasks with minimum processing overhead. The method can be optimized for certain operating environments by preferentially loading servers in an order which minimizes server task switching.
Provided is a
Work-Load Manager and a work load scheduling or
balancing method which are suitable for distributing the load of a
variable number of work items across a variable number of server
tasks with minimum processing overhead. The method can be optimized
for certain operating environments by preferentially loading servers
in an order which minimizes server task switching.
A stream of
similar but unrelated Work Items must be
distributed between a set of Server Tasks with the minimum of
processing overhead. The number of Server Tasks available may vary
from 1 to many thousands, as may the maximum number of concurrent
Work Items, the number of each being set by a system administrator
prior to start-up. A general solution is required that will evenly
distribute the Work Items between the Server Tasks.
either employ single 'round-robin' sequential
scheduling (which makes no provision against task switching overhead
nor the possibility of processing delays where a particularly large
Work Item is being processed and further Work Items are queued behind
it), or have more complex schemes (with higher processing overhead)
which take account of the resource requirements of the Work Items and
the ability of the Servers to process them.
below is a scheme which distributes Work Items across
a number of servers in an optimal manner with minimum processing
Initialization - The following is performed during system
initialization by the Work-Load Manager:
20 count of the number of currently active Work Items it is
servicing and a forward pointer to another Server Task's Status
Block. Initially all the Status Blocks are formed into a single
o A batch_size is calculated by dividing the maximum concurrent
Work Item limit by the number of available Server Tasks. The
batch_size calculation is limited between lower and upper
that are determined by the type of Server Tasks in use and the
general nature of the Work Items being processed.
o An array of pointers (the Tasking Table) is constructed and the
first element (row 0) is set to point to the head of the Server
Task Status Block chain.
o Two row pointers (Lo_Row and a Hi-Row) are created to keep track
of the lowest and highest rows in the Tasking Table which
pointers to Status Block chains. Initially these pointers are
both set to 0 (the first element in the array, which points to
the only chain of Server Tasks).
Scheduling Work - The arrival of a Work Item triggers the
o The Low_Row pointer is used to index into the Tasking Table to
find the pointer to a Server Task's Status Block. The Work
is passed to that Server Task for processing and the count of
active Work Items i...