gpt4 book ai didi

multithreading - VirtualBox 是否有最大数量的 CPU 可以裸露?

转载 作者:行者123 更新时间:2023-12-04 14:55:11 34 4
gpt4 key购买 nike

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

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

我使用以下配置运行它:

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

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

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

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

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

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

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

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

最佳答案

自从我发布这个问题以来,时间已经过去了,只是为了存档我
将分享我的发现,希望它们可以帮助他人节省时间。

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

最后的虚拟机( guest 操作系统)是主机和 的单个进程当您修改虚拟机设置中的 CPU 数量时,它们将更改进程必须模拟其他 CPU 的线程数量。 (至少在 VirtualBox 中)

话虽如此,当我为 VM 分配 10 多个 CPU 时,我最终得到:

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

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

    在我的服务器上,硬性限制是 7 个虚拟 CPU,如果我添加的虚拟 CPU 超过这个数量会降低 Java 软件的性能

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

    关于multithreading - VirtualBox 是否有最大数量的 CPU 可以裸露?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44642207/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com