perf: add alternator frontend to perf_simple_query
The perf_simple_query tool is extended with another protocol
aside from CQL - alternator. The alternative (pun intended) benchmark
can be executed by using the `--alternator X` parameter, where X
specifies one of the alternator's mandatory write isolation options:
- "forbid_rmw" - forbids RMW (read-modify-write) requests
- "unsafe" - never uses LWT (lightweight transactions), even for RMW
- "always_use_lwt" - uses LWT even for non-RMW requests
- "only_rmw_uses_lwt" - that one's rather self-explanatory
Alternator cooperates with existing --write and --delete parameters.
Aside from being able to check for improvements/regressions
in the alternator module, it's also possible to check how different
isolation levels influence the number of allocations and overall
performance, or to compare alternator against CQL.
$ ./build/release/test/perf/perf_simple_query_g --smp 1 \
--write --alternator only_rmw_uses_lwt --default-log-level error
random-seed=1235000092
Started alternator executor
10873.76 tps (202.9 allocs/op, 12.4 tasks/op, 369921 insns/op)
11096.09 tps (202.7 allocs/op, 12.1 tasks/op, 374792 insns/op)
11100.09 tps (203.0 allocs/op, 12.1 tasks/op, 376469 insns/op)
11068.98 tps (203.1 allocs/op, 12.1 tasks/op, 377132 insns/op)
11081.24 tps (203.2 allocs/op, 12.1 tasks/op, 377290 insns/op)
median 11081.24 tps (203.2 allocs/op, 12.1 tasks/op, 377290 insns/op)
median absolute deviation: 14.85
maximum: 11100.09
minimum: 10873.76
$ ./build/release/test/perf/perf_simple_query_g --smp 1 \
--random-seed 1235000092 --write --alternator always_use_lwt \
--default-log-level error
random-seed=1235000092
Started alternator executor
3605.35 tps (877.4 allocs/op, 174.6 tasks/op, 986666 insns/op)
3555.71 tps (890.0 allocs/op, 174.4 tasks/op, 1006945 insns/op)
3530.20 tps (899.7 allocs/op, 174.1 tasks/op, 1021908 insns/op)
3437.65 tps (908.2 allocs/op, 174.6 tasks/op, 1033992 insns/op)
3409.88 tps (913.2 allocs/op, 174.4 tasks/op, 1041240 insns/op)
median 3530.20 tps (899.7 allocs/op, 174.1 tasks/op, 1021908 insns/op)
median absolute deviation: 75.15
maximum: 3605.35
minimum: 3409.88