硬件/操作系统/软件

硬件/操作系统/软件

VirtualBox:正如我所见超线程有能力的CPU,我想知道:

正如以下警告所示,分配比物理 CPU 核心数量更多的虚拟 CPU 核心是不是一个坏主意(例如,仅使用 4 个物理核心 CPU 的所有 8 个虚拟核心):

VirtualBox CPU Warning if using Hyper-Threading

成绩单:

分配给虚拟机的虚拟 CPU 数量多于主机系统上的物理 CPU 数量 (4)。这可能会降低虚拟机的性能。请考虑减少虚拟CPU的数量。

有人可以对这个话题进行推理吗?

有问题的CPU是Intel Core i7-4700HQ,方舟英特尔,CPU基准测试

假设,没有过时的硬件,例如 HDD(而不是 SSD)和/或低 RAM(此处为 16GB,最低vm.swappiness,此 VM 为 4GB),等等。

答案1

硬件/操作系统/软件

主持人:Linux Mint 18 Cinnamon 64 位(完全更新);内核版本 4.4.0-47-generic

客人:Windows 8.1 Pro 64位(完全更新)

处理器:英特尔酷睿 i7-4700HQ,(6MB 缓存,4 个物理核心,或 8 个使用超线程),CPU基准测试

虚拟盒子:版本5.1.10 r112026(Qt5.5.1)

嘉宾补充:已安装且是最新的

基准工具#1:WinRAR 版本 5.40 最终 64 位

基准工具 #2:VeraCrypt 版本 1.19 最终 64 位


准备

在这两种情况下,我都会在启动后等待,直到 CPU、RAM、磁盘驱动器稳定在接近零点的位置。


方法

  1. 克隆原始虚拟机以拥有两个相同的虚拟机。
  2. 对于第二次,我已经在这个答案的底部指出了重新启动禁用防病毒软件,并在这两种情况下将 WinRAR 从 Beta 版本更新为最终版本。
  3. 我已经做了与前面指出的相同的准备工作。
  4. 虚拟机在前台运行,没有任何其他占用 CPU 时间的应用程序运行,我已经禁用了我可以禁用的功能,以免测试受到影响。
  5. 为了包括系统内部或外部的潜在缓存,我连续运行了两次相同的测试。好处几乎没有。

结果

解压缩工具

  1. 4核心=>7.5分钟 (更短时间比较好)

    WinRAR with 4 cores enabled

    WinRAR 与4启用核心,处理 1.5GiB7.5分钟。

  2. 8核心=>4.5分钟 (更短时间比较好)

    WinRAR with 8 cores enabled

    WinRAR 与8启用核心,处理 1.5GiB4.5分钟。


维拉密码

  1. 4核心=>速度2.6GiB/秒(更高速度更好)

    VeraCrypt with 4 cores enabled

    VeraCrypt 与4启用核心,硬件加速 AES (AES-NI)速度2.6GiB/秒。

  2. 8核心=>速度3.9GiB/秒(更高速度更好)

    VeraCrypt with 8 cores enabled

    VeraCrypt 与8启用核心,硬件加速 AES (AES-NI)速度3.9GiB/秒。


结论

我可以根据需要运行尽可能多的测试。但我想,如果这两个,其中一个是相当复杂的压缩测试,第二个是一组相当复杂的加密测试,那还有什么意义。

两个基准都显示出明显的差异。我认为没有理由相信他们的结果不准确,因为我遵循了相当严格的准备和方法,而且这些测试是在 RAM 中进行的,以排除 I/O 瓶颈。从我的角度来看,问题中提到的警告可能适用于某些情况,但肯定不是全部。与您分享了这些相当显着的结果后,我确信您会同意我的观点,即在具有以下功能的现代 CPU 上,可能不应该如此认真地对待这个警告:超线程使用最新的 VirtualBox 版本。有一点可以肯定:在决定永久应用此设置之前,不要相信我的话,并在您自己的条件下进行测试。


新标杆

主持人+嘉宾:Linux Mint 19.2“蒂娜”-肉桂(64 位);两者都带有内核:5.3.0-24-generic.

处理器:英特尔® 酷睿™ i7-7700HQ; 6 MB 缓存,高达 3.80 GHz,4 个物理核心,或 8 个使用超线程,CPU基准比较

