我为我关于 Aeron 的演示做了一些基准测试,但我发现如果我对相同的传输使用不同的工具,我得到的结果会略有不同。
例如,如果我使用HDR 直方图,我得到的结果与维护人员在测试中得到的数字一致:
- 我的代码https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkHdrHistogram.java
- 结果https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-hdr.txt
此外,我尝试了另一个用于 Java 基准测试的酷库 - JLBH
但结果让我有点困惑......
首先,我得到了 2 个不同版本的基准测试:
- 单线程https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkJlbhSingleThread.java
- 1 个线程发布者/1 个线程接收者https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkJlbhSeparateThread.java
似乎 JLBH 鼓励为侦听器使用另一个线程,至少这样一些设置(例如吞吐量)更有意义,并且初始预热会打印一些统计信息。但我可能是非常错误的,如果我是,请纠正我。
但更重要的是,这些基准测试的结果完全不同,与我在 HDR 中看到的不一致:
- 单线程https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-sigle-thread.txt
- 1 个线程发布者/1 个线程接收者https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-separate-threads.txt
我很有可能在某个地方搞砸了,但就目前而言,所有 3 个基准测试看起来都或多或少与我相似,但使用了不同的工具集。
十分感谢!
附言
如果有人想自己尝试,您只需运行此脚本https://github.com/easy-logic/transport-benchmarks/blob/master/run-aeron.sh
要选择要运行的版本,请mainClassName
在此处更改参数:
https ://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/build.gradle#L6
有3个选项:
- io.easylogic.benchmarks.AeronPingBenchmarkJlbhSingleThread(默认)
- io.easylogic.benchmarks.AeronPingBenchmarkJlbhSeparateThread
- io.easylogic.benchmarks.AeronPingBenchmarkHdrHistogram