具有超线程的四核主机,要在VirtualBox中配置多少个处理器?


10

我有一个具有超线程功能的四核i7处理器(8个逻辑内核),当我配置一个虚拟机使用8个处理器时,VirtualBox会警告我说我只有四个内核(这是事实),这可能会导致性能问题。但是超线程是一项硬件功能,因此操作系统可以看到8个内核,并向所有8个内核发送指令。如果将其设置为4,会导致VM使用2个内核(4个线程)而不是4个并发线程(在所有4个内核上) )?我得到的警告是否考虑到我的计算机具有超线程?

Answers:


9

根据克里斯蒂安·韦德伯格Kristian Wedberg)所做的基准测试,我想您应该使用所有拥有的逻辑核心。
另外,我使用相同的CPU(i7,带HT的4 CPU)进行了自己的基准测试,确认了多线程应用程序的性能提高。如果来宾PC(Win。8.1 x64)使用了全部8个核心,则主机PC(Ubuntu x64)也使用了全部8个核心。

在此处输入图片说明

我还比较了单线程应用程序中的性能。在这两种情况下,我都测量了相同的值,因此使用物理(而不是逻辑)数量的CPU不会造成任何损失。
在这里您可以看到,来宾PC中的1 CPU满负载将导致主机PC中的1 CPU负载。

在此处输入图片说明


同意 我使用了4个内核,发现在构建项目时仅占用约50%的CPU时间。然后,尽管发出警告,但我将逻辑内核数更改为8,该构建占用了100%的CPU时间,我相信它的运行速度比以前更快。
德庆2016年

这非常有趣,我记得读过Linux专门尝试将负载集中在每个物理HT内核的1个逻辑内核上,以提高效率。我不知道客户机Linux内核是否可以看到CPU是超线程的,并针对该类型的配置优化了其调度。
安东尼

8

我发现,即使在VirtualBox(我的经验是在5.1.0版中)中有可能(并且可以说是更快)将vCPU分配给基于逻辑处理器的VM,但在高负载下运行时,来宾OS内可能会遇到问题。在我的情况下,如果Windows 2012 R2 VM在8核Ubuntu 16.04主机(报告16个逻辑处理器)上具有12个vCPU,则会在CPU负载过高时出现BSOD,并显示DPC_WATCHDOG_VIOLATION错误消息。使用osronline.com进行的小型转储分析表明,e1g6032e.sys(Windows固有的Intel 100/1000网络驱动程序)是造成此问题的原因。

这使我相信,在基于逻辑处理器容量分配vCPU并长时间长时间高负载运行VM时,来宾OS内的时序会受到负面影响。就我而言,Windows VM内部100%CPU负载持续几分钟会导致BSOD。将vCPU数量减少到8(对应于主机的物理核心数量)后,Windows VM在类似的高负载情况下不再进行BSOD。VirtualBox 的在线文档说应该这样做,但没有提供任何原因。

在我的环境中,还运行着另外两个Ubuntu VM,每个VM都有自己的8个vCPU。但是,在Windows VM出现BSOD问题时,它们的负载很小。


很棒的答案(有资料),谢谢!迟了几年,但现在我知道了:)
安东尼

2

我得到的警告是否考虑到我的计算机具有超线程?

是。如果将VM中的核心数设置为大于物理上的核心数,则Virtual Box中的任务调度过程会过度分配CPU资源,从而导致严重的性能问题。

至于跨内核分配负载,这是主机OS的工作,并且应该在正确的庄园中运行。


4
您是否有任何数据来支持您的陈述?有人进行了一项研究envobi.com/post/virtualbox-hyper-threading-benchmark-surprise,他们确实建议将“ Virtual Box CPU计数”设置为逻辑 CPU的数量。
Maxim Egorushkin 2015年

0

这是您计算机上的原始VM吗?如果克隆虚拟机并将其移动到另一台计算机和/或更改设置,有时会遇到特殊的错误。
我建议下载并安装具有最新扩展名的最新版本的Virtual Box。

我已经提交了所有八个内核,而我的i7在Ubuntu 13.10上运行VM时没有收到该错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.