Ant*_*ony 11 cpu virtualbox hyper-threading virtual-machine
我有一个带超线程的四核 i7 处理器(8 个逻辑内核),当我将虚拟机配置为使用 8 个处理器时,VirtualBox 给了我一个警告,说我只有四个内核(这是真的),这可能会导致性能问题。但是超线程是一个硬件特性,所以操作系统看到 8 个内核,它会向所有 8 个内核发送指令。 如果将其设置为 4 会导致 VM 使用 2 个内核(4 个线程)而不是 4 个并发线程(在所有 4 个内核上) )?我收到的警告是否考虑了我的机器具有超线程?
根据Kristian Wedberg所做的基准测试,我会说您应该使用您拥有的所有逻辑内核。
此外,我使用相同的 CPU(i7、4 CPU 和 HT)进行了自己的基准测试,这证实了多线程应用程序的性能提升。如果来宾 PC (Win. 8.1 x64) 使用了所有 8 个内核,那么主机 PC (Ubuntu x64) 也使用了所有 8 个内核。
我还比较了单线程应用程序的性能。在这两种情况下,我测量了相同的值,因此使用超过物理(但最多逻辑)数量的 CPU 没有任何损失。
在这里,您可以看到来宾 PC 中的 1 个 CPU 满载将导致主机 PC 中的 1 个 CPU 负载。
小智 9
我发现即使在 VirtualBox(我的经验是 5.1.0 版)中可以(并且可以说更快)将 vCPU 分配给基于逻辑处理器的 VM,但在高负载下运行时,可能会在来宾操作系统内部遇到问题. 在我的情况下,在 8 核 Ubuntu 16.04 主机(报告 16 个逻辑处理器)上具有 12 个 vCPU 的 Windows 2012 R2 VM 会在高 CPU 负载期间蓝屏并显示 DPC_WATCHDOG_VIOLATION 错误消息。使用osronline.com的小型转储分析显示 e1g6032e.sys(Windows 原生的 Intel 100/1000 网络驱动程序)是违规的原因。
这让我相信,当根据逻辑处理器容量分配 vCPU 并在高负载下长时间运行 VM 时,来宾操作系统内部的计时会受到负面影响。就我而言,Windows VM 内的 100% CPU 负载几分钟会导致蓝屏死机。将 vCPU 数量减少到 8 个(对应于主机的物理核心数量)后,Windows VM 在类似的高负载情况下不再蓝屏。VirtualBox的在线文档说应该这样做,但没有提供任何理由。
在我的环境中,还有另外两个 Ubuntu VM 正在运行,每个都有自己的 8 个 vCPU。然而,在 Windows VM 出现 BSOD 问题时,它们的负载很小。
归档时间: |
|
查看次数: |
16921 次 |
最近记录: |