Scala 解释Akka线程池执行器配置参数

Scala 解释Akka线程池执行器配置参数,scala,akka,Scala,Akka,据我所知,在创建actor系统时提供non时,fork-join-executor是默认的调度器 有人能给我解释一下吗 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

据我所知,在创建actor系统时提供non时,fork-join-executor是默认的调度器 有人能给我解释一下吗

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将设置一个threadPoolexecutor,为每个核心分配和分配线程。因此,如果您有2个双核处理器,那么最终将有4个线程。这就是你到底能有多平行。更重要的是,它是并行的,但严格来说不是完全并行的。尽管这是另一个问题


因此,如果有人能从处理器和内核的角度解释上述配置,以及由此产生的线程数,并给出两个机器示例(每个处理器配置),那就太好了。

这个问题是Viktor Klang提出的,本质上是:我们强烈建议阅读,它非常深入地讨论了这些问题。

ceil=天花板,或者是刚好高于给定值的下一个整数。也就是说,ceil(4.8)=5,ceil(4.2)=5,ceil(5.1)=6并行度因子大致是每个可用处理器希望拥有的线程数,因此它与每个处理器的内核数无关?这对我来说不算。无论我有多核处理器还是单核处理器都没有任何区别。这是没有道理的。除了哪台机器实际上有一个以上的物理处理器之外,在通用机器的范围内。它始终是一个基于2、4、6或8核的处理器。这些是我们拥有的典型处理器。你是说即使是8核,我的线程池大小也和1核相同?你怎么能提前知道你的程序要运行在哪里?你不应该链接到外部的答案,所以,本网站本身就是一个规范的网站。请随意重新编辑我的答案或添加您自己的内容,重新发布该帖子中讨论过的内容。谢谢。不,抱怨比做点什么更容易。