From 4f7b899571fc88359de86adca93ee4b05f7e94e0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 21 Jun 2023 18:25:35 +0200 Subject: [PATCH] Adding docs/benchmark.md --- docs/benchmark.md | 65 ++++++++++++++++++++++++++++++++++++++++++++ docs/img/live.png | Bin 0 -> 19961 bytes docs/img/replay.png | Bin 0 -> 24138 bytes 3 files changed, 65 insertions(+) create mode 100644 docs/benchmark.md create mode 100644 docs/img/live.png create mode 100644 docs/img/replay.png diff --git a/docs/benchmark.md b/docs/benchmark.md new file mode 100644 index 0000000..7bbe24e --- /dev/null +++ b/docs/benchmark.md @@ -0,0 +1,65 @@ +# Benchmark + +Thalos demonstrates impressive speed, and we have solid data to support this claim. + +We conducted two distinct types of benchmark tests: + +* **Live Benchmark**: Thalos was thoroughly benchmarked against streaming data from the current head block. This benchmark provides a highly realistic evaluation, although it operates at a slightly slower pace due to real-time processing limitations. Notably, the potential bottleneck arises from the fact that a new block is generated only once every 0.5 seconds. + +* **Replay Benchmark**: Thalos was operated in replay mode, utilizing data from a previous block. +This mode allows for higher throughput as it eliminates real-time constraints since historical blocks have already been generated. +Therefore, Thalos does not have to wait 0.5 second for the next block. + +In addition to the aforementioned test types, it is important to assess the impact of multiple clients on performance. Therefore, we categorize the results as `NxHardware`, where `N` represents the number of clients and `Hardware` signifies the hardware configuration used. For example, the designation `10xlow` indicates 10 clients using low-end hardware. + +All tests were diligently conducted on the WAX Mainnet. + +## Hardware + +The following hardware was used. + +1. **Low-end**: Raspberry Pi 3 Model B Rev 1.2 +2. **Mid-end**: Intel(R) Xeon(R) W-2125 CPU 4-Core (8 threads) @ 4.0GHz +3. **High-end**: 2x Intel(R) Xeon(R) Gold 6128 CPU 6-cores (12 threads) @ 3.4GHz + +Please note that during the tests conducted on mid and high-end hardware, additional services that consume resources were present. +This was due to the unavailability of idle servers for testing purposes. +Consequently, it is important to consider that the performance on these hardware configurations could potentially be even better than the results obtained. + +## Live + +![Live Data msg per sec](img/live.png) + +\* Redis discards messages for clients because they cannot be processed in time. resulting in dataloss. + +Raw data: + +| 10xhigh | 100xhigh | 10xmid | 100xmid | 10xlow | 100xlow* | +| ----------------- | ----------------- | ----------------- | ----------------- | ------------------ | ------------------ | +| 531.9520324320212 | 517.2177668044619 | 549.1276634032015 | 553.6179173960732 | 432.66369389719085 | 17.004179093675067 | + +These results are quite interesting. High and mid-end hardware are about equal even for 100 clients. And the low-end hardware is not so far of. capable of handling atleast 10 clients. + +Note that one block contains alot of transactions and actions resulting in alot more then one redis message per block. therefore even if there is just 2 blocks per second. There is alot more redis messages sent out. + +## Replay + +![Replay Data msg per sec](img/replay.png) + +\* Redis discards messages for clients because they cannot be processed in time. resulting in dataloss. + +Raw data: + +| 10xhigh | 100xhigh* | 10xmid | 100xmid* | 10xlow* | 100xlow* | +| ----------------- | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| 3853.401198489492 | 1614.2395356540624 | 4002.5386670846724 | 1297.8602672923382 | 211.21962626224587 | 0 | + +The benchmarking of 100 clients on low-end hardware was intentionally excluded. The system's responsiveness was severely compromised during the test with 100 clients using live data, and running the same test on 100 clients with replay data would not make it better. +it is just as 10xlow, not usable. + +## Conclusion + +By looking at the live data graphs they process roughly the same amount of messages per second. That is because the bottleneck is the blockchain +itself. If we look at the replay data, redis clients can't keep up as number of clients increases. however, it is still pretty fast. consider that all 10x clients performs roughly equal. + +Also the fact that the benchmark tests fetchees **all** messages. That is pretty unrealistic as applications should in 99% of the cases only care about actions on a subset of contracts. Only case where you would want all actions is if you are building some sort of blockexplorer. diff --git a/docs/img/live.png b/docs/img/live.png new file mode 100644 index 0000000000000000000000000000000000000000..d718046a5196d3b8d07ba20d14e4505b54038b01 GIT binary patch literal 19961 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