使用 Proxmox 5.0 作为管理程序平台并设置 KVM VM 来服务网站,我真的想知道我应该使用 kvm64 “虚拟” CPU 还是尝试使用主机。具体来说,我有一个能够进行超线程的 4 核 CPU,这导致在 KVM 中使用 8 个内核(或者我应该禁用超线程以获得更多的每个内核的功率,最后?)我会将服务器的大部分功能用于我的网站。
两者背后的想法都很好:
- 如果我使用“主机”类型的 CPU,我将获得 CPU 的所有硬件功能,并且看起来我将获得大部分功能。唯一的问题是我应该设置多少个内核供 VM 使用?如果我设置为 8,那么 KVM 本身将使用哪些内核,如果我设置为 7(因此一个将仅由 KVM 本身使用),那么我将减少 1/8 的功率。正确的?
如果我将 CPU 类型设置为“kvm64”,那么我可以为 VM 分配更多的 CPU 内核(这些内核是虚拟的,所以我可以轻松地分配一些像 64 甚至 128 个这样的内核),所以物理 CPU 被“拆分”成很多较小的,这可能对 web 类型的负载很有用。我的假设正确吗?
你会推荐我选择什么?
Proxmox wiki部分解决了选择哪种 CPU 类型的问题:
但是,他们没有提到的一件事是:如果您的服务器都有不同的 CPU,那么您可以使用比 kvm64 更强大的虚拟 CPU 生成,并且仍然可以进行实时迁移。您只需要确保您选择的虚拟 CPU 类型是所有服务器中所有物理 CPU 中最旧的(例如,如果您最旧的 CPU 是 Xeon E5630,您可以使用 Westmere)。这使您可以拥有一个具有混合 CPU 的服务器场,并且仍然可以进行实时迁移。
同一个 wiki 还解决了要使用多少虚拟 CPU 内核:
(这意味着不允许单个 VM 拥有比物理 CPU 内核更多的虚拟 CPU 内核。但是添加在一起的多个 VM 的虚拟 CPU 内核总数可能比物理 CPU 内核多。)
请记住,Web 服务器负载通常不受 CPU 限制,因此无论如何您可能会有很多空闲 CPU。
为了获得最佳性能主机是最好的选择,如果 cpu 有 VT-x 标志,它将直接在虚拟机内使用。不需要在 cpu 上模拟任何东西,并且模拟有开销。
当然,这意味着如果您将 VM 切换到具有不同规格 cpu 的不同主机,您可能会遇到问题。然而,通常问题主要是面向性能的,例如,如果新主机的时钟速度较低、缓存较低或加速指令较少,则 VM 不太可能无法启动。但如果确实失败了,您可能会在迁移后更改 cpu 类型以成功启动。
kvm64 选项让您高枕无忧,您永远不会在 cpu 端遇到迁移问题,但它的性能不会那么好。