(我使用 xcp-ng/xen 作为我的虚拟机管理程序,但一般性问题,因为当我使用 qemu/kvm 和 virtualbox 时,我也想知道它们)每当我创建 VM 时,我都可以选择为其提供尽可能多的内核无论如何,无论系统有多少个CPU核心,我都可以给我的所有虚拟机提供所有CPU核心,如果我愿意的话,这似乎意味着它们将共享它们。
然后我脑海中浮现出一个问题:有什么原因吗?不是如果主机系统只是执行虚拟机管理程序的职责,那么为我的所有虚拟机提供所有核心?
答案1
因为当任何虚拟机处于任何不可忽略的负载时,您将增加发生的上下文切换量。在虚拟机管理程序下运行时,上下文切换的成本要高得多。这是最近的一些虚拟化开销的性能测量我做了。
将每个虚拟机限制为更少的 CPU 核心还有其他好处 - 例如,这意味着一个虚拟机如果发生故障,无法使机器上的其他所有东西都停止运行。共享 CPU 的虚拟机还存在潜在的安全问题,但这并不重要,因为您信任正在运行的所有虚拟机(例如幽灵/熔断式攻击)。
答案2
在制作 VM 时,为什么我不想
pass
使用所有 cpu 核心?
从你的问题的标题来看,你似乎正在混合两种完全不同的东西。 “通过”意味着将其专门供虚拟机使用。当您在 Virtualbox 中设置“虚拟 CPU”的数量时,这不是您所做的。尽管传统观点认为该数字不超过主机上物理核心的数量,但我的经验证明情况并非一定如此。例如,在 Virtualbox 中,我在具有 4 核 8 线程 CPU 的主机上启动了一些虚拟机,每个虚拟机有 6 个虚拟 CPU。其中一些虚拟机正在执行一些繁重的编译任务,同时我正在主机上执行我的日常工作。没有任何负面影响——我感觉主机没有延迟、没有卡顿、没有减速。至于好处,与 4-CPU 虚拟机相比,速度有可衡量的提升,尽管速度有限——内核编译任务的完成速度明显更快,但幅度不大。进一步增加来宾中的虚拟 CPU 数量表明我不会带来更多好处。因此,在这个设置中,我们不会将 CPU 核心“传递”给来宾——这取决于 qemu/kvm/Virtualbox 如何向来宾提供虚拟 CPU,显然 Virtualbox 在这方面做得很好。
(注:在您的帖子中,您还提到了“Xen”这个词。我无法对 Xen 发表评论,但我怀疑 Xen 实际上可能是“传递”CPU 内核的问题。其他人可能想评论克森。)