我继续使用fork/join optimization,(或者更精确地说是在线程之间划分输入的优化)。面对next statement(第73页):
最终并行性加速取决于:
问题: 这是什么意思:可用的HW并行性?如何估算可用的HW并行度?
答案 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上的答案。在这个答案中,我还提出了使用自适应算法来选择线程数的想法。