Distributed
Computing aims at achieving higher execution speed than the one obtainable with
uniprocessor system by exploiting the collaboration
of multiple computing nodes interconnected in some fashion. The idea has been
to partition a uniprocessor computing load into
multiple units of execution and assigning them to the various processing nodes.
The best possible speed up will obviously be obtained if the various partitions
of the given computational task can run independently in parallel. However,
since the various partitions of the task collaborate to achieve a common
objective, the requirement of communication/interaction among these units of
the given task can hardly be avoided. Hence, the idea of distributed computing can be
characterized by the following:
a) Partitioning and
allocation of units of a task to various processing nodes of the system so as
to achieve speed up.
b) The processing nodes of
the system must be sharing the computational load of the system so as to be
able to provide proper execution characteristics. All the processing nodes must
be made busy as much as possible by receiving and executing multiple tasks.
This research considers the efforts made in both
of the above said directions to identify an appropriate way of distributing the
computational load across the processing nodes to achieve higher system
throughput characteristics in terms of number of tasks executed per unit time.
l
Multiple Task Allocation and Load Balancing
in a Distributed Computing System (DCS)
A
Distributed Computing System (DCS) is a network of workstations, personal
computers and/or other computing systems. Such a system may be heterogeneous in
the sense that the computing nodes may have different speeds and memory
capacities. A DCS accepts tasks from users and executes different modules of
these tasks on various nodes of the system. Various modules of a task have a
precedence relation depicted by its task graph and their communicational requirements
are given by the Inter Module Communication (IMC) matrix. A good number of task
allocation algorithms have been proposed in the literature. These algorithms
allocate a given task with their modules on to the DCS nodes and aim to
minimize the turn around time of the given task. Such algorithms do not
consider (both) the number of modules that can be accepted by the individual
computing nodes and the memory capacity of the nodes. Factually, in DCS the
nodes may share some specified load within their memory capacity constraints.
Further the above mentioned algorithms consider only one given task. In this research
we are considering the number of modules that can be accepted by individual
nodes along with their memory capacities and arrival of multiple disjoint tasks
to the DCS from time to time. We propose an algorithm that will allocate one or
more tasks in the DCS when the allocator is invoked.
This algorithm allocates the modules of the tasks, one at a time that will
result in increased throughput of the system as well. Finally, there may be a
situation that the given task is not allocated at all due to the high memory
requirements of one or more modules of the task.
As
it is a NP-Hard problem, still, algorithms proposed in the literatures with
many heuristics are good to provide near optimal or sub optimal solutions. So
research is still going on to find the best optimal solution for the purpose.
The present research lies on developing efficient parallel/distributed algorithms
for the purpose.
l
Evolutionary
algorithm based load balancing Task Allocation
To
solve the above cited problem we consider using evolutionary algorithm such as
GA, ant colony optimization, simulated annealing etc. in our research. A method
based on genetic algorithm is already developed by us which is
memory efficient and give an optimal solution of the problem. The given
simulation results also show significant achievement in this regard. However,
the algorithm we have proposed is sequential in nature and experimental studies
and the experimental studies has been conducted on a single PC, thus the present
research lies on developing parallel and distributed algorithm for the same
purpose using GA for a real test bed of DCS and comparing its efficiency with
other existing algorithm for the same such as greedy heuristic based MIN-MIN,
MIN-MAX and A* based algorithms.