限制Akka应用程序可用的核心数

时间:2015-12-04 12:51:01

标签: multithreading scala akka

我正在尝试运行一些实验来研究我编写的Akka应用程序的缩放属性。作为基线,我想强制应用程序仅使用单个核心上的单个线程运行。

我目前正在我的四核笔记本电脑上运行模拟,我的application.conf文件中包含以下内容......

akka {
    actor {
        default-dispatcher {

            fork-join-executor {

                parallelism-min = 1

                parallelism-factor = 0.25

                parallelism-max = 1
            }
        }
    }
}

这是强制我的应用程序在一个核心上作为单线程应用程序运行的正确最佳方法吗?我的想法是,一旦我有了这个基线,我就会增加可用内核(和线程)的数量。

1 个答案:

答案 0 :(得分:1)

是的,应该有效。我想补充一点,parallelism-max的声明在你的情况下已经足够了。 parallelism-factor仅用于以下公式:available processors * factor。 Akka首先使用公式来确定应该使用的线程数。接下来它确保你在最小和最小最大。因此,对于该因子而言,低于1的数字是没有意义的。我认为对你来说最好的事情应该是:

akka {
    actor {
        default-dispatcher {

            fork-join-executor {
                parallelism-max = X // set it to the number of cores you want to allow
                parallelism-factor = 1
            }
        }
    }
}

您可以详细了解here