VirtualBox是否可以容纳最大数量的CPU?

问题描述 投票:6回答:2

我正在使用在具有48个CPU和250GB RAM的主机上运行的VirtualBox 5.1我要导入的虚拟机(来宾)最初具有2个CPU和4GB的RAM。

在这台机器内部,我正在用Java运行一个进程,该进程启动动态数量的线程来执行某些任务。

我使用以下配置运行它:

笔记本电脑上的整个过程(2个CPU / 4GB RAM)〜11秒

服务器中虚拟机中的相同程序(15个CPU和32GB RAM)〜45秒

服务器中虚拟机中的相同程序(20个CPU和32GB RAM)〜100+秒

服务器中虚拟机中的相同程序(10个CPU和32GB RAM)〜5+秒

首先,我认为我从Java管理线程的方式存在问题,但是经过多次测试,我发现虚拟机具有的CPU数量与其性能之间存在关联,最大为10,之后,计算机的整体性能会降低(CPU饥饿?)

虚拟机运行Oracle Enterprise Linux 6.7,而主机运行Oracle Enterprise Linux 6.9

我在虚拟机文档中找不到有关CPU数量的硬限制。

是否需要进行设置才能在VirtualBox实例中启用/利用10个以上的CPU?

multithreading virtualbox cpu virtualization starvation
2个回答
6
投票

自从我发布此问题以来,时间已经过去了,仅是我的档案将分享我的发现,希望它们可以为其他人节省时间。

事实证明,性能问题是由于VirtualBox的工作方式引起的。尤其是操作系统和管理程序之间的关系。

最后的虚拟机(客户机OS)是主机的单个进程,并且当您在虚拟机设置中修改CPU数时,它们将执行的操作是更改线程数。该进程将必须模拟其他CPU。(至少在VirtualBox中)

话虽如此,当我为VM分配10个以上的CPU时,结果是:

  • 具有10个以上线程的单个进程
  • 运行数百个进程的模拟操作系统
  • 我的Java代码正在创建另外一堆线程

所有这些共同导致设置是饱和主机虚拟机进程,我认为这是由于主机操作系统处理进程上下文切换的方式而引起的>]

在我的服务器上,硬限制是7个虚拟CPU,如果我添加的数量超过限制,它将减慢Java软件的性能

在VM外部运行Java软件没有显示任何性能问题,它具有60多个独立线程,开箱即用。


0
投票

我们的设置几乎与您的设置相同(Virtualbox在2个NUMA节点上的48核计算机上运行。)>

我最初将内核数设置为Virtualbox支持的最大核数(例如32),但很快意识到,当VM处于负载状态时,两个NUMA节点之一始终处于空闲状态,而另一个处于中等负载状态。

© www.soinside.com 2019 - 2024. All rights reserved.