2013-05-06 65 views
1

我试图用矩阵矢量乘法对Akka框架进行基准测试。对于这个非常严重的数据密集型问题,我测量了16核心机器上不同数量的工作人员的绝对运行时间。使用矩阵矢量示例对Akka进行基准测试

我已经使用了以下配置:

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

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

图:different number of workers

欲了解更多的细节,我希望你有一看:上git的

项目介绍:scroll down to Benchmarking Akka

或在GitHub上implementation

这是大学的阐述,这就是为什么Actor模型和Akka在开始时被总结的原因。

我的问题是:

  1. 我在做什么错?
  2. 如何改进我的程序以观察更好的性能?
+2

答案几乎总是会将工作分解为太小的块。如果使用100倍大的矩阵(10倍大10倍,如果它们是2d),它如何扩展? – 2013-05-06 20:38:40

+0

线程池执行器具有可怕的可伸缩性,请使用fork-join-pool。 http://letitcrash.com/post/17607272336/scalability-of-fork-join-pool – 2013-05-06 23:05:24

回答

1

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

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

+0

那么,它有多好? :) – 2013-05-13 16:27:00