I don't get it: replication is asynchronous (async tag), but when i remove replication (only launching the A node), my ManyWritesTest completes in half the time!
Why does replication slow down the writes, since it is async?
yes it might be serialization. But still with the async tag, this serialization is supposed to happen asynchronously after the commit right? So by definition it shouldn't increase latency.
I have reduced the latency a lot (more than half) by:
-using invalidation instead of replication
-setting a Heap size that is a bit more than what is really used, instead of the big heap i used before
But it is still a bit slow, and CPU usage (another of our requirements) is at 50% instead of 10%. Isn't a 50% CPU load too much for this use case? (A and B are quad-core 2.33GHz 4G RAM, linked by a 100Mega switch (yes that is slow but this too is a requirement))
At any rate from what i saw in VisualVM i suspect that the threads that i mentioned are what makes CPU usage so high.
Anyway any clue? What can i do to investigate further?
Are there GC options that are specially adapted to this use case?