Smith [#SmithASOPM##1#] and Jul [#JulOMIAD##1#] identify a number of primary
reasons as to why migration is desirable in a distributed system:
- Communication performance
- Objects which communicate heavily can be
colocated during the period in which they interact, in order to minimise
communication costs. Since `remote communication can be three orders of
magnitudes as costly as local communication' [#JulOMIAD##1#] colocation can be
extremely significant in ensuring acceptable performance.
- Load
balancing
- Moving processes may serve as a tool for balancing the load in a
distributed system. It is necessary to trade off the possibly increased
communication costs added to the cost of migration, against the increase in
parallelism. If suitable algorithms are used, it has been demonstrated
empirically that a large gain in performance can be achieved.
- Reconfiguration
- Long running processes may need to migrate in order to
provide fault tolerance in the face of a certain class of faults about which
advance notice can be given.
- Data reduction
- Whenever the process performs data reduction on some
volume of data larger than its size, it may be advantageous to move the process
to the data. Such operations may include the creation of summaries of large
distributed databases (<#2537#> e.g.<#2537#> telemetry databases). This follows directly
from the facts that large amounts of data are expensive to move and that
heavily communicating processes operate most efficiently when colocated.
- Inaccessibility
- The resource desired is not remotely accessible. This
is particularly true of special purpose hardware devices, for example, array
processors, or situations in which guaranteed real-time response is critical.
- Weakness in facilities
- Existing facilities may not provide sufficient
power. For example, in cases where the semantics for remote access of a
resource are different from those for local access, it may be expedient to
migrate objects in order to achieve the desired effect.
- User mobility
- If users move from one machine to another it may be
useful to them if they are able to migrate objects to their current location
without disruption.
- Efficient garbage collection
- It may be possible to improve the
efficiency of garbage collection if objects can be migrated to machines which
contain references.