虚拟盒子:版本 6.1.0 r135406 (Qt5.9.5)

嘉宾补充:已安装且是最新的

基准测试工具:VeraCrypt 版本 1.24 Hotfix1 64 位最终版(网页,直接 deb 下载链接


制备及方法

与之前的基准相同。


结果

VeraCrypt 4 核 AES 加密

⟶ 速度 4.8 GiB/s (速度越高越好)

VeraCrypt AES encryption 4 cores = speed 4.8 GiB/s


VeraCrypt 8 核 AES 加密(超线程发出警告)

⟶ 速度 7.2 GiB/s (速度越高越好)

VeraCrypt AES encryption 8 cores = speed 7.2 GiB/s

结论

令人惊叹的 50% 性能提升超线程已启用,但遗憾的是仅适用于 AES,我将不得不运行一些更全面的测试。几天后就会带着结果回来。

答案2

作为一名操作系统设计师,我完全同意测量结果。其他地方关于这个主题的废话之多令人难以置信。

将逻辑核心的数量视为硬件可以执行的并行线程/进程的数量。这是通过复制CPU核心的寄存器和指令指针来实现的。 CPU 核心现在自行决定使用哪个线程(指令指针)。它将决定使用另一个线程,因为当前线程的指令在缓存中不可用,需要从内存或 L3 缓存中获取。此机制将使每秒指令数或 CPU 性能潜在提高 10%-30%。

如果您使用一个线程运行单个应用程序,您将无法获得这一好处,但如果您在旧的 HT Pentium 上运行两个高负载应用程序,您将能够获得这种好处。当然,对于具有多个线程的应用程序来说也是如此。我的 Linux 系统有 200 个线程,因此始终存在一些取决于实际负载的好处。所有这些评论都适用于没有虚拟化的情况。

Virtualbox 仅限制每个虚拟机 (VM) 可以并行运行的线程数量,但主机进程调度程序将更改逻辑处理器,从而更改 VM 进程动态运行的物理处理器。如果您在虚拟机上运行高负载应用程序,额外的逻辑核心将为您带来 10%-30% 的相同优势。负载可以是单个多线程应用程序或一组不同的应用程序。

在采用 VT-x 或 AMD-V 的现代系统上,最大化逻辑核心数量不会造成性能损失,因为同时运行更多虚拟机也不会造成明显的性能损失。您的限制是 CPU 芯片的性能,因此您无法同时在 3 个虚拟机上渲染视频而不降低每个虚拟机的速度,因为它们必须共享相同的物理 CPU。

如果您在存在所有逻辑核心的虚拟机上渲染视频,您的主机系统可能会变得无响应,但如果您确实在主机上运行该渲染应用程序,您将遇到几乎相同的问题。至少在 VM 中,您可以选择,可以通过将最大 CPU 负载限制为 80%-90% 或因此减少核心数量来解决这个问题。

答案3

我最好的两分钱是永远不要使用所有核心/线程,只让一两个用于主机。

因此,就您的情况而言,请为来宾提供六个核心,而不是第八个核心(因为主机上只有 8 个线程)。

如果主机上的可用线程数(不要与内核混淆)为:

  • 如果 < 2,最好根本不使用虚拟机
  • 如果是 2,则在单核模式下使用虚拟机,或者冒险使用双核来宾
  • 如果 > 2,最好使用公式

对于两个以上的线程,我倾向于使用这个公式:

  • N = 主机线程数
  • M = 我想要运行的并发虚拟机数量(假设均衡,每个来宾的来宾核心数量相同)
  • 如果主机只有 4 个或更少线程,则公式=(N-1)/M
  • 如果主机有超过 4 个线程,则公式=(N-2)/M

我的经验告诉我,不超过这样的公式限制会更顺利,风险也更小。

警告:运行 guest 虚拟机时不允许更改 guest 核心数量,但允许将 CPU 使用率从 100% 降低到 75% 甚至 50%,不少于 guest 虚拟机可能会失败。

因此,有时我倾向于在 8 线程主机上为两个来宾提供 6 个 6 核(公式中的数量就好像只有一个来宾而不是两个来宾),但将它们限制为 CPU 速度的 50%(因此两个来宾都可以使用 1 /2 CPU 时间),但只有当我知道客人将运行并行比率大于 1 的应用程序时,例如图像比较/联合等。

相关内容