当前位置: 首页 > 知识库问答 >
问题:

Repast Simphony Java运行期间CPU和内核使用率低

靳涵亮
2023-03-14

我正在Repast 2.7中构建一个ABM,我们正在进入项目的阶段,我们正在交付更大的生产数据集来通知我们的模型。

我注意到在我的32核工作站上,可执行文件只使用了3-12核;平均cpu消耗稳定在5.5%左右。它似乎应该使用更多的内核;或者最大限度地利用它正在使用的核心。我意识到这可能是天真的猜测。

运行时。getRuntime()。可用的处理器()

报告32核心可用。

我有兴趣知道是否以及如何配置我的项目以利用更多资源。我意识到HPC版本可用;但是我首先想看看我是否可以让模拟使用这台机器的所有可用资源,然后再进行另一次重写(我们从AnyLogic来到Repast。)

Tick目前在一个只有最终版本1/30大小的数据集上花费了大约60秒,我们将在大约100次比较运行中进行10次数千次迭代

谢谢你的建议!

共有1个答案

微生俊捷
2023-03-14

Repast不提供模型代码的自动并行化。Repast调度程序和代理代码在单个线程中运行,显示器将在单独的线程中运行,因此实际上只有一个CPU在执行模型逻辑的所有工作。为了提高模型性能,我们推荐两个重要步骤:

>

  • 分析代码以确定哪些部分是计算瓶颈。Yourkit是我过去使用过的一个很好的Java分析器。分析可以帮助确定部分代码是否效率低下和/或非常频繁地调用。对经常使用的代码进行小的改进可以显着加快模型。

    通过显式使用Javahtml" target="_blank">线程池来并行化您的模型。如果您的代理逻辑仅在上一步期间依赖于代理和环境的状态,那么这是一个非常简单的过程。Repast“Flock”演示就是这个概念的一个简单示例。简而言之,您可以创建一个为每个滴答安排的代理“管理器”,管理器将按CPU数量划分代理,并让每批代理并行执行。

  •  类似资料:
    • 问题内容: 对于Java代码的特定部分,我想测量: 执行时间(最有可能的 线程执行时间 ) 内存使用情况 CPU负载(具体可归因于代码段) 我是Java的相对新手,并不熟悉如何实现。我已经提到过JMX,但是我不确定该如何使用,而JMX对于我想做的事情看起来有点“沉重”。 理想情况下,我想要一些可以告诉我要测量什么的测量类,可以选择在代码段之前调用方法,在代码段之后调用方法。相关指标将记录到我指定的

    • 问题内容: 可以说,钱不是限制因素,我想编写一个在一台功能强大的计算机上运行的Java程序。 目的是使Java程序 尽可能快地运行,而不必 为任何事情 交换或进入磁盘 。 假设这台计算机具有: 1 TB RAM(64个16GB DIMM) 64个处理器核心(8个8核处理器) 运行64位Ubuntu 运行在JVM中的Java程序的单个实例能否利用这么多的RAM和处理器? 是否有任何实际的考虑因素可能

    • 问题内容: 我想获取Linux上单个进程的CPU和内存使用情况-我知道PID。希望我可以每秒获取一次,并使用“ watch”命令将其写入CSV。我可以使用什么命令从Linux命令行获取此信息? 问题答案: (您可以省略“ cmd”,但这可能有助于调试)。 请注意,这给出了该进程在运行期间的平均CPU使用率。

    • 我在Android Studio / Gradle中寻找一个参数或配置,它可以设置构建,以便在构建期间使用我所有的CPU核心。例如,如果我有一个四核CPU,每个核心运行8个线程,我如何优化构建,以便它将使用它可以获得的每个资源(当然是并行的)? 非常感谢。

    • 问题内容: 说“用cpu = 800和内存= 1024运行myApp.jar” 我从事Java编程已经很多年了,问这个问题很尴尬。我什至不知道这是否可能。如果是这样,怎么办? 我只想知道是否可以设置Java程序的最大内存和cpu使用率。我突然想到了这个,因为我最近开始开发移动应用程序。我想知道该应用程序在内存和处理器非常有限的设备上的表现。 我看到带有演示应用程序的物理引擎可以在浏览器上运行,也可

    • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 最近,我的服务器CPU性能一直很高。 CPU平均负载为13.91(1分钟)11.72(5分钟)8.01(15分钟),而我的站点的流量仅略有增加。 运行完最高命令后,我看到MySQL使用的CPU是160%! 最近,我一直在优化表,并切换到持久连接。这会