Given a set of processes running on a cluster of hosts, design a system that load balances the hosts through live migrations of the processes. The goal of load balancing is to minimize or prevent resource starvation, a situation in which processes are not allocated the amount of resources they want to consume. In cases where all hosts in the cluster are overloaded, we want to distribute resources evenly across demanding processes. Given an imbalanced cluster, we want to bring it to a balanced state as soon as possible while minimizing the cost.
Assumptions: