Java:估计可用的HW并行性方法

时间:2014-06-14 21:16:05

标签: java multithreading performance concurrency parallel-processing

我继续使用fork/join optimization(或者更精确地说是在线程之间划分输入的优化)。面对next statement(第73页):

最终并行性加速取决于:

  • 源元素的数量(知道值)
  • 操作成本(几乎无法估计)
  • 可用的HW并行度(可以估算)
  • 并发客户端数量(我们可以以某种方式处理它)

问题: 这是什么意思:可用的HW并行性?如何估算可用的HW并行度?

1 个答案:

答案 0 :(得分:2)

硬件并行性表示更广泛的概念,意味着您可以使用多少计算或I / O资源来执行并行操作。

对于计算资源,这可能是您系统上的可用CPU。但是,当您的JVM位于非虚拟化,统一的多核系统上时,这只是一个精确的衡量标准。 实际上,可用的处理器可能在虚拟环境中共享,可能没有相同的功能集,可能是多线程的,或共享内存接口(NUMA)。

对于 I / O资源,它表示存储子系统及其可并行执行的请求数(例如硬盘数),以及I / O通道带宽。

为了估计可用的“硬件并行性”,了解哪个是您工作负载的限制因素非常重要。如果I / O不是问题,则该任务被称为 CPU绑定 I / O绑定。请参阅Choosing optimal number of Threads for parallel processing of data上的答案。在这个答案中,我还提出了使用自适应算法来选择线程数的想法。