BtrPlace is a virtual machines placement algorithm for hosting platforms. You can specialize it safely through independant constraints to make it support what match your expectations.
BtrPlace in use
The european project Fit4Green relies on BtrPlace plus a fine grain power model to reduce the power consumption and the gas emissions of datacenters.
The FSN project OpenCloudware relies on BtrPlace to place VMs with regards to fault-tolerance, performance, isolation or energy concerns.
The european project DC4Cities relies on BtrPlace to schedule VMs and negociate the quality of service according to the availability of renewable energies.
In a nutshell
Create a Model that represents the current state of the platform:
Model model =
Express your expectations with constraints (here, through btrpsl): VM2 and VM3 must run on distinct nodes. 3 vCPU resources must allocated to VM1. N4 must be offline.
spread(VM[2..3]); preserve(VM1, "cpu", 3); offline(@N4);
Use BtrPlace to compute a reconfiguration plan to reach a model satisfying your constraints:
Set<SatConstraint> constraints = ... ReconfigurationAlgorithm cra = new DefaultChocoReconfigurationAlgorithm(); ReconfigurationPlan plan = cra.solve(model, constraints);
And that's it ! Plan contains the schedule of actions to reach a new viable model according to the stated constraints and the actions semantic. The result will be: