Ask HN: help needed on VM placement algorithm
https://news.ycombinator.com/item?id=605146Hello!
I'm working on a "cloud computing" management system and need help on a VM placement/provision algorithm.
Let us assume we have a cluster of N physical servers. Each server has a single type of resource - slots (Note that in real world servers have more resources CPU/memory/disk/etc...). Let a server have M slots. Servers can run virtual machines, every VM occupies from 1 to M slots. Once the VM (with k slots) starts on a server, the number of free server slots is reduced accordingly. When the VM stops, the occupied slots are freed.
VMs can live-migrate across servers. For example, when there is no server with M free slots (every server runs at least one VM), and we need to start an M-slot VM - there we need to rearrange VMs across a cluster.
The goal is implement a VM placement policy to satisfy the following requirements:
* utilize server resources in a uniform way, e.g. if we have 3 servers and 3 single-slot VMs we should place them on different servers.
* minimize number of VM migrations as it is a costly operation.
It looks like the problem in question has something to do with multiple knapsack problem, so I'm looking for some kind of heuristic algorithm.
Any advise / papers / working solutions ?
Thanks in advance,
Kirill