MostlySpread
Definition
Signature
mostlySpread(s : set<VM>, n : number)
s
: a non-empty set of virtual machines for a meaningful constraintn
: a positive number, inferior to the number of virtual machines ins
The mostlySpread
constraint ensures the running virtual machines in s
will be running
on at least n
distinct servers.
Classification
- Primary users: application administrator
- Manipulated elements: VM placement
- Concerns: VM-to-VM placement, Fault tolerance, Partitioning
Usage
The mostlySpread
constraint may be used by an application administrator to provide to a replicated service, fault tolerance to hardware failures. By hosting replaces on distinct servers, the service will be available while at least one server is still online. When the number of replicas is important, it is however difficult to have a large amount of different servers. Furthermore, the chances of having all the hosting hervers but one failing simultaneously decrease when the number of replicas increases. It is then tolerable to use a number of servers that is smaller to the number of replicas.
The application administrator can then use one mostlySpread
constraint to indicate
the minimum number of distinct servers that must be used to host the replicas.
Example
Figure 13 depicts a sample reconfiguration between a source and a destination
configuration. In this example, the following mostlySpread
constraints were considered:
N1: VM1 VM2
N2: VM5
N3: VM3

N1: VM1 VM6
N2: VM2
N3: VM3 VM5
Figure 13: A reconfiguration motivated by mostlySpread
constraints.
mostlySpread({VM1, VM2, VM5}, 2)
. This constraint was satisfied in the source configuration as all the VM were running on 2 distinct servers. The constraint is still satisfied in the destination configuration as all the VMs are running on 3 distinct servers.mostlySpread({VM1,VM2}, 1)
. This constraint was not satisfied in the source configuration as the VMs where running onN1
. The relocation ofVM2
toN3
fixed this violation.
See also
Related Constraints
spread
: a constraint that guarantees the VMs will never overlap on a same server, even during the reconfiguration process.lazySpread
: a constraint similar tomostlySpread
but that guarantee every VMs are running on distinct servers.
Specialization(s)
To
lazySpread
:mostlySpread(s,|s|)
↔lazySpread(s)