2013-05-06 68 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