redis-benchmarks-specification 0.2.10__py3-none-any.whl → 0.2.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of redis-benchmarks-specification might be problematic. Click here for more details.
- redis_benchmarks_specification/__cli__/cli.py +3 -1
- redis_benchmarks_specification/__runner__/runner.py +0 -21
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml +3 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-rate-limiting-lua-100k-sessions.yml +34 -63
- {redis_benchmarks_specification-0.2.10.dist-info → redis_benchmarks_specification-0.2.12.dist-info}/METADATA +1 -1
- {redis_benchmarks_specification-0.2.10.dist-info → redis_benchmarks_specification-0.2.12.dist-info}/RECORD +9 -9
- {redis_benchmarks_specification-0.2.10.dist-info → redis_benchmarks_specification-0.2.12.dist-info}/LICENSE +0 -0
- {redis_benchmarks_specification-0.2.10.dist-info → redis_benchmarks_specification-0.2.12.dist-info}/WHEEL +0 -0
- {redis_benchmarks_specification-0.2.10.dist-info → redis_benchmarks_specification-0.2.12.dist-info}/entry_points.txt +0 -0
|
@@ -126,7 +126,9 @@ def trigger_tests_dockerhub_cli_command_logic(args, project_name, project_versio
|
|
|
126
126
|
|
|
127
127
|
if result is True:
|
|
128
128
|
# Use architecture-specific stream
|
|
129
|
-
|
|
129
|
+
# Provide default arch if None (defensive programming for tests)
|
|
130
|
+
arch = args.arch if args.arch is not None else "amd64"
|
|
131
|
+
arch_specific_stream = get_arch_specific_stream_name(arch)
|
|
130
132
|
logging.info(
|
|
131
133
|
f"CLI adding work to architecture-specific stream: {arch_specific_stream}"
|
|
132
134
|
)
|
|
@@ -2449,21 +2449,6 @@ def process_self_contained_coordinator_stream(
|
|
|
2449
2449
|
)
|
|
2450
2450
|
arbitrary_command = False
|
|
2451
2451
|
|
|
2452
|
-
if (
|
|
2453
|
-
arbitrary_command
|
|
2454
|
-
and oss_cluster_api_enabled
|
|
2455
|
-
and "memtier" in benchmark_tool
|
|
2456
|
-
):
|
|
2457
|
-
logging.warning(
|
|
2458
|
-
"Forcing skip this test given there is an arbitrary commmand and memtier usage. Check https://github.com/RedisLabs/memtier_benchmark/pull/117 ."
|
|
2459
|
-
)
|
|
2460
|
-
delete_temporary_files(
|
|
2461
|
-
temporary_dir_client=temporary_dir_client,
|
|
2462
|
-
full_result_path=None,
|
|
2463
|
-
benchmark_tool_global=benchmark_tool_global,
|
|
2464
|
-
)
|
|
2465
|
-
continue
|
|
2466
|
-
|
|
2467
2452
|
# Check if we have multiple client configurations
|
|
2468
2453
|
client_configs = extract_client_configs(benchmark_config)
|
|
2469
2454
|
is_multiple_clients = len(client_configs) > 1
|
|
@@ -3648,12 +3633,6 @@ def data_prepopulation_step(
|
|
|
3648
3633
|
1,
|
|
3649
3634
|
unix_socket,
|
|
3650
3635
|
)
|
|
3651
|
-
if arbitrary_command is True and oss_cluster_api_enabled:
|
|
3652
|
-
logging.warning(
|
|
3653
|
-
"Skipping this test given it implies arbitrary command on an cluster setup. Not supported on memtier: https://github.com/RedisLabs/memtier_benchmark/pull/117"
|
|
3654
|
-
)
|
|
3655
|
-
result = False
|
|
3656
|
-
return result
|
|
3657
3636
|
|
|
3658
3637
|
# run the benchmark
|
|
3659
3638
|
preload_start_time = datetime.datetime.now()
|
|
@@ -25,6 +25,9 @@ tested-groups:
|
|
|
25
25
|
- string
|
|
26
26
|
redis-topologies:
|
|
27
27
|
- oss-standalone
|
|
28
|
+
- oss-standalone-08-io-threads
|
|
29
|
+
- oss-standalone-04-io-threads
|
|
30
|
+
- oss-standalone-02-io-threads
|
|
28
31
|
build-variants:
|
|
29
32
|
- gcc:15.2.0-amd64-debian-bookworm-default
|
|
30
33
|
- gcc:15.2.0-arm64-debian-bookworm-default
|
|
@@ -1,74 +1,45 @@
|
|
|
1
1
|
version: 0.4
|
|
2
2
|
name: memtier_benchmark-playbook-rate-limiting-lua-100k-sessions
|
|
3
|
-
description:
|
|
4
|
-
Runs memtier_benchmark to model
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
local key = KEYS[1]
|
|
9
|
-
local limit = 100
|
|
10
|
-
local window = 60
|
|
11
|
-
local current = redis.call("INCR", key)
|
|
12
|
-
if current == 1 then
|
|
13
|
-
redis.call("EXPIRE", key, window)
|
|
14
|
-
end
|
|
15
|
-
if current > limit then
|
|
16
|
-
return 0
|
|
17
|
-
else
|
|
18
|
-
return 1
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
This approach ensures that **increments, expiry, and limit checks** are performed without race conditions,
|
|
22
|
-
accurately modeling production-grade API quota enforcement.
|
|
23
|
-
|
|
24
|
-
### Workload profile
|
|
25
|
-
- **Command tested**: `EVAL` (rate-limit script)
|
|
26
|
-
- **Keyspace size**: 100k user-level rate-limit keys
|
|
27
|
-
- **Access pattern**: randomized keys (`--command-key-pattern=R`) to simulate distributed users
|
|
28
|
-
- **Response shape**: single integer (1 = allowed, 0 = denied), representing pass/fail on quota checks
|
|
29
|
-
|
|
30
|
-
This benchmark measures Redis performance in **rate limiting scenarios**, where atomic counters and TTLs
|
|
31
|
-
are critical for API protection and fairness in multi-tenant SaaS workloads.
|
|
32
|
-
|
|
33
|
-
exporter:
|
|
34
|
-
redistimeseries:
|
|
35
|
-
break_by:
|
|
36
|
-
- version
|
|
37
|
-
- commit
|
|
38
|
-
timemetric: $."ALL STATS".Runtime."Start time"
|
|
39
|
-
metrics:
|
|
40
|
-
- $."BEST RUN RESULTS".Totals."Ops/sec"
|
|
41
|
-
- $."BEST RUN RESULTS".Totals."Latency"
|
|
42
|
-
- $."BEST RUN RESULTS".Totals."Misses/sec"
|
|
43
|
-
- $."BEST RUN RESULTS".Totals."Percentile Latencies"."p50.00"
|
|
44
|
-
- $."BEST RUN RESULTS".Totals."Percentile Latencies"."p99.00"
|
|
45
|
-
- $."ALL STATS".Evals."Ops/sec"
|
|
46
|
-
- $."ALL STATS".Totals."Ops/sec"
|
|
47
|
-
- $."ALL STATS".Totals."Latency"
|
|
48
|
-
- $."ALL STATS".Totals."Misses/sec"
|
|
49
|
-
- $."ALL STATS".Totals."Percentile Latencies"."p50.00"
|
|
50
|
-
- $."ALL STATS".Totals."Percentile Latencies"."p99.00"
|
|
51
|
-
|
|
3
|
+
description: |
|
|
4
|
+
Runs memtier_benchmark to model a **bitmap-based rate limit gate** using Lua: the script performs
|
|
5
|
+
a `BITCOUNT` on a single bitmap key and **allows** if the count is below a configurable threshold,
|
|
6
|
+
otherwise **denies** (no other data structures or mutations are performed).
|
|
52
7
|
|
|
53
8
|
dbconfig:
|
|
54
9
|
configuration-parameters:
|
|
55
10
|
save: '""'
|
|
11
|
+
|
|
12
|
+
init_commands:
|
|
13
|
+
- '"SETBIT" "1" "100000" "1"'
|
|
14
|
+
preload_tool:
|
|
15
|
+
run_image: redislabs/memtier_benchmark:edge
|
|
16
|
+
tool: memtier_benchmark
|
|
17
|
+
arguments: >
|
|
18
|
+
--hide-histogram
|
|
19
|
+
--command "SETBIT __key__ __key__ 1"
|
|
20
|
+
--key-maximum 100000
|
|
21
|
+
--key-minimum 1
|
|
22
|
+
--key-prefix ""
|
|
23
|
+
-t 1 -c 1
|
|
24
|
+
--command-key-pattern R
|
|
25
|
+
--distinct-client-seed
|
|
26
|
+
-n 100000
|
|
27
|
+
--pipeline 50
|
|
56
28
|
resources:
|
|
57
29
|
requests:
|
|
30
|
+
cpus: '2'
|
|
58
31
|
memory: 1g
|
|
59
|
-
tested-groups:
|
|
60
|
-
- hash
|
|
61
|
-
- sorted-set
|
|
62
|
-
- set
|
|
63
|
-
- scripting
|
|
64
32
|
|
|
65
33
|
tested-commands:
|
|
66
|
-
-
|
|
67
|
-
- expire
|
|
34
|
+
- bitcount
|
|
68
35
|
- eval
|
|
36
|
+
tested-groups:
|
|
37
|
+
- bitmap
|
|
38
|
+
- scripting
|
|
69
39
|
|
|
70
40
|
redis-topologies:
|
|
71
41
|
- oss-standalone
|
|
42
|
+
|
|
72
43
|
build-variants:
|
|
73
44
|
- gcc:15.2.0-amd64-debian-bookworm-default
|
|
74
45
|
- gcc:15.2.0-arm64-debian-bookworm-default
|
|
@@ -78,17 +49,17 @@ clientconfig:
|
|
|
78
49
|
run_image: redislabs/memtier_benchmark:edge
|
|
79
50
|
tool: memtier_benchmark
|
|
80
51
|
arguments: >
|
|
81
|
-
--key-prefix ""
|
|
82
|
-
--key-minimum 1
|
|
83
|
-
--key-maximum 100000
|
|
84
|
-
--pipeline=1
|
|
85
52
|
--print-percentiles=50,90,95,99
|
|
86
53
|
--run-count=1
|
|
87
54
|
--test-time=120
|
|
88
|
-
--
|
|
55
|
+
--hide-histogram
|
|
56
|
+
--key-maximum 100000
|
|
57
|
+
--key-minimum 1
|
|
58
|
+
--key-prefix ""
|
|
59
|
+
--command='EVAL "local k=KEYS[1];local limit=tonumber(ARGV[1]);local c=redis.call(\"BITCOUNT\",k);if c>=limit then return {0,0,c} else return {1,limit-c,c} end" 1 __key__ 2000000'
|
|
89
60
|
resources:
|
|
90
61
|
requests:
|
|
91
|
-
cpus: '
|
|
62
|
+
cpus: '2'
|
|
92
63
|
memory: 2g
|
|
93
64
|
|
|
94
|
-
priority:
|
|
65
|
+
priority: 19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: redis-benchmarks-specification
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.12
|
|
4
4
|
Summary: 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.
|
|
5
5
|
Author: filipecosta90
|
|
6
6
|
Author-email: filipecosta.90@gmail.com
|
|
@@ -8,7 +8,7 @@ redis_benchmarks_specification/__builder__/builder.py,sha256=vG6Cp0SAAgvZt9zyjTQ
|
|
|
8
8
|
redis_benchmarks_specification/__builder__/schema.py,sha256=1wcmyVJBcWrBvK58pghN9NCoWLCO3BzPsmdKWYfkVog,584
|
|
9
9
|
redis_benchmarks_specification/__cli__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
|
|
10
10
|
redis_benchmarks_specification/__cli__/args.py,sha256=y_FHtkjhRKsU532sutlXPeXgtFZu7KGOp7lTSi1C5uc,7427
|
|
11
|
-
redis_benchmarks_specification/__cli__/cli.py,sha256=
|
|
11
|
+
redis_benchmarks_specification/__cli__/cli.py,sha256=NesdsV2nS-1cyblvU3A6e0tpz3Gfgw-76dpXFu2u6vU,22547
|
|
12
12
|
redis_benchmarks_specification/__cli__/stats.py,sha256=r9JIfwGCSR3maozYbDZfZrkthNFQSs0xIymS86yZ6Iw,55574
|
|
13
13
|
redis_benchmarks_specification/__common__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
redis_benchmarks_specification/__common__/builder_schema.py,sha256=kfDpRIk7NkJrb5qj9jzsBhLVNO7K_W2Clumj4pxrkG8,5938
|
|
@@ -26,7 +26,7 @@ redis_benchmarks_specification/__init__.py,sha256=YQIEx2sLPPA0JR9OuCuMNMNtm-f_gq
|
|
|
26
26
|
redis_benchmarks_specification/__runner__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
|
|
27
27
|
redis_benchmarks_specification/__runner__/args.py,sha256=K3VGmBC0-9lSv9H6VDp0N-6FGMWvc_4H0pG_TOXN5u8,11312
|
|
28
28
|
redis_benchmarks_specification/__runner__/remote_profiling.py,sha256=R7obNQju8mmY9oKkcndjI4aAuxi84OCLhDSqqaYu1SU,18610
|
|
29
|
-
redis_benchmarks_specification/__runner__/runner.py,sha256=
|
|
29
|
+
redis_benchmarks_specification/__runner__/runner.py,sha256=lWIpjThVeYW1hxR2dl2OSIeAwUXrWVHKHfQqsD9mrF8,155505
|
|
30
30
|
redis_benchmarks_specification/__self_contained_coordinator__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
|
|
31
31
|
redis_benchmarks_specification/__self_contained_coordinator__/args.py,sha256=2nTD4g4V1NjMRjRuDvHaoub5sjcav0GCnxv2HFiXWKc,7329
|
|
32
32
|
redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py,sha256=OVHqJzDgeSSRfUSiKp1ZTAVv14PvSbk-5yJsAAoUfpw,936
|
|
@@ -163,7 +163,7 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed
|
|
|
163
163
|
redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns.yml,sha256=1YIVXSLRytR9-QIayu6jCxnFd1KJlY8o0rwJYT28Hx8,1549
|
|
164
164
|
redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10.yml,sha256=5C2S9LpQDH-_IpjWwYH9tCnK0jvm9pZdlnyGmJMA9gc,1300
|
|
165
165
|
redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml,sha256=NE5oujnTwuHINrlvHBjMEFSKY_iwKimAvq4twnYfmXI,1297
|
|
166
|
-
redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml,sha256=
|
|
166
|
+
redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml,sha256=TjgswuCZaZrPXdzBUf79pbcMZRSMV3iWoK53mT4fIK0,1368
|
|
167
167
|
redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml,sha256=h6haEl469vZSnp9LTB3wds12EwGfyNSEm1iqXxh72s8,1329
|
|
168
168
|
redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B.yml,sha256=Wg8joxF6TuCOyQbC4CpW8LTx49PpIAKvNhtwqJpX95k,1303
|
|
169
169
|
redis_benchmarks_specification/test-suites/memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml,sha256=I4fNkW8P-tVpkkfep8gcPeQ6BgPlZnG4EAytvtxU1hU,1498
|
|
@@ -277,7 +277,7 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed
|
|
|
277
277
|
redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers.yml,sha256=8M9AdpNaVBuSUm78cqKModOF_xITV_RM7RLCTyvtvaQ,825
|
|
278
278
|
redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-server-time-pipeline-10.yml,sha256=zeTHtpbhNGfzTXHfr9P5e62PebxUONRvTsCbXJZhsTs,721
|
|
279
279
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-leaderboard.yml,sha256=YZTgci8gAfGxTDAM-GHMn_w4hqeNoS4Yi6FYX9JyCt0,6690
|
|
280
|
-
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-rate-limiting-lua-100k-sessions.yml,sha256=
|
|
280
|
+
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-rate-limiting-lua-100k-sessions.yml,sha256=z2APnBAH_leRRYDQXjA-5gFwScNgKT4mVyBh5wLb3SU,1636
|
|
281
281
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership-pipeline-10.yml,sha256=uh0J81Y27_YnQfDqzaTpYtJNvIdRFJtYsBUmXGTBrl4,2842
|
|
282
282
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership.yml,sha256=y_q6GWbodKpVA48o1a1frqF0bU52utIOnjIjuiQt0qk,2816
|
|
283
283
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-hash-100k-sessions.yml,sha256=H98DrXlq-lRhoe1M7vehfDBbUdZ7WwWroriTpklx-PI,3646
|
|
@@ -287,8 +287,8 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-st
|
|
|
287
287
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml,sha256=2egtIxPxCze2jlbAfgsk4v9JSQHNMoPLbDWFEW8olDg,7006
|
|
288
288
|
redis_benchmarks_specification/test-suites/template.txt,sha256=ezqGiRPOvuSDO0iG7GEf-AGXNfHbgXI89_G0RUEzL88,481
|
|
289
289
|
redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml,sha256=PD7ow-k4Ll2BkhEC3aIqiaCZt8Hc4aJIp96Lw3J3mcI,791
|
|
290
|
-
redis_benchmarks_specification-0.2.
|
|
291
|
-
redis_benchmarks_specification-0.2.
|
|
292
|
-
redis_benchmarks_specification-0.2.
|
|
293
|
-
redis_benchmarks_specification-0.2.
|
|
294
|
-
redis_benchmarks_specification-0.2.
|
|
290
|
+
redis_benchmarks_specification-0.2.12.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
291
|
+
redis_benchmarks_specification-0.2.12.dist-info/METADATA,sha256=KSHkm-wxg6iKtiWTYxNEIkftjxxlfAq_SFcevK1NgvQ,22767
|
|
292
|
+
redis_benchmarks_specification-0.2.12.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
293
|
+
redis_benchmarks_specification-0.2.12.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
|
|
294
|
+
redis_benchmarks_specification-0.2.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|