Comment by Veserv

Comment by Veserv 15 hours ago

2 replies

Is it actually high performance?

Looking at their transport protocol benchmarks on AWS [1][2], they average ~3 million 288-byte messages per second on c5.9xlarge (36 vCPU) instances. When increasing to their MTU limit of 1,344 bytes per message that drops to 700 thousand messages per second [2] or ~1 GB/s (~7.5 Gbps) over 36 cores. That is just ~200 Mbps per core assuming it is significantly parallel.

Looking at their transport protocol benchmarks on GCP [3], they average ~4.7 million 288 byte messages per second on C3 (unspecified type) instances. Assuming it scales proportionally to the AWS test, as they do not provide a max message size throughput number for GCP, that would be ~1 million messages per second or ~1.5 GB/s (~12 Gbps).

TCP stacks can routinely average 10 Gbps per individual core even without aggressive tuning, but Aeron appears to struggle to achieve parity with 36x as many cores. That is not to say that there might not be other advantages to Aeron such as latency, multicast support, or whatever their higher levels are doing, but 36x worse performance than basic off-the-shelf protocols does not sound like "high performance".

[1] https://hub.aeron.io/hubfs/Aeron-Assets/Aeron_AWS_Performanc... Page 13

[2] https://aws.amazon.com/blogs/industries/aeron-performance-en... Search "Test Results"

[3] https://aeron.io/other/aeron-google-cloud-performance-testin...

sethev 14 hours ago

A c5.9xlarge instance has 12 gigabits/s of bandwidth available [1]. A fair comparison to TCP would need to look at end to end message delivery, including framing / parsing of the messages.

On the face of it, the ability to use the majority of the bandwidth of the instance with small messages is impressive.

[1] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-inst...

nly 9 hours ago

> That is just ~200 Mbps per core assuming it is significantly parallel.

It's not. The Aeron media driver has 1 RX thread and 1 TX thread in the most heavily threaded configuration (+1 admin thread)