2

我对 KVM 有疑问,我在网上找不到任何令人满意的答案。

假设我想在具有 2 个 CPU 的主机上创建 3 个虚拟机。我将 1 个 cpu 分配给 1 个虚拟机。其他 2 个虚拟机应该共享 1 个 cpu。如果可能的话,我想给 1 个 vm 30% 和另外一个 70% 的 cpu。

我知道这没有多大意义,但我很好奇并想测试的是:-)

我知道像 onapp 这样的管理程序可以做到这一点。但是他们是怎么做到的呢?

4

1 回答 1

3

KVM 将每个虚拟 CPU 表示为宿主 Linux 系统中的一个线程,实际上是 QEMU 进程中的一个线程。因此来宾 VCPU 的调度由 Linux 调度程序控制。

在 Linux 上,您可以使用taskset将特定线程强制到特定 CPU 上。这样您就可以将一个 VCPU 分配给一个物理 CPU,将两个 VCPU 分配给另一个。例如,请参阅https://groups.google.com/forum/#!topic/linuxkernelnewbies/qs5IiIA4xnw

至于控制每个 VM 获得的 CPU 百分比,Linux 有几种可用的调度策略,但我不熟悉它们。您能找到的有关如何控制 Linux 进程调度的任何信息都适用于 KVM。

这个问题的答案可能会有所帮助:https ://serverfault.com/questions/313333/kvm-and-virtual-to-physical-cpu-mapping 。(此外,该论坛可能是解决此问题的更好场所,因为该论坛旨在解决编程问题。)

如果您搜索“KVM 虚拟 CPU 调度”和“Linux CPU 调度”(不带引号),您应该会找到大量附加信息。

于 2017-12-03T23:20:13.763 回答