I made some benchmarks for my presentation about Aeron, but I found out that if I use different tools for the same transport I got slightly different results.
For example, if I use HDR histograms I got the results that align with that numbers the maintainers are getting with their tests:
- my code https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkHdrHistogram.java
- results https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-hdr.txt
Also, I tried another cool library for java benchmarks - JLBH
But the results confuse me a bit...
First of all, I got 2 different versions of the benchmark:
- single-threaded https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkJlbhSingleThread.java
- 1 thread publisher/1 thread receiver https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkJlbhSeparateThread.java
Seems like JLBH encourage to use another thread for a listener, at least in that way some of the settings(such as throughput) make more sense, and the initial warmup prints some statistic. But I could be terribly wrong, please correct me if I am.
But more importantly, the results of those benchmarks are completely different and doesn't align with what I saw with HDR:
- single-threaded https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-sigle-thread.txt
- 1 thread publisher/1 thread receiver https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-separate-threads.txt
There is a big chance that I messed up somewhere but for now, all 3 benchmarks look more or less similar to me but with a different toolset.
Thank you a lot!
P.S.
If someone would like to try this his own, you have to just run this script https://github.com/easy-logic/transport-benchmarks/blob/master/run-aeron.sh
to choose which version you want to run change the parameter mainClassName
over here:
https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/build.gradle#L6
there are 3 options:
- io.easylogic.benchmarks.AeronPingBenchmarkJlbhSingleThread (the default one)
- io.easylogic.benchmarks.AeronPingBenchmarkJlbhSeparateThread
- io.easylogic.benchmarks.AeronPingBenchmarkHdrHistogram