Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:估算可用硬件并行度howto_Java_Multithreading_Performance_Concurrency_Parallel Processing - Fatal编程技术网

Java:估算可用硬件并行度howto

Java:估算可用硬件并行度howto,java,multithreading,performance,concurrency,parallel-processing,Java,Multithreading,Performance,Concurrency,Parallel Processing,我继续(或者更准确地说,继续优化线程之间的输入分配)。并面对(第73页): 最终并行加速取决于: 源元素数(已知值) 运营成本(几乎无法估算) 可用硬件并行性(可能估计) 并发客户端的数量(我们可以以某种方式处理) 问题:这是什么意思:可用的硬件并行性?如何估计可用的硬件并行性 硬件并行表示一个更广泛的概念,意味着有多少计算或I/O资源可用于执行并行操作 对于计算资源,这可能是系统上可用的CPU。然而,当您的JVM位于非虚拟化、统一的多核系统上时,这只是一个精确的度量。 实际上,可用的处理器

我继续(或者更准确地说,继续优化线程之间的输入分配)。并面对(第73页):

最终并行加速取决于:

  • 源元素数(已知值)
  • 运营成本(几乎无法估算)
  • 可用硬件并行性(可能估计)
  • 并发客户端的数量(我们可以以某种方式处理)
问题:这是什么意思:可用的硬件并行性?如何估计可用的硬件并行性

硬件并行表示一个更广泛的概念,意味着有多少计算或I/O资源可用于执行并行操作

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

对于I/O资源,它指的是存储子系统以及它可以并行执行的请求数量(例如,硬盘数量),再加上I/O通道带宽


为了估计可用的“硬件并行性”,了解哪一个是工作负载的限制因素是很重要的。如果I/O不是问题所在,则该任务称为CPU绑定,否则称为I/O绑定。请看我的答案。在这个回答中,我还提出了使用自适应算法来选择线程数量的想法。

处理器数量和每个处理器的内核数量,假设JVM能够充分利用它们。Dr。Heinz M.Kabutz最近对此做了一次分析。请解释一下
maxThreadCount-1
新的LinkedBlockingDeque(maxThreadCount*2)
参数好吗?我如何将这些参数移动到
ForkJoinPool
?只需编辑链接问题中的答案,以明确我的意图。我对
ForkJoinPool
没有任何经验,但我认为,通过查看文档,您可以使用可用的处理器计数。我们不需要“技巧”。而且,我们不要忘记,随着大量计算资源的引入,我们很快就会受到缓存限制