当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 选择虚拟机的 vCPU 和核心数量

作者:精品下载站 日期:2024-12-14 20:14:26 浏览:17 分类:玩电脑

选择虚拟机的 vCPU 和核心数量


在不同的虚拟机管理程序(VMWare、KVM、Hyper-V 等)中创建虚拟机时,您可能会发现有时虚拟机可能看不到分配给它的所有虚拟处理器插槽 (vCPU)。在我们的案例中,8 个 vCPU 被分配给 KVM 虚拟机,并且 Windows 10 作为来宾操作系统安装在其上。但是,Windows 将这些 vCPU 检测为单独的处理器(而非核心),并且只能使用其中 2 个。

仅使用 2 个核心的 Windows 10 虚拟机

如果您打开 Windows 设备管理器,则可以确保所有分配的核心都显示为 8 个独立的虚拟处理器 QEMU 虚拟 CPU 版本 2.5+

[玩转系统] 选择虚拟机的 vCPU 和核心数量

同时,Windows 10 属性(计算机 -> 属性)和任务管理器显示只有 2 个 QEMU 虚拟处理器可用。

[玩转系统] 选择虚拟机的 vCPU 和核心数量

这意味着 Windows 10 只能使用 2 个核心,无论您添加多少个核心。同时,在同一虚拟机管理程序上运行 Windows Server 2016 的虚拟服务器可以看到分配给它的所有 16 个 vCPU。

Windows 支持的处理器数量

问题在于桌面 Windows 版本 (Windows 10/8.1/7) 对计算机可以使用的物理处理器(插槽)的最大数量有限制:

  • Windows 10 家庭版 - 1 个 CPU

  • Windows 10 专业版 - 2 个 CPU

  • Windows 10 工作站 - 最多 4 个 CPU

  • Windows Server 2016 - 最多 64 个 CPU

然而,这个限制与核心数量无关。为了提高虚拟机的性能,您可以使用具有更多核心的处理器。大多数虚拟机管理程序可以提供 vCPU 作为处理器、处理器核心甚至线程。这意味着您可以添加 2 个 vCPU(2 个插槽),每个插槽 4 个,而不是 8 个 vCPU。让我们看看如何将虚拟处理器分配为不同虚拟机管理程序中的核心,以及如何将其绑定到现代处理器中使用的 NUMA 架构。

在 KVM 中管理虚拟核心和 vCPU

在运行 Windows 10 的 KVM 虚拟机中,所有分配的虚拟核心都被视为单独的处理器。

要使用分配给虚拟机的所有 CPU 资源,虚拟机必须看到 1 个 8 核处理器、2 个各 4 核的 vCPU 或 1 个具有 4 核的两个线程的 vCPU,而不是 8 个 vCPU。让我们尝试更改 KVM 虚拟机的虚拟核心分配。

关闭您的虚拟机:

# virsh shutdown w10testvm 

- 其中 w10testvm 是虚拟机的名称

显示KVM虚拟机当前的XML配置:

# virsh dumpxml w10testvm

我们需要一个描述 VM CPU 设置的块:

<vcpu placement='static'>8</vcpu>
<cputune>
<shares>1000</shares>
</cputune>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>

可以看到,这里设置了8个vCPU。让我们更改一下配置:

# virsh edit w10testvm

之后添加以下块:

<cpu mode='host-passthrough' check='none'>
<topology sockets='1' cores='4' threads='2'/>
</cpu>

在哪里 :

  • host-passthrough

    是虚拟机看到集群节点的物理处理器的模拟模式

  • sockets='1'

    表示有1个vCPU(socket)

  • cores='4'

    处理器每个插槽有 4 个核心

  • threads='2'

    每个核心有2个线程

保存配置文件并启动虚拟机。登录到 Windows 10 来宾 VM,运行任务管理器或资源监视器,并确保 Windows 看到所有分配的虚拟核心。

[玩转系统] 选择虚拟机的 vCPU 和核心数量

现在,系统属性中会显示主机的物理处理器 Intel(R) Xeon(R) Silver 4114 CPU,而不是虚拟处理器。

[玩转系统] 选择虚拟机的 vCPU 和核心数量

以下是我们如何设法解决虚拟机的重负载问题,因为两个核心不足以让应用程序正常工作。

为 VMWare VM 设置每个 vCPU 的核心数

您可以在 vSphere Client 界面中更改 VMWare 虚拟机的 vCPU 呈现方式。

  1. 关闭虚拟机并打开其设置;

  2. 展开CPU部分;

  3. 更改 VM 配置,以便来宾操作系统可以看到 2 个处理器,每个处理器有 4 个内核。将值每插槽核心数更改为4。这意味着来宾操作系统将看到两个 4 核 CPU(2 个插槽,每个插槽 4 个内核);

    [玩转系统] 选择虚拟机的 vCPU 和核心数量

  4. 保存更改并运行虚拟机。

虚拟机 vCPU 和 NUMA 架构

您还必须了解向虚拟机分配 vCPU 和内核的更多方面。

分配每个插槽的核心数量时,请确保您是否具有 NUMA 架构(在大多数现代 CPU 中使用)。不建议为虚拟机分配的每个插槽(以及 vCPU 总数)的核心数多于物理插槽(NUMA 节点)上可用的核心数。当放置在单个物理 NUMA 节点上时,虚拟机将能够使用特定 NUMA 节点上可用的快速本地 RAM。否则,进程将不得不等待另一个 NUMA 节点的响应(这需要更长的时间)。

如果将两个单独的虚拟套接字分配给 VM,则虚拟机管理程序可以在不同的 NUMA 节点上运行它们。它将影响虚拟机的性能。

如果所需的 vCPU 数量多于 1 个物理插槽(NUMA 节点)上的核心数量,请创建多个具有所需核心数量的虚拟插槽(处理器)。另外不建议使用奇数个处理器(最好添加 1 个 vCPU)。

它允许保持虚拟机性能。

[玩转系统] 选择虚拟机的 vCPU 和核心数量

例如,在为虚拟机配置 vCPU 时,建议对每插槽 10 个核心的 2 处理器主机(总共 40 个可用 vCPU,包括线程)使用以下配置:

vCPU Number NeededNumber of Virtual Sockets in the VM SettingsNumber of Cores per a Virtual Processor in the VM Settings111……1011011Not optimal1226……20210

在免费 ESXi 版本中,您无法创建具有超过 8 个 vCPU 的虚拟机。

例如,运行具有 16 个 vCPU 的 Microsoft SQL Server 2016 企业版的虚拟机(采用8 个插槽,每个插槽 2 个内核的配置)的性能将低于具有每个插槽 2 个插槽 x 8 个内核的虚拟机的性能。
另请记住,某些应用程序的许可取决于物理插槽的数量(就像早期 SQL Server 版本中的情况一样)。有时,授权一个多核处理器比授权多个内核数量较少的处理器更有利可图。

现代 Windows Server 版本在虚拟环境中以特殊方式获得许可。 VMWare vSphere 中还有处理器许可的某些方面。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