【问题标题】:Explaining Akka Thread Pool Executor Config Parameters解释 Akka 线程池执行器配置参数
【发布时间】:2015-10-11 19:29:03
【问题描述】:

据我了解,fork-join-executor 是创建参与者系统时提供 non 时的默认调度程序 谁能给我解释一下:

fork-join-executor {
        # Min number of threads to cap factor-based parallelism number to
        parallelism-min = 8

        # The parallelism factor is used to determine thread pool size using the
        # following formula: ceil(available processors * factor). Resulting size
        # is then bounded by the parallelism-min and parallelism-max values.
        parallelism-factor = 3.0

        # Max number of threads to cap factor-based parallelism number to
        parallelism-max = 64

        # Setting to "FIFO" to use queue like peeking mode which "poll" or "LIFO" to use stack
        # like peeking mode which "pop".
        task-peeking-mode = "FIFO"
      }

虽然我理解每个单词,但我不理解这里解释的完整语义。

  • ceil 是什么意思?在 ceil(可用处理器 * 因子)
  • 什么是基于因子的并行性?

有人可以用英语向我整体解释一下上面的配置是什么意思吗?通过在这里和那里阅读许多帖子,我有点明白,默认情况下,akka 会设置一个线程池执行器,为每个核心分配和线程。因此,如果你有 2 个两核处理器,你最终会得到 4 个线程。无论如何,您实际上可以做到多少平行。除此之外,它是并发的,但严格来说不是完全并行的。虽然这是另一个问题。

因此,如果有人可以用 2 个机器示例(根据他们的处理器配置)来解释上述配置,以及由此产生的线程数,那就太好了。

【问题讨论】:

  • ceil = 上限,或刚好高于给定值的下一个整数。 IE。 ceil(4.8) = 5, ceil(4.2) = 5, ceil(5.1) = 6
  • 并行系数大致是您希望每个可用处理器拥有多少线程
  • 所以跟每个处理器的核数没有关系?
  • 这不适合我。无论我有一个多核处理器还是一个单核处理器都没有任何区别。这根本不符合逻辑。除了在通用机器范围内实际上有超过 1 个物理处理器的机器之外。它始终是 1 个基于 2、4、6 或 8 核的处理器。这些是我们拥有的典型处理器。你是在告诉我,即使是 8 核,我的线程池大小也会与 1 核相同?
  • 你怎么能提前知道你的程序将在哪里运行?

标签: scala akka


【解决方案1】:

这个问题是 Viktor Klang 的answered in depth on akka-user,本质上是:我们强烈建议您阅读the ForkJoinPool documentation in the JDK docs,它深入探讨了这些问题。

【讨论】:

  • 你不应该链接到 SO 之外的答案,这个网站本身就是规范的。
  • 请随时重新编辑我的答案或添加您自己的重新发布该线程中讨论的内容,谢谢
  • 不,抱怨比采取行动更容易。
猜你喜欢
  • 1970-01-01
  • 2014-08-27
  • 2017-12-29
  • 2011-10-14
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多