A task management system, method and computer program product for determining
optimal
placement of task components on multiple machines for task execution, particularly
for placing program components on multiple computers for distributed processing.
First, a communication graph is generated representative of the computer program
with each program unit (e.g., an object) represented as a node in the graph. Nodes
are connected to other nodes by edges representative of communication between connected
nodes. A weight is applied to each edge, the weight being a measure of the level
of communication between the connected edges. Terminal nodes representative of
the multiple computers are attached to the communication graph. Then, the communication
graph is divided into independent nets and a min cut is found for each independent
net. The min cut for the communication graph is the combination of the min cuts
for all of the independent nets. Finally, program components which may be a single
program unit or an aggregate of units are placed on computers according to the
communication min cut.