我目前在支持两个处理器的主板上运行 HyperV Server 2012 R2,但目前只有一个。它有64GB的内存。我现在想添加第二个处理器,将现有内存的一半移动到新处理器,每个 32GB。稍后我会添加更多内存。
使用最多内存的两个 VM 都分配了 16GB。还有其他虚拟机最多使用 4GB。
有什么我需要注意的事情,或者我不应该知道的任何原因吗?HyperV 会在启动 VM 时选择具有足够可用内存的处理器吗?此外,是否可以分配比单个处理器更多的 vCPU?会有什么效果?
主板是华硕 KGPE-D16,处理器是 AMD Opteron 6320 OS6320WKT8GHKWOF,如果有区别的话。
是的,Hyper-V 将在启动 VM 时选择容量最大的节点(处理器和内存)。如果虚拟机适合节点,那么它将以最佳方式运行。为避免碎片,您可能希望将您的机器配置为首先启动大型 VM。但请记住,远程访问您机器上的内存的损失可能非常小,并且您可能无法衡量优化配置的虚拟机与“跨接”节点的虚拟机之间的差异。
而且,是的,可以分配比任何一个物理节点都多的虚拟处理器。VM 可以跨节点,并且运行良好。
如果 VM 中的工作负载对性能特别敏感,您可以考虑配置 VM 本身以使其具有多个节点。为此,您必须禁用动态内存,也就是说需要为 VM 配置固定数量的 RAM。其次,进入虚拟机设置中处理器配置下的“NUMA”选项卡。(或使用 PowerShell。)您将在此处看到“每个节点的最大处理器数”。将其设置为小于或等于物理机中的核心数。然后将 VM 分解为虚拟节点。然后将每个虚拟节点分别放置到一个物理节点中。
最后,如果您觉得这很复杂,您只需单击“使用硬件拓扑”按钮,您的虚拟机将向来宾操作系统和应用程序堆栈表示自己,其节点数与底层物理机一样多。
如果您真的担心您的工作负载始终以最佳配置运行,并且您不在乎当内存太分散而无法以最佳方式将 VM 放入内存时 VM 是否无法启动,您可以在通过 PowerShell 的虚拟机。当然,如果你这样做,你会想要确保这个虚拟机首先启动,以避免碎片。而且,如果您确保它首先启动,即使不禁用 NUMA 生成,它也会以最佳方式运行。