From c354a5db57463f8319a41348b6edacc602c199f7 Mon Sep 17 00:00:00 2001 From: Paulo Sousa Date: Tue, 21 Oct 2025 15:38:23 +0100 Subject: [PATCH] Add XREADGROUP benchmark with NOACK option - Add new test suite memtier_benchmark-stream-10M-entries-xreadgroup-count-100-noack.yml - Tests XREADGROUP performance with NOACK flag to skip message acknowledgment tracking - Uses same 10M stream entries setup as existing XREADGROUP test for comparison - Fix YAML formatting inconsistencies across other stream benchmark files (indentation and quote styles) --- ...10M-entries-xreadgroup-count-100-noack.yml | 38 +++++++++++++++++++ ...tream-10M-entries-xreadgroup-count-100.yml | 18 ++++----- ...tream-concurrent-xadd-xreadgroup-70-30.yml | 2 +- 3 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100-noack.yml diff --git a/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100-noack.yml b/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100-noack.yml new file mode 100644 index 0000000..a481291 --- /dev/null +++ b/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100-noack.yml @@ -0,0 +1,38 @@ +version: 0.4 +name: memtier_benchmark-stream-10M-entries-xreadgroup-count-100-noack +description: "Runs memtier_benchmark, pre-loading Redis with 10M stream entries using XADD, creating a consumer group, then testing XREADGROUP performance with COUNT 100 and NOACK enabled." +dbconfig: + configuration-parameters: + save: '""' + check: + keyspacelen: 1 + preload_tool: + run_image: redislabs/memtier_benchmark:edge + tool: memtier_benchmark + arguments: '"--data-size" "100" --command "XADD stream-key * field __data__" --command-key-pattern="P" -n 50000 -c 50 -t 4 --hide-histogram' + init_commands: + - XGROUP CREATE stream-key test-group 0 MKSTREAM + resources: + requests: + memory: 4g + dataset_name: 1k-stream-entries-with-consumer-group + dataset_description: This dataset contains 1 stream key with 10M entries, each with a field containing 100 bytes of data, and a consumer group named 'test-group'. +tested-commands: + - xreadgroup +redis-topologies: + - oss-standalone +build-variants: + - gcc:15.2.0-amd64-debian-bookworm-default + - gcc:15.2.0-arm64-debian-bookworm-default + - dockerhub +clientconfig: + run_image: redislabs/memtier_benchmark:edge + tool: memtier_benchmark + arguments: --command="XREADGROUP GROUP test-group consumer1 COUNT 100 NOACK STREAMS stream-key >" --hide-histogram -n 1000 -c 25 -t 4 + resources: + requests: + cpus: "4" + memory: 2g +tested-groups: + - stream +priority: 94 diff --git a/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100.yml b/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100.yml index 6d0953a..6286c18 100644 --- a/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100.yml +++ b/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100.yml @@ -1,6 +1,6 @@ version: 0.4 name: memtier_benchmark-stream-10M-entries-xreadgroup-count-100 -description: 'Runs memtier_benchmark, pre-loading Redis with 10M stream entries using XADD, creating a consumer group, then testing XREADGROUP performance with COUNT 100.' +description: "Runs memtier_benchmark, pre-loading Redis with 10M stream entries using XADD, creating a consumer group, then testing XREADGROUP performance with COUNT 100." dbconfig: configuration-parameters: save: '""' @@ -11,28 +11,28 @@ dbconfig: tool: memtier_benchmark arguments: '"--data-size" "100" --command "XADD stream-key * field __data__" --command-key-pattern="P" -n 50000 -c 50 -t 4 --hide-histogram' init_commands: - - XGROUP CREATE stream-key test-group 0 MKSTREAM + - XGROUP CREATE stream-key test-group 0 MKSTREAM resources: requests: memory: 4g dataset_name: 1k-stream-entries-with-consumer-group dataset_description: This dataset contains 1 stream key with 10M entries, each with a field containing 100 bytes of data, and a consumer group named 'test-group'. tested-commands: -- xreadgroup + - xreadgroup redis-topologies: -- oss-standalone + - oss-standalone build-variants: -- gcc:15.2.0-amd64-debian-bookworm-default -- gcc:15.2.0-arm64-debian-bookworm-default -- dockerhub + - gcc:15.2.0-amd64-debian-bookworm-default + - gcc:15.2.0-arm64-debian-bookworm-default + - dockerhub clientconfig: run_image: redislabs/memtier_benchmark:edge tool: memtier_benchmark arguments: --command="XREADGROUP GROUP test-group consumer1 COUNT 100 STREAMS stream-key >" --hide-histogram -n 1000 -c 25 -t 4 resources: requests: - cpus: '4' + cpus: "4" memory: 2g tested-groups: -- stream + - stream priority: 94 diff --git a/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-concurrent-xadd-xreadgroup-70-30.yml b/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-concurrent-xadd-xreadgroup-70-30.yml index 6685992..d656e4b 100644 --- a/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-concurrent-xadd-xreadgroup-70-30.yml +++ b/redis_benchmarks_specification/test-suites/memtier_benchmark-stream-concurrent-xadd-xreadgroup-70-30.yml @@ -1,7 +1,7 @@ version: 0.4 name: memtier_benchmark-stream-concurrent-xadd-xreadgroup-70-30 description: - Starting with a pre-loaded stream of 500K entries, the benchmark tests concurrent stream operations with a consumer group for distributed processing. + Starting with a pre-loaded stream of 500K entries, the benchmark tests concurrent stream operations with a consumer group for distributed processing. 70% of commands produce messages with XADD, while 30% consume with XREADGROUP COUNT 10. 500K initial entries plus 200K * 70% minus 200K * 10 * (15% + 15%) ≈ 40K left in the stream at the end. dbconfig: