1

我试图用矩阵向量乘法来对 Akka 框架进行基准测试。对于这个非常数据密集的问题,我测量了 16 核机器上不同数量的工人的绝对运行时间。

我使用了以下配置:

akka {
    logConfigOnStart=off
    executor = "thread-pool-executor"
    fork-join-executor {
        parallelism-min = 16
        parallelism-factor = 3.0
        parallelism-max = 16
    }
}

对于不同数量的工人,我希望我使用的工人越多,运行时间就越好,但我观察到一个非常糟糕的加速。我测量了绝对运行时间并将它们绘制在条形图上。

图:不同数量的工人

有关更多详细信息,我希望您查看:

git 上的项目描述:向下滚动到 Benchmarking Akka

或github上的实现。

这是对大学的阐述,这也是为什么一开始就总结了 Actor Model 和 Akka 的原因。

我的问题是:

  1. 我究竟做错了什么?
  2. 如何改进我的程序以观察更好的性能?
4

1 回答 1

1

1)您正在配置使用线程池执行器,但仅提供 fork-join-executor 的配置。thread-pool-executor 具有可怕的可扩展性,请参阅: http: //letitcrash.com/post/17607272336/scalability-of-fork-join-pool

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

于 2013-05-07T12:02:39.203 回答