actor {
debug {
# enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill etc.)
autoreceive = off
# enable DEBUG logging of actor lifecycle changes
lifecycle = off
# enable DEBUG logging of all LoggingFSMs for events, transitions and timers
fsm = off
# enable DEBUG logging of subscription changes on the eventStream
event-stream = off
# enable WARN logging of misconfigured routers
router-misconfiguration = off
}
# What kind of ExecutionService to use
executor = "fork-join-executor"
fork-join-executor {
# minimum number of threads to cap factor-based core number to
core-pool-size-min = 8
# No of core threads ... ceil(available processors * factor)
core-pool-size-factor = 2.0
# maximum number of threads to cap factor-based number to
core-pool-size-max = 64
}
# Throughput defines the maximum number of messages to be
# processed per actor before the thread jumps to the next actor.
# Set to 1 for as fair as possible.
throughput = 1
}
io {
tcp {
}
}
My test machine is an 8-core 3GHz Intel Xeon E5 with 64GB RAM and everything (mongo server, RxMongo) runs locally.TIA,Reid.
20:57:28.981UTC 248981245 DEBUG [RxMongo-akka.actor.default-dispatcher-10:rxmongo.driver.AkkaIOChannel:akka://RxMongo/user/RxMongo-Supervisor-1/Connection-2/ChannelRouter-3/$a] -> doRequest
20:57:28.981UTC 248981245 DEBUG [RxMongo-akka.actor.default-dispatcher-10:rxmongo.driver.AkkaIOChannel:akka://RxMongo/user/RxMongo-Supervisor-1/Connection-2/ChannelRouter-3/$a] <- doRequest
20:57:28.981UTC 248981931 DEBUG [RxMongo-akka.actor.default-dispatcher-12:rxmongo.driver.AkkaIOChannel:akka://RxMongo/user/RxMongo-Supervisor-1/Connection-2/ChannelRouter-3/$a] Ack with queuelen=0
20:57:28.982UTC 248982310 DEBUG [RxMongo-akka.actor.default-dispatcher-4:rxmongo.driver.AkkaIOChannel:akka://RxMongo/user/RxMongo-Supervisor-1/Connection-2/ChannelRouter-3/$a] -> doReply
20:57:28.982UTC 248982310 DEBUG [RxMongo-akka.actor.default-dispatcher-4:rxmongo.driver.AkkaIOChannel:akka://RxMongo/user/RxMongo-Supervisor-1/Connection-2/ChannelRouter-3/$a] <- doReply
Measurement
|
Sum
|
Average
|
max
|
min
|
median
|
wait
|
2748551
|
274.827617238276
|
16805
|
147
|
223
|
write
|
1042354
|
104.22497750225
|
1712
|
46
|
77
|
read
|
2142823
|
214.260873912609
|
47757
|
98
|
144
|
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to a topic in the Google Groups "Akka User List" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/akka-user/zI0iXocMtig/unsubscribe.
To unsubscribe from this group and all its topics, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
akka { | |
loglevel = INFO | |
event-handlers = ["akka.event.slf4j.Slf4jEventHandler"] | |
actor.default-dispatcher { | |
fork-join-executor { | |
parallelism-min = 1 | |
parallelism-factor = 1 | |
#parallelism-max = 1 | |
} | |
} | |
} | |
--
On Feb 23, 2015, at 2:19 AM, Adam <adam...@gmail.com> wrote:I think the OS you're using matters a lot for this sort of test. Hopefully it's not windows…
What was the maximum concurrency level that you've tested?
Did you make sure (in the performance test code) that this concurrency level is actually met in all cases?
Did you try tweaking with the socket options (e.g. increase the read/write buffers)?
It would be interesting indeed to know about ACK/NACK.
I'm using the approach of using NACK until I get failure => buffer until getting the resumed message => recover using ACKs.=> go back to NACK once the buffer is cleared.
I guess it means less total messages traveling back and forth.
It seems you’re asking about performance of akka-streams not of akka-io, as seen by your mention of outgoingConnection
- do not confuse these two modules.
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to a topic in the Google Groups "Akka User List" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/akka-user/zI0iXocMtig/unsubscribe.
To unsubscribe from this group and all its topics, send an email to akka-user+...@googlegroups.com.
appWait
|
doRequest
|
writeWait
|
doWrite
|
writeAck
|
mongoWait
|
doRead
|
readWait
|
doReply
|
|
count
|
10,000
|
10,000
|
10,000
|
10,000
|
10,000
|
10,000
|
10,000
|
10,000
|
10,000
|
sum
|
2,641,699.00
|
0.00
|
362,172.00
|
0.00
|
764,298.00
|
2,836,716.00
|
0.00
|
413,031.00
|
0.00
|
mean
|
264.17
|
0.00
|
36.22
|
0.00
|
76.43
|
283.67
|
0.00
|
41.30
|
0.00
|
median
|
217.00
|
0.00
|
29.00
|
0.00
|
55.00
|
167.00
|
0.00
|
33.00
|
0.00
|
323.37
|
0.00
|
27.95
|
0.00
|
172.19
|
1,162.76
|
0.00
|
25.92
|
0.00
|
|
min
|
139
|
0
|
3
|
0
|
2
|
125
|
0
|
15
|
0
|
max
|
17,719
|
0
|
892
|
0
|
14,616
|
22,565
|
0
|
1,389
|
0
|
...
On Feb 23, 2015, at 4:58 PM, Adam <adam...@gmail.com> wrote:I believe 50M messages per second on a single machine was mainly an example for scaling up. See the kind of machine that was used for it.
Anyway, have you tried doing the same analysis on the "legacy" driver?
It would be interesting to compare the parts related to actual IO.
There's one thing (which may not be helpful to your current questions about Akka performance) that bothers me, but I may just be missing out on something obvious here, so I'll just ask: if Mongo doesn't allow a connection to handle more than one simultaneous request, how can any NBIO implementation do much better than a BIO implementation?
I mean the test pretty much only does IO. It's not like we're using the extra free thread to do any other CPU intensive work while waiting on Mongo, right?
Doesn't it mean you have to hold some sort of connection pool so you can have more concurrent requests to Mongo in order to see any sort of benefit from using NBIO (Akka or not)?
When I use Akka IO in my application I often have lots of concurrent requests using the same socket.They are of course kept serialized by Akka, but I can still have many requests on the same connection.
On Monday, February 23, 2015 at 10:57:41 PM UTC+2, Reid Spencer wrote:
So, here's some more information from my testing which just further confuses me ...
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
<akka.conf.save>
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
YCSB Client 0.1
Command line: -db com.yahoo.ycsb.db.MongoDbClient -s -P workloads/workloada -threads 1 -load
Loading workload...
Starting test.
new database url = localhost:27017/ycsb
2015-02-24 15:06:12:797 0 sec: 0 operations;
mongo connection created with localhost:27017/ycsb
[OVERALL], RunTime(ms), 193841.0
[OVERALL], Throughput(ops/sec), 5158.8673190914205
[INSERT], Operations, 1000000
[INSERT], AverageLatency(us), 191.429134
[INSERT], MinLatency(us), 78
[INSERT], MaxLatency(us), 2231484
[INSERT], 95thPercentileLatency(ms), 0
[INSERT], 99thPercentileLatency(ms), 0
[INSERT], Return=0, 1000000
YCSB Client 0.1
Command line: -db com.reactific.ycsb.RxMongoClient -s -P workloads/workloada -load -threads 1
Loading workload...
Starting test.
2015-02-24 14:32:16:302 0 sec: 0 operations;
rxmongo connection created with mongodb://localhost:27017/ycsb?minPoolSize=2&maxPoolSize=2
[OVERALL], RunTime(ms), 305149.0
[OVERALL], Throughput(ops/sec), 3277.08758671993
[INSERT], Operations, 1000000
[INSERT], AverageLatency(us), 300.902736
[INSERT], MinLatency(us), 186
[INSERT], MaxLatency(us), 2756796
[INSERT], 95thPercentileLatency(ms), 0
[INSERT], 99thPercentileLatency(ms), 0
[INSERT], Return=0, 1000000
[OVERALL], RunTime(ms), 196111.0
[OVERALL], Throughput(ops/sec), 5099.153030681604
[INSERT], Operations, 1000000
[INSERT], AverageLatency(us), 1939.049101
[OVERALL], RunTime(ms), 232262.0
[OVERALL], Throughput(ops/sec), 4305.482601544807
[INSERT], Operations, 1000000
[INSERT], AverageLatency(us), 2262.050283