Bizarre benchmarking result while it generates TLS workloads to Redis
eecheng87 opened this issue · 0 comments
eecheng87 commented
Hi, recently I tried to benchmark Redis with TLS loads. The server is built with the following commands:
# in redis-7.0.5
make BUILD_TLS=yes
# generate certificate
./utils/gen-test-certs.sh
memtier_benchmark is built with:
git clone https://github.com/RedisLabs/memtier_benchmark.git
cd memtier_benchmark/
autoreconf -ivf
./configure
make -j32
The server is launched by (I'm using OpenSSL 3.0.0) :
./src/redis-server --tls-port 6379 --port 0 \
--tls-cert-file ./tests/tls/redis.crt \
--tls-key-file ./tests/tls/redis.key \
--tls-ca-cert-file ./tests/tls/ca.crt
The memtier_benchmark is executed as:
taskset --cpu-list 12-31 ./memtier_benchmark -p 6379 --protocol=redis --test-time=3 --hide-histogram --tls \
--cert=/path/to/redis-7.0.5/tests/tls/redis.crt \
--key=/path/to/redis-7.0.5/tests/tls/redis.key \
--cacert=/path/to/redis-7.0.5/tests/tls/ca.crt
Then, I got the result like:
[RUN #1] Preparing benchmark client...
[RUN #1] Launching threads now...
[RUN #1 20%, 0 secs] 4 threads: 0 ops, 0 (avg: 0) ops/sec, 0.00KB/sec (avg: 0.00KB/sec),
[RUN #1 53%, 1 secs] 4 threads: 17658 ops, 17652 (avg: 11125) ops/sec, 753.52KB/sec (avg: 474.93KB/s
[RUN #1 86%, 2 secs] 4 threads: 50440 ops, 32771 (avg: 19494) ops/sec, 1.36MB/sec (avg: 828.86KB/sec
[RUN #1 100%, 3 secs] 0 threads: 71808 ops, 32771 (avg: 23920) ops/sec, 1.36MB/sec (avg: 1015.90KB/sec), 6.10 (avg: 8.36) msec latency
4 Threads
50 Connections per thread
3 Seconds
Is no request completed in 0 secs normal? I did not observe this behavior with non-TLS loads. Additionaly, if I increases the concurrency, the result becomes more weird. Here is another configuration for memtier_benchmark:
# memtier_benchmark
taskset --cpu-list 12-31 ./memtier_benchmark -p 6379 --protocol=redis --clients 25 --threads=20 --ratio=1:9 --key-pattern=R:R --key-minimum=1 --key-maximum=500 --data-size=32 --test-time=3 --hide-histogram --tls \
--cert=/path/to/redis-7.0.5/tests/tls/client.crt \
--key=/path/to/redis-7.0.5/tests/tls/client.key \
--cacert=/path/to/redis-7.0.5/tests/tls/ca.crt
# Result
[RUN #1] Preparing benchmark client...
[RUN #1] Launching threads now...
[RUN #1 10%, 0 secs] 20 threads: 0 ops, 0 (avg: 0) ops/sec, 0.00KB/sec (avg: 0.00KB/sec
[RUN #1 41%, 1 secs] 20 threads: 0 ops, 0 (avg: 0) ops/sec, 0.00KB/sec (avg: 0.00KB/sec
[RUN #1 74%, 2 secs] 20 threads: 0 ops, 0 (avg: 0) ops/sec, 0.00KB/sec (avg: 0.00KB/sec
[RUN #1 101%, 3 secs] 20 threads: 11611 ops, 14314 (avg: 3835) ops/sec, 660.57KB/sec (avg: 176.99K
[RUN #1 104%, 3 secs] 0 threads: 26266 ops, 14314 (avg: 8443) ops/sec, 660.57KB/sec (avg: 389.15KB/sec), 130.31 (avg: 59.20) msec latency