首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一个最大数量的中央处理器的VirtualBox可以裸露?

是否有一个最大数量的中央处理器的VirtualBox可以裸露?
EN

Stack Overflow用户
提问于 2017-06-20 01:07:45
回答 2查看 9.3K关注 0票数 6

我使用的是VirtualBox 5.1,运行在一个拥有48 CPU和250 4GB内存的主机上,这是我最初导入的虚拟机(来宾),最初有2 CPU和4GB内存。

在这台机器中,我正在使用Java运行一个进程,它启动一个动态的线程数来执行一些任务。

我运行它的配置如下:

在我的笔记本电脑中的整个过程(2 CPU/4GB RAM) ~ 11秒

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

服务器中虚拟机中相同的程序(20 CPU和32 of内存)~ 100+秒

服务器中虚拟机中相同的程序(10 CPU和32 5+内存)~5+秒

首先,我认为在如何管理Java线程方面存在问题,但经过多次测试后,我发现虚拟机拥有的CPU数量与其性能(最大值为10 )之间存在着某种关系,在此之后,机器的总体性能会减慢(CPU饥饿吗?)

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

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

是否需要设置一个设置来启用/利用VirtualBox实例中的10多个CPU?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-28 21:26:25

自从我贴出这个问题以来,时间已经过去了,只是为了存档,我会分享我的发现,希望它们能为其他人节省时间。

结果表明,性能问题是由于VirtualBox的工作方式造成的。特别是操作系统和系统管理程序之间的关系。

最后的虚拟机(客户操作系统)是主机和的一个单一进程,当您在虚拟机设置中修改CPU数量时,它们将更改进程所需的线程数,以便模仿其他CPU的.(至少在VirtualBox中)。

话虽如此,当我将10+ CPU分配给VM时,我得到了以下结果:

  • 带有10+线程的单个进程
  • 运行数百个进程的模拟操作系统
  • 我的Java代码,它创建了另一组线程

所有这些都导致安装程序饱和主机虚拟机进程,我认为这是由于主机OS处理进程上下文切换的方式

在我的服务器上,的硬限制是7个虚拟CPU,如果我添加了更多的虚拟CPU,就会降低软件的性能

在VM之外运行Java软件并没有显示任何性能问题,它使用60+隔离的线程开箱即用。

票数 8
EN

Stack Overflow用户

发布于 2018-08-15 13:51:52

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

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

长话短说,a process can only be assigned to a single NUMA node和Virtualbox使用多个线程运行一个用户进程.这意味着我们仅限于使用24个核心(考虑到这是一个具有超线程的12核cpu,在实践中甚至更少)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44642207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档