virtualization - KVM CPU占有率/优先级/超卖

标签 virtualization qemu kvm hypervisor virsh

我有关于 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/

相关文章:

linux - 在 Linux 中启用串行端口 ttyS2 和 ttyS3

java - 使用 Libvirt Java API 连接到 QEMU

linux-kernel - 如何让 VirtualBox 或 VMware(或任何其他虚拟化软件)使用 native 访客网络驱动程序?

linux - 有没有办法让 guest 内核直接访问 mmc Controller ?

performance - 虚拟机内基准测试的可信度?

linux - 具有 SDL 支持且没有 XWindows 的最小 Linux 发行版?

配置网桥后 ubuntu KVM guest 没有网络连接

ssl - Libvirt 和 TLS 忽略 CA 文件设置

amazon-ec2 - KVM 不适用于 EC2 C5.large

linux - 使用影子分页在 ubuntu 中运行虚拟机?