【问题标题】:Restrict the number of cores available to an Akka application限制 Akka 应用程序可用的核心数量
【发布时间】:2016-03-09 09:58:22
【问题描述】:

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

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

akka {
    actor {
        default-dispatcher {

            fork-join-executor {

                parallelism-min = 1

                parallelism-factor = 0.25

                parallelism-max = 1
            }
        }
    }
}

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

【问题讨论】:

    标签: multithreading scala akka


    【解决方案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

    【讨论】:

    • 谢谢。我对设置 parallelism-factor parallelism-factor=0.25 我告诉 Akka 我想要 0.25 * 4 = 1 线程。
    • 有什么简单的方法可以判断 Akka 已经接受并正在使用新配置?当我运行我的应用程序时,我的 Activity Monitor 非常清楚该应用程序仍在使用所有 4 个内核。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2012-10-31
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多