我有关于 KVM 的问题,我在网上找不到任何令人满意的答案。
假设我想在具有 2 个 CPU 的主机上创建 3 个虚拟机。我将 1 个 cpu 分配给 1 个虚拟机。其他 2 个虚拟机应共享 1 个 cpu。如果可能的话,我想给 1 台虚拟机 30% 的 CPU,另一台虚拟机 70% 的 cpu。
我知道这没有多大意义,但我很好奇并且想测试一下:-)
我知道像 onapp 这样的虚拟机管理程序可以做到这一点。但他们是如何做到的呢?
最佳答案
KVM 将每个虚拟 CPU 表示为主机 Linux 系统中的一个线程,实际上是 QEMU 进程中的一个线程。因此,Guest VCPU 的调度由 Linux 调度程序控制。
在 Linux 上,您可以使用 taskset
将特定线程强制分配到特定 CPU。这样您就可以将一个 VCPU 分配给一个物理 CPU,将两个 VCPU 分配给另一个物理 CPU。例如,参见https://groups.google.com/forum/#!topic/linuxkernelnewbies/qs5IiIA4xnw .
就控制每个虚拟机获得的 CPU 百分比而言,Linux 有多种可用的调度策略,但我对它们并不熟悉。您能找到的有关如何控制 Linux 进程调度的任何信息都将适用于 KVM。
此问题的答案可能会有所帮助:https://serverfault.com/questions/313333/kvm-and-virtual-to-physical-cpu-mapping 。 (此外,该论坛可能是解决此问题的更好场所,因为该论坛旨在解决编程问题。)
如果您搜索“KVM 虚拟 CPU 调度”和“Linux CPU 调度”(不带引号),您应该会找到大量其他信息。
关于virtualization - KVM CPU占有率/优先级/超卖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621257/