* Before the cell is started the RepointableActorRef queue the messages
(both system and non-system messages) into a queue. System messages
are inserted right before the last non-system message by iterating
the queue, i.e. becomes slow when there are many system messages already
enqueued.
* This is a problem for pools with many routees.
* The fix is to keep system messages in a separate queue
JMH benchmark before:
[info] Benchmark (size) Mode Cnt Score Error Units
[info] RouterPoolCreationBenchmark.testCreation 1000 ss 300 13204.048 ± 3081.576 us/op
[info] RouterPoolCreationBenchmark.testCreation 2000 ss 300 41939.524 ± 6178.087 us/op
[info] RouterPoolCreationBenchmark.testCreation 3000 ss 300 70752.881 ± 4344.992 us/op
[info] RouterPoolCreationBenchmark.testCreation 4000 ss 300 120620.885 ± 3296.342 us/op
JMH benchmark after:
[info] Benchmark (size) Mode Cnt Score Error Units
[info] RouterPoolCreationBenchmark.testCreation 1000 ss 300 7738.721 ± 1806.297 us/op
[info] RouterPoolCreationBenchmark.testCreation 2000 ss 300 15497.588 ± 4532.852 us/op
[info] RouterPoolCreationBenchmark.testCreation 3000 ss 300 28704.005 ± 6322.458 us/op
[info] RouterPoolCreationBenchmark.testCreation 4000 ss 300 37783.516 ± 6778.437 us/op
fully drain sysmsgQueue when swap cell
|
||
|---|---|---|
| akka-actor | ||
| akka-actor-tests | ||
| akka-agent | ||
| akka-bench-jmh | ||
| akka-camel | ||
| akka-cluster | ||
| akka-cluster-metrics | ||
| akka-cluster-sharding | ||
| akka-cluster-tools | ||
| akka-contrib | ||
| akka-distributed-data | ||
| akka-docs | ||
| akka-kernel | ||
| akka-multi-node-testkit | ||
| akka-osgi | ||
| akka-persistence | ||
| akka-persistence-query | ||
| akka-persistence-tck | ||
| akka-protobuf | ||
| akka-remote | ||
| akka-remote-tests | ||
| akka-samples | ||
| akka-slf4j | ||
| akka-stream/src | ||
| akka-testkit | ||
| akka-typed | ||
| project | ||
| scripts | ||
| src/main/ls | ||
| .gitignore | ||
| .java-version | ||
| build.sbt | ||
| CONTRIBUTING.md | ||
| COPYING.protobuf | ||
| LICENSE | ||
| README.md | ||
Akka
We believe that writing correct concurrent & distributed, resilient and elastic applications is too hard. Most of the time it's because we are using the wrong tools and the wrong level of abstraction.
Akka is here to change that.
Using the Actor Model we raise the abstraction level and provide a better platform to build correct concurrent and scalable applications.
For resilience we adopt the "Let it crash" model which the telecom industry has used with great success to build applications that self-heal and systems that never stop.
Actors also provide the abstraction for transparent distribution and the basis for truly scalable and fault-tolerant applications.
Akka is Open Source and available under the Apache 2 License.
Learn more at akka.io. Join the akka-user mailing list. Follow @akkateam on twitter.