-
Notifications
You must be signed in to change notification settings - Fork 565
Description
Right now, Cloud Hypervisor lacks the ability to change how the vCPU is represented to the guest. There is no way to make a cluster of heterogenous hosts look homogenous to the guest, which is a big problem for live migration; if the CPU model of the destination isn't exactly the same as the source, then the migration fails since the MSRs can't be applied.
Firecracker and QEMU solve this problem by introducing CPU templates in the case of Firecracker or CPU types in the case of QEMU. In the case of Firecracker, using a CPU template allows restricting the vCPU to e.g. Intel Skylake by selecting the C3 CPU type, and then the VM can be migrated to any CPU that's newer (or includes the features of) Intel Skylake. Same in the case of QEMU, you can select the CPU type Skylake-Server-v1, which means that the VM can then be live migrated to any host that has a CPU newer than Intel Skylake.
Adding a CPU templating systems/CPU types would significantly improve Cloud Hypervisor's existing live migration capabilities, which right now are quite limited in practical use cases since they only really work if the source and destination host are exactly the same. From Loophole Labs' perspective, we'd love to add Cloud Hypervisor to our Drafter open source project where we migrate VMs between different cloud providers without the need of bare-metal instances thanks to the work-in-progress PVM patches, but without this feature it's impossible to migrate between even slightly different instance types.