Java:估算可用硬件并行度howto
我继续(或者更准确地说,继续优化线程之间的输入分配)。并面对(第73页): 最终并行加速取决于:Java:估算可用硬件并行度howto,java,multithreading,performance,concurrency,parallel-processing,Java,Multithreading,Performance,Concurrency,Parallel Processing,我继续(或者更准确地说,继续优化线程之间的输入分配)。并面对(第73页): 最终并行加速取决于: 源元素数(已知值) 运营成本(几乎无法估算) 可用硬件并行性(可能估计) 并发客户端的数量(我们可以以某种方式处理) 问题:这是什么意思:可用的硬件并行性?如何估计可用的硬件并行性 硬件并行表示一个更广泛的概念,意味着有多少计算或I/O资源可用于执行并行操作 对于计算资源,这可能是系统上可用的CPU。然而,当您的JVM位于非虚拟化、统一的多核系统上时,这只是一个精确的度量。 实际上,可用的处理器
- 源元素数(已知值)
- 运营成本(几乎无法估算)
- 可用硬件并行性(可能估计)
- 并发客户端的数量(我们可以以某种方式处理)
为了估计可用的“硬件并行性”,了解哪一个是工作负载的限制因素是很重要的。如果I/O不是问题所在,则该任务称为CPU绑定,否则称为I/O绑定。请看我的答案。在这个回答中,我还提出了使用自适应算法来选择线程数量的想法。处理器数量和每个处理器的内核数量,假设JVM能够充分利用它们。Dr。Heinz M.Kabutz最近对此做了一次分析。请解释一下
maxThreadCount-1
和新的LinkedBlockingDeque(maxThreadCount*2)
参数好吗?我如何将这些参数移动到ForkJoinPool
?只需编辑链接问题中的答案,以明确我的意图。我对ForkJoinPool
没有任何经验,但我认为,通过查看文档,您可以使用可用的处理器计数。我们不需要“技巧”。而且,我们不要忘记,随着大量计算资源的引入,我们很快就会受到缓存限制