All load distribution policies consider a subset of system resources as a basis for load distribution. There are two main approaches that depend on the configuration of the physical distributed system:
Leland and Ott [LO86] have shown that processes usually fall into four categories: CPU bound, IO bound, ordinary (both unbound) and the extremely rare CPU and IO bound. Devarakonda and Iyer [DI89] confirmed these categories, and observed an additional heavy memory use category.
These results imply that not only should the requirements of a process be matched to host capabilities in a heterogeneous system, but homogeneous systems may also benefit by controlling the mix of CPU, memory and IO bound process types on any one host. In particular, the processes already executing on an individual host combine to produce a set of remaining resources that are not homogeneous over all hosts in the system. So while each host has the same initial capabilities, the remaining capacity is different. As a simple example, consider the processes and their resource requirements summarised in table
Table 3.1: Two CPU and two IO bound processes. Care needs to be taken when scheduling these four processes to three hosts.
Thus it is not only bottlenecking of the CPU that is a potential source of system degradation, but bottlenecking of IO as well. This argument can be extended to other system resources that are in demand, such as the memory system.