gpt4 book ai didi

java - 是否-XX : parallelGCThreads = 8 relates to the number of Cores in relation to Amdahl's law?

转载 作者:行者123 更新时间:2023-12-02 06:11:33 25 4
gpt4 key购买 nike

简介:

我目前正在开发一款软件,用多线程程序对顺序程序进行基准测试。我的硬件有 24 个可用内核和 16GB RAM。我的程序是用 Java 编写的,但由于需要绘图而从 MATLAB 执行。打开 MATLAB 后,将显示以下消息:

Picked up JAVA_TOOL:OPTIONS: -XX:parallelGCThreads = 8 - Xmx8g -Dsun.java2d.pmoffscreen = false

理论

现在按照Amdahl's Law最大性能提升定义为 1/(B-(1-B)/P),其中 B 是顺序分数,P 是处理器数量。就我而言,B = 0.01,(1-B = .99) 且 P = 24这使我理论上的最大性能提升约为 20。

现在,据我了解parallelGCThreads它是可用垃圾收集器线程的最大数量。在对我的程序进行一些密集测试后,我能够实现的最大比率增加似乎是 7.5 倍,这与理论值 20 相差甚远。但是,如果我替换 P = 8,我得到的理论极限为7.8,与我的程序中获得的非常接近。

问题

parallelGCThreads实际上限制了线程的数量,使得阿姆达尔定律应该与 P = 8 而不是 P = 24 一起使用?

提前致谢!

最佳答案

Does parallelGCThreads actually limit the amount of threads such that Amdahl's law should be used with P = 8 and not P = 24?

没有。 GC 线程的数量不会直接影响程序在执行“实际”工作时的性能。 (如果程序产生大量垃圾,可能会影响它,但分析会相当复杂......而且它肯定不会取代阿姆达尔方程中的P。)

您可以尝试调整parallelGCThreads参数来看看它有什么效果,但可能还有其他东西(不是GC)影响您的多线程性能,导致加速比低于您的预期。这很可能与应用程序有关;例如内存带宽争用,或 Java 锁争用。

FWIW - 多线程程序接近阿姆达尔定律设定的理论极限是不寻常的。

关于java - 是否-XX : parallelGCThreads = 8 relates to the number of Cores in relation to Amdahl's law?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835101/

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