VirtualBox:由于我有超线程化功能的CPU,我想知道:
按照以下警告(例如,简单地使用4个物理核心CPU的所有8个虚拟核),分配更多的虚拟CPU核心是否是一个坏主意?
谈话全文:
分配给虚拟机的虚拟CPU比主机系统上的物理CPU数量多(4)。这可能会降低虚拟机的性能。请考虑减少虚拟CPU的数量。
有人能对这个话题进行推理吗?
所讨论的CPU是Intel Core i7-4700HQ,方舟英特尔,CPU基准。
假设没有过时的HW,比如HDD (而不是SSD)和/或低内存(这里是16 4GB,这个VM的最小vm.swappiness
是4GB)等等。
发布于 2017-06-18 23:20:07
作为一个OS设计人员,我完全同意测量的结果。在其他地方产生的关于这一主题的胡说八道令人难以置信。
将逻辑核的数目作为HW可以执行的并行线程/进程的数目。这是通过复制例如CPU核心的寄存器和指令指针来实现的。CPU核心本身现在决定使用哪个线程(指令指针)。它将决定使用另一个线程,因为当前线程的指令在缓存中不可用,需要从例如内存或L3缓存中获取。这种机制将在指令/秒或CPU性能方面产生10%-30%的潜在改善。
如果您使用一个线程运行一个应用程序,您将无法获得这一好处,但是如果您在两个高负载应用程序(例如,一个旧的HT )上运行,您将能够获得这些好处。当然,对于有多个线程的应用程序也是如此。我的Linux系统有200个线程,因此依赖于实际负载的一些好处总是存在的。所有这些注释都不需要虚拟化。
Virtualbox只限制每个虚拟机( VM )并行运行的线程数,但主机进程调度程序将更改逻辑处理器(S)和物理处理器(S),VM进程将在其中动态运行。如果在VM上运行高负载的应用程序,那么附加的逻辑核将给您10%-30%的好处。负载可以是单个多线程应用程序,也可以是一组不同的应用程序。
在使用VT或AMD-V的现代系统中,不存在使逻辑核数目最大化的性能损失,因为同时运行更多虚拟机也没有明显的性能损失。您的限制是CPU芯片的性能,因此您不能同时在3个VM上呈现视频,而不降低每个VM的速度,因为它们必须共享相同的物理CPU。
如果您在VM上呈现一个具有所有逻辑核的视频,那么您的主机系统可能会变得没有响应性,但是如果您在主机上运行了该呈现应用程序,您的主机系统可能会遇到几乎相同的问题。至少在VM中,您有一个选择,您可以通过将最大CPU负载限制在80%-90%,或者为此原因减少内核数量来解决它。
发布于 2018-05-11 10:34:49
我最好的两分钱是永远不要使用所有的核心/线程,只是让一个或两个主机。
因此,在您的情况下,给来宾一个6个核心,而不是第一个核心(因为主机上只有8个线程)。
如果主机上可用线程数(不要与内核混淆)为:
对于两个以上的线程,我倾向于使用以下公式:
我的经验告诉我,如果不超过这样的公式限制,那就容易得多,风险也小得多。
警告:不允许在运行客户端时更改客户核心的数量,但允许将CPU使用率从100%降低到75%或50%,不少于客户可能会失败。
因此,有时我倾向于在一个8线程主机上给两位客人6个6个核心(公式的数目就好像只有一个客户而不是两个客户),但限制他们的CPU速度的50% (因此两位来宾都可以使用CPU的1/2时间),但只有当我知道客户将运行的应用程序的并行率大于一,如图像比较/连接,等等。
https://unix.stackexchange.com/questions/325932
复制相似问题