Load Distribution

Given that it has been decided that process migration is useful it is necessary to decide on a policy for load distribution. This is a question of deciding <#2764#> which<#2764#> process should be moved to <#2765#> where<#2765#> and <#2766#> when<#2766#>, in order to achieve the maximum improvement in <#2767#> performance<#2767#>. Performance can be measured in a number of different ways; either as average throughput, delay, or response time of the overall system or for each individual process. According to Eager <#2768#> et al<#2768#> [#EagerALSIH##1#] most load distributing algorithms can be categorised as following one of two major approaches:
Load sharing
Load sharing algorithms simply attempt to conserve the ability of the system to perform work by assuring that no node is idle while processes wait for service. The most notable feature of load sharing is that it is only when the computational capacity of a node is exceeded that processes from that node are migrated away (typically to totally idle nodes). Consequently, the algorithms are inherently local in that they only attempt to improve the performance of a small number of processes.
Load balancing
Load balancing algorithms attempt to spread the workload amongst all the nodes in a distributed system. Processes are chosen from heavily loaded nodes and migrated to lightly loaded nodes, in order to try and achieve an equilibrium over the whole system. Thus, there is an attempt to improve performance globally, rather than for a relatively small number of processes as with load sharing. Unfortunately, the corresponding complexity both of implementation and of analysis are significantly increased. In the absence of near to idle processors (i.e. where there is little imbalance), there is little to be gained.