From c4de39f1545d0810ca7043c8f81e6949cc288fe0 Mon Sep 17 00:00:00 2001 From: Krzysztof Mochocki <kmochocki@syncad.com> Date: Thu, 4 Aug 2022 15:41:19 +0200 Subject: [PATCH] Add README for benchmark tests --- benchmarks/README.md | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 benchmarks/README.md diff --git a/benchmarks/README.md b/benchmarks/README.md new file mode 100644 index 00000000..7bfee47e --- /dev/null +++ b/benchmarks/README.md @@ -0,0 +1,65 @@ +# Benchmarks + +This directory contains inputs and programs to benchmark any API. + +It requires jmeter to work, which can be set up using `./setup_jmeter.bash` script + +To benchmark API's you can use jmeter with pre-configured `jmx` files (jmeter test plans), which you can find in `./performance_data/<api name>/JMX/*.jmx` or you can use `./benchmark.py` script. + +`benchmark.py` script is based on `csv` input files, which provides input queries for API's. For performance testing of block_api on 5M local node on 8090 port, just type: + + +``` +./benchmark.py -n blocks_api -p 8090 -c perf_5M_light.csv +``` + +For same test but on remote machine: + +``` +./benchmark.py -n blocks_api -p 8090 -c perf_5M_light.csv -a hive-6.pl.syncad.com +``` + +To list available csv inputs, use `-l` flag + `-n` with api name (by default `account_history_api`), for output like this + +``` +./benchmark.py -l + +# output + +... +2022-08-04 15:34:26,279 - performance - INFO - Found and avaiable csv's: + +perf_5M_light.csv +cl_60M_prod_jrpc.csv +perf_5M_heavy.csv +cl_60M_custom_jrpc.csv +perf_60M_light.csv +perf_60M_heavy.csv + +``` + +Basing on csv filename script decides how to prepare jmeter and how to run test. Here is legend (which can be expanded in future), what specific csv do + +modes: + + cl - constant load, CSV files marked like this will be executed in infinite loop to generate constant load + perf - performance, if CSV file is marked with perf, it will serve as provider of 500 lines, if file contain less, it will loop around file + +attributes: + + 60M - amount of blocks, this defines, how many blocks has to be available when testing + heavy - provides samples with a lot of return data (e.x. huge blocks) + light - provides samples which processing times should be very low + prod - if CSV file is tagged with this, that means it was generated basing on real calls from production + psql - [cl only] CSV is prepared as postgres input + jrpc - [cl only] CSV is prepared as jsonrpc call input + custom - [cl only] CSV file is custom + + +If you want to add new csv, make sure to keep filename properly: + +``` +<mode>_<amount of blocks>M_<tag 1>_<tag 2>_<tag N>.csv +``` + + -- GitLab