gpt4 book ai didi

Java 7 的 fork/join 框架没有使用所有可用的 CPU 能力

转载 作者:搜寻专家 更新时间:2023-11-01 03:40:37 24 4
gpt4 key购买 nike

我正在使用 Java's fork-join framework处理 CPU 密集型计算。

我稍微调整了“顺序阈值”(用于确定是创建子任务还是执行工作),但令我失望的是,从单线程到 4+4 内核仅使整体性能翻了一番。该池确实报告了 8 个 CPU,当我手动设置 2、3、4 时,我看到性能逐渐提高,但它仍然达到单线程总体吞吐量的两倍左右。此外,该 Java 进程的 Linux 系统 Activity 监视器徘徊在 50% 左右。

另外一个非常可疑的事实是,当我启动多个 Java 进程时,集体吞吐量更加一致(几乎比单个线程快 4 倍)并且系统 Activity 监视器显示更高的 CPU 使用率。

是否有可能在 Java、Linux 或 fork/join 框架中存在不允许完全使用 CPU 的限制?有什么建议或类似的经验吗?

注意。这是在 Intel 3770 CPU 上,具有 4 个内核和 4 个超线程内核,在 Linux Mint 机器上运行 Oracle Java 7r13。

最佳答案

感谢大家的想法和回答!根据您的建议,我断定问题不是框架本身,并继续进行更多测试,发现几分钟后 cpu 负载下降到 15%!

事实证明,Random(我广泛使用)在多线程设置中的性能很差。解决方案是改用 ThreadLocalRandom.current().nextXXX()。我现在达到了 80% 的一致使用率(仍然有一些连续的段落)。甜!

再次感谢您让我走上正轨。

关于Java 7 的 fork/join 框架没有使用所有可用的 CPU 能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15414271/

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