2 ms·
Another Volt developer here. Short answer, Volt establishes a global order across transactions. Transactions can't be executed immediately because their positi
by arielweisberg 14y ago
Another Volt developer here.
Short answer, Volt establishes a global order across transactions. Transactions can't be executed immediately because their position in the global order isn't known when they initially arrive. The exchange of ordering information is driven by in-flight transactions. In the absence of sufficient in-flight transactions to drive the ordering process heartbeats are sent every 5 milliseconds resulting in increased latency and lower throughput as the system waits on heartbeats. 2-4x the concurrency should have shown different results.
We're finishing a different transaction initiation system that doesn't produce a global order so that people can do this kind of benchmark and get the expected result. You can switch the beta version on in 2.8.
I also wonder if they had clock skew. The global ordering process is always delayed by the amount of clock skew you have. With NTP properly configured this is 10s of microseconds, but with a typical out of the box NTP config it will be milliseconds unless you have a lot of uptime.
I don't really see this as an excuse and it is why we are eating the pain of a transaction initiation rewrite so people can use Volt the traditional way with small numbers of synchronous client threads.