Skip to content

Commit ac06352

Browse files
Add comprehensive SET:GET mixed workload tests for essential data sizes (#300)
* Add comprehensive SET:GET mixed workload tests for essential data sizes - Add 32B SET:GET tests (default memtier size for community usage) - Add 100B SET:GET tests with expiration support for common use cases - Add 512B SET:GET tests (referenced in cloud provider documentation) - Add 1KB SET:GET tests (common benchmark size) - Include both pipeline 1 and pipeline 10 configurations - All tests use 50:50 SET:GET ratio for realistic mixed workloads - Tests cover 1M keyspace with proper preloading This completes the essential SET:GET benchmark coverage for the four most important data sizes used in Redis performance testing and documentation. * Fix tested-commands for expiration tests Add missing 'set' command to tested-commands list for 100B expiration tests. The stats tool detected that these tests use setex, get, and set commands but only had setex and get listed in the tested-commands section. * Add 8 comprehensive expiration benchmark tests with pipeline 10 - Test 1: SET EX 3 (50M keys) - Short TTL expiration performance - Test 2: SET EX 20 (150M keys) - Medium TTL expiration performance - Test 3: SET EX 10 with precondition (50M+50M keys) - Mixed TTL scenarios - Test 4: SET→SET→DEL EX 120 (50M keys) - Command throughput without expiration - Test 5: SET→SET→DEL EX 36000 (10M keys) - Long TTL command throughput - Test 6: SET EX random range 20sec-30days (50M keys) - Wide TTL distribution - Test 7: SET EX 10 years (50M keys) - Very long TTL performance - Test 8: Multi-client AWS test (20M+80M keys) - Multi-client expiration All tests use realistic pipeline 10 configuration and cover various expiration scenarios for ebuckets performance testing. * Update expiration tests to use standard 50 connections and 4 threads - Changed all 8 expiration tests from single client (-c 1 -t 1) to standard configuration (-c 50 -t 4) - Updated CPU allocation from 2 to 4 cores to match thread count - Maintains pipeline 10 configuration for realistic testing - AWS multi-client test keeps its specific 4 clients/2 threads configuration as intended - All tests now follow consistent connection/thread patterns with existing test suite
1 parent f6c4fa6 commit ac06352

File tree

24 files changed

+739
-25
lines changed

24 files changed

+739
-25
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "redis-benchmarks-specification"
3-
version = "0.1.270"
3+
version = "0.1.272"
44
description = "The Redis benchmarks specification describes the cross-language/tools requirements and expectations to foster performance and observability standards around redis related technologies. Members from both industry and academia, including organizations and individuals are encouraged to contribute."
55
authors = ["filipecosta90 <[email protected]>","Redis Performance Group <[email protected]>"]
66
readme = "Readme.md"

redis_benchmarks_specification/setups/builders/gcc:10.5.0-amd64-debian-bullseye-redisearch.yml

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
version: 0.4
2+
name: memtier_benchmark-10Mkeys-string-set-update-del-ex-36000-pipeline-10
3+
description: Multi-step test - SET EX 36000 (10 hours), then update same keys with SET EX 36000, then DEL. Tests command throughput with long TTL without active expiration.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 0
9+
resources:
10+
requests:
11+
memory: 5g
12+
tested-commands:
13+
- set
14+
- del
15+
tested-groups:
16+
- string
17+
- generic
18+
redis-topologies:
19+
- oss-standalone
20+
build-variants:
21+
- gcc:8.5.0-amd64-debian-buster-default
22+
- dockerhub
23+
clientconfig:
24+
run_image: redislabs/memtier_benchmark:edge
25+
tool: memtier_benchmark
26+
arguments: '--command "SET __key__ BBB EX 36000" --command "SET __key__ BBB EX 36000" --command "DEL __key__" -c 50 -t 4 --command-key-pattern=P --pipeline 10 --hide-histogram --key-maximum 10000000 -n allkeys'
27+
resources:
28+
requests:
29+
cpus: '4'
30+
memory: 2g
31+
32+
priority: 1
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
version: 0.4
2+
name: memtier_benchmark-150Mkeys-string-set-ex-20-pipeline-10
3+
description: Runs memtier_benchmark, for a keyspace of 150M keys with SET EX 20 commands and pipeline 10. Tests medium TTL expiration performance.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 0
9+
resources:
10+
requests:
11+
memory: 20g
12+
tested-commands:
13+
- set
14+
tested-groups:
15+
- string
16+
redis-topologies:
17+
- oss-standalone
18+
build-variants:
19+
- gcc:8.5.0-amd64-debian-buster-default
20+
- dockerhub
21+
clientconfig:
22+
run_image: redislabs/memtier_benchmark:edge
23+
tool: memtier_benchmark
24+
arguments: '--command "SET __key__ BBB EX 20" -c 50 -t 4 --command-key-pattern=P --pipeline 10 --hide-histogram --key-maximum 150000000 -n allkeys'
25+
resources:
26+
requests:
27+
cpus: '4'
28+
memory: 2g
29+
30+
priority: 1
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: 0.4
2+
name: memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10
3+
description: Runs memtier_benchmark, for a keyspace length of 1M keys focusing on SCAN performance with CURSOR and large COUNT.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1000000
9+
preload_tool:
10+
run_image: redislabs/memtier_benchmark:edge
11+
tool: memtier_benchmark
12+
arguments: '"--pipeline" "100" "--data-size" "100" "--command" "HSET __key__ field __data__" "--command-key-pattern" "P" "-c" "50" "-t" "2" "--hide-histogram" "--key-minimum" "1"'
13+
resources:
14+
requests:
15+
memory: 1g
16+
tested-commands:
17+
- scan
18+
tested-groups:
19+
- generic
20+
redis-topologies:
21+
- oss-standalone
22+
build-variants:
23+
- gcc:8.5.0-amd64-debian-buster-default
24+
- dockerhub
25+
clientconfig:
26+
run_image: redislabs/memtier_benchmark:edge
27+
tool: memtier_benchmark
28+
arguments: --command "SCAN __key__ COUNT 5000" --key-prefix "" --distinct-client-seed --key-maximum 1000000 --pipeline 10 --command-key-pattern="R" -c 50 -t 2 --hide-histogram --test-time 180
29+
resources:
30+
requests:
31+
cpus: '2'
32+
memory: 2g
33+
34+
priority: 44
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: 0.4
2+
name: memtier_benchmark-1Mkeys-string-get-32B-pipeline-10
3+
description: Runs memtier_benchmark, for a keyspace length of 1M keys with a data size of 32 Bytes for each key.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1000000
9+
preload_tool:
10+
run_image: redislabs/memtier_benchmark:edge
11+
tool: memtier_benchmark
12+
arguments: '"--data-size" "32" "--ratio" "1:0" "--key-pattern" "P:P" "-c" "50" "-t" "2" "--hide-histogram" "--key-minimum" "1"'
13+
resources:
14+
requests:
15+
memory: 1g
16+
tested-commands:
17+
- get
18+
redis-topologies:
19+
- oss-standalone
20+
build-variants:
21+
- gcc:8.5.0-amd64-debian-buster-default
22+
- dockerhub
23+
clientconfig:
24+
run_image: redislabs/memtier_benchmark:edge
25+
tool: memtier_benchmark
26+
arguments: '--pipeline 10 --data-size 32 --ratio 0:1 --key-pattern R:R -c 25 -t 4 --hide-histogram --test-time 180'
27+
resources:
28+
requests:
29+
cpus: '4'
30+
memory: 2g
31+
32+
tested-groups:
33+
- string
34+
priority: 1
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: 0.4
2+
name: memtier_benchmark-1Mkeys-string-get-32B
3+
description: Runs memtier_benchmark, for a keyspace length of 1M keys with a data size of 32 Bytes for each key.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1000000
9+
preload_tool:
10+
run_image: redislabs/memtier_benchmark:edge
11+
tool: memtier_benchmark
12+
arguments: '"--data-size" "32" "--ratio" "1:0" "--key-pattern" "P:P" "-c" "50" "-t" "2" "--hide-histogram" "--key-minimum" "1"'
13+
resources:
14+
requests:
15+
memory: 1g
16+
tested-commands:
17+
- get
18+
redis-topologies:
19+
- oss-standalone
20+
build-variants:
21+
- gcc:8.5.0-amd64-debian-buster-default
22+
- dockerhub
23+
clientconfig:
24+
run_image: redislabs/memtier_benchmark:edge
25+
tool: memtier_benchmark
26+
arguments: '--data-size 32 --ratio 0:1 --key-pattern R:R -c 25 -t 4 --hide-histogram --test-time 180'
27+
resources:
28+
requests:
29+
cpus: '4'
30+
memory: 2g
31+
32+
tested-groups:
33+
- string
34+
priority: 1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
version: 0.4
2+
name: memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire-pipeline-10
3+
description: Runs memtier_benchmark, for a keyspace of 1M keys with 50% SETs and 50% GETs (mixed) with a data size of 100 Bytes, expiration, and pipeline 10 for community/youtuber use-case.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1000000
9+
preload_tool:
10+
run_image: redislabs/memtier_benchmark:edge
11+
tool: memtier_benchmark
12+
arguments: '"--data-size" "100" --command "SET __key__ __data__ EX 10" --command-key-pattern P -c 50 -t 2 --hide-histogram --key-minimum 1 --key-maximum 1000000 -n allkeys'
13+
resources:
14+
requests:
15+
memory: 1g
16+
tested-commands:
17+
- setex
18+
- get
19+
- set
20+
tested-groups:
21+
- string
22+
redis-topologies:
23+
- oss-standalone
24+
build-variants:
25+
- gcc:8.5.0-amd64-debian-buster-default
26+
- dockerhub
27+
clientconfig:
28+
run_image: redislabs/memtier_benchmark:edge
29+
tool: memtier_benchmark
30+
arguments: '"--data-size" "100" --distinct-client-seed --command "SET __key__ __data__ EX 10" --command "GET __key__" --key-pattern R:R --key-minimum=1 --key-maximum 1000000 --test-time 180 -c 25 -t 4 --hide-histogram --pipeline 10'
31+
resources:
32+
requests:
33+
cpus: '4'
34+
memory: 2g
35+
36+
priority: 1
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
version: 0.4
2+
name: memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire
3+
description: Runs memtier_benchmark, for a keyspace of 1M keys with 50% SETs and 50% GETs (mixed) with a data size of 100 Bytes and expiration for community/youtuber use-case.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1000000
9+
preload_tool:
10+
run_image: redislabs/memtier_benchmark:edge
11+
tool: memtier_benchmark
12+
arguments: '"--data-size" "100" --command "SET __key__ __data__ EX 10" --command-key-pattern P -c 50 -t 2 --hide-histogram --key-minimum 1 --key-maximum 1000000 -n allkeys'
13+
resources:
14+
requests:
15+
memory: 1g
16+
tested-commands:
17+
- setex
18+
- get
19+
- set
20+
tested-groups:
21+
- string
22+
redis-topologies:
23+
- oss-standalone
24+
build-variants:
25+
- gcc:8.5.0-amd64-debian-buster-default
26+
- dockerhub
27+
clientconfig:
28+
run_image: redislabs/memtier_benchmark:edge
29+
tool: memtier_benchmark
30+
arguments: '"--data-size" "100" --distinct-client-seed --command "SET __key__ __data__ EX 10" --command "GET __key__" --key-pattern R:R --key-minimum=1 --key-maximum 1000000 --test-time 180 -c 25 -t 4 --hide-histogram'
31+
resources:
32+
requests:
33+
cpus: '4'
34+
memory: 2g
35+
36+
priority: 1
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
version: 0.4
2+
name: memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-pipeline-10
3+
description: Runs memtier_benchmark, for a keyspace of 1M keys with 50% SETs and 50% GETs (mixed) with a data size of 100 Bytes and pipeline 10.
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1000000
9+
preload_tool:
10+
run_image: redislabs/memtier_benchmark:edge
11+
tool: memtier_benchmark
12+
arguments: '"--data-size" "100" "--ratio" "1:0" "--key-pattern" "P:P" "-c" "50" "-t" "2" "--hide-histogram" "--key-minimum" "1" "--key-maximum" "1000000" "-n" "allkeys"'
13+
resources:
14+
requests:
15+
memory: 1g
16+
tested-commands:
17+
- set
18+
- get
19+
tested-groups:
20+
- string
21+
redis-topologies:
22+
- oss-standalone
23+
build-variants:
24+
- gcc:8.5.0-amd64-debian-buster-default
25+
- dockerhub
26+
clientconfig:
27+
run_image: redislabs/memtier_benchmark:edge
28+
tool: memtier_benchmark
29+
arguments: '"--data-size" "100" --distinct-client-seed --ratio 1:1 --key-pattern R:R --key-minimum=1 --key-maximum 1000000 --test-time 180 -c 25 -t 4 --hide-histogram --pipeline 10'
30+
resources:
31+
requests:
32+
cpus: '4'
33+
memory: 2g
34+
35+
priority: 1

0 commit comments

Comments
 (0)