Akka:如何配置Router,调度程序以获得更好的性能?

时间:2014-06-02 09:51:18

标签: multithreading scala akka

我在akka玩了两个星期,但仍然对一些基本概念感到困惑。

我有一个非常简单的模式,其中包含三种演员:

  • 工人
  • 记者

我将这些演员配置如下:

大师

Master使用以下调度员与RoundRobinRouter(10):

mailbox-capacity = 10000
executor = "fork-join-executor"
fork-join-executor {
  parallelism-min = 0
  parallelism-max = 600
  parallelism-factor = 3.0
}

工人

我在这个系统中有几个worker(ref),它们都接收来自master的消息,并且每个都使用RoundRobinRouter(10)的路由器。

type = Dispatcher
executor = "fork-join-executor"
fork-join-executor {
  parallelism-min = 0
  parallelism-max = 600
  parallelism-factor = 3.0
}
mailbox-capacity = 100000

通告

只是一个演员,用来接收来自工人的结果,并且计数。 它使用与工作人员相同的调度程序。

我对并行性参数和路由器做了一些调整,但性能似乎没有变化。消耗1000万个任务需要80秒,每个任务至少需要500毫秒才能完成。

所以它让我在那里,如果一个调度程序就像一个线程池,如果一个actor在没有使用路由器的情况下使用这个调度程序,那意味着只有一个实例。接收块中的代码是否会并行执行?

以防万一我的代码中的其他内容搞砸了: Gist

这是虚拟机运行此程序:

  • 32位ubuntu 12.04 lts
  • Memory 5.0 GiB
  • 英特尔®酷睿™i5-2500 CPU @ 3.30GHz×4

很抱歉在这里不清楚这个问题。 如果有什么东西可以提高这个性能请告诉我。 任何建议都是受欢迎的。提前谢谢。

更新

抱歉! 这是1000万任务,而不是1亿! 我很抱歉,抱歉!

0 个答案:

没有答案