Performance 使用矩阵向量示例对Akka进行基准测试

Performance 使用矩阵向量示例对Akka进行基准测试,performance,scala,akka,Performance,Scala,Akka,我曾尝试使用矩阵向量乘法对Akka框架进行基准测试。对于这个数据密集型问题,我测量了16核机器上不同数量的工作人员的绝对运行时 我使用了以下配置: akka { logConfigOnStart=off executor = "thread-pool-executor" fork-join-executor { parallelism-min = 16 parallelism-factor = 3.0 parallelism

我曾尝试使用矩阵向量乘法对Akka框架进行基准测试。对于这个数据密集型问题,我测量了16核机器上不同数量的工作人员的绝对运行时

我使用了以下配置:

akka {
    logConfigOnStart=off
    executor = "thread-pool-executor"
    fork-join-executor {
        parallelism-min = 16
        parallelism-factor = 3.0
        parallelism-max = 16
    }
}
对于不同数量的worker,我希望我使用的worker越多,运行时就越好,但我观察到一个非常糟糕的加速。我测量了绝对运行时,并将它们绘制在条形图上

图:

有关更多详细信息,请您查看:

git上的项目说明:

或者github上的

这是对大学的一个阐述,这就是为什么演员模型和Akka在开头被总结的原因

我的问题是:

  • 我做错了什么
  • 我如何改进我的计划以观察更好的绩效

  • 1) 您正在配置使用线程池执行器,但只提供fork-join执行器的配置。线程池执行器具有可怕的可伸缩性,请参阅:


    2) 使用executor=“fork join executor”,我建议您将并行度因子设置为0.6到1.0之间。您必须调整以查看哪一个最适合您的设置,您还需要将矩阵块大小调整为更大,试试这个。

    1)您正在配置使用线程池执行器,但只提供fork-join执行器的配置。线程池执行器具有可怕的可伸缩性,请参阅:


    2) 使用executor=“fork join executor”,我建议您将并行度因子设置为0.6到1.0之间。您必须调整以查看哪一个最适合您的设置,您还需要将矩阵块大小调整为更大,尝试一下。

    答案几乎总是你把工作分成太小的块。如果您使用的矩阵比它大100倍(如果是2d,则比它大10倍x 10倍)?线程池执行器具有可怕的可伸缩性,请使用fork-join-pool。答案几乎总是你把工作分成太小的块。如果您使用的矩阵比它大100倍(如果是2d,则比它大10倍x 10倍)?线程池执行器具有可怕的可伸缩性,请使用fork-join-pool。