multithreading - Akka如何达到如此高的性能?

标签 multithreading performance akka actor

Akka提供了一些高性能:

50 million msg/sec on a single machine. Small memory footprint; ~2.5 million actors per GB of heap.



actor的行为类似于单个线程,这意味着您可以并行处理消息。我很好奇它如何在后台实现,以便每GB堆可以有约250万个actor?这是否意味着我可以使用参与者执行250万个并行任务?显然,每GB不能有那么多线程。

最佳答案

您不需要250万活跃角色即可处理5000万消息/秒。 Akka团队在48核机器上工作的96位 Actor 达到了50M msg/sec的速度(请参阅下面的链接,以了解详细信息)。

基本上,这些数字(“每GB 5000万个消息/秒”和“每GB约250万个actor”)彼此无关。

“每GB约250万个actor”表示Akka actor重量轻且几乎没有内存占用(但是当然它们一次都不能处于 Activity 状态-这在很大程度上取决于内核的数量和线程的数量)调度程序设置)。

“5000万msg/sec”表示可以通过仔细调整actor池大小和调度程序设置(see details here)来达到此性能水平。

关于multithreading - Akka如何达到如此高的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20463362/

相关文章:

java - 使用 Actors 向 Akka websockets 发送数据

尽管运行代码来显示菜单,Java 小程序仍显示白屏

iphone - 当 UIView 低于 EAGLView 时,我的性能是否会受到很大影响?

mysql - 关于本指标的建议和改进

java - 如何提高 Java 语言中 ComponentColorModel 创建的 BufferedImage 的绘制性能?

scala - 如何使用 react 性流进行NIO二进制处理?

c# - 多线程: Value and Reference types

c++ - 线程同步 : Wait on two bool variables

c++ - OpenGL在一个窗口中提供多个渲染上下文

java - 处理 Play 2.1 中的阻塞操作