redis-benchmarks-specification 0.2.15__py3-none-any.whl → 0.2.17__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.

@@ -1630,6 +1630,34 @@ def process_self_contained_coordinator_stream(
1630
1630
  f"Started container {container.name} ({container.id[:12]}) with {container_timeout}s timeout"
1631
1631
  )
1632
1632
 
1633
+ # Apply CPU affinity using taskset to force client processes to use assigned cores
1634
+ try:
1635
+ container_info = docker_client.api.inspect_container(container.id)
1636
+ container_pid = container_info['State']['Pid']
1637
+
1638
+ logging.info(f"Setting CPU affinity for client container PID {container_pid} to cores {client_cpuset_cpus}")
1639
+
1640
+ # Set CPU affinity for the main process and all its threads
1641
+ subprocess.run(f"taskset -cp {client_cpuset_cpus} {container_pid}", shell=True, check=True)
1642
+
1643
+ # Wait a moment for client to start its threads, then set affinity for all child processes
1644
+ time.sleep(1)
1645
+ result = subprocess.run(f"pgrep -P {container_pid}", shell=True, capture_output=True, text=True)
1646
+ if result.returncode == 0:
1647
+ child_pids = result.stdout.strip().split('\n')
1648
+ for child_pid in child_pids:
1649
+ if child_pid.strip():
1650
+ try:
1651
+ subprocess.run(f"taskset -cp {client_cpuset_cpus} {child_pid.strip()}", shell=True, check=True)
1652
+ logging.info(f"Set CPU affinity for client child process {child_pid.strip()}")
1653
+ except subprocess.CalledProcessError:
1654
+ pass # Child process may have exited
1655
+
1656
+ logging.info(f"✅ Applied CPU affinity to client container and all child processes")
1657
+
1658
+ except Exception as e:
1659
+ logging.warning(f"Failed to set CPU affinity for client container: {e}")
1660
+
1633
1661
  # Wait for container with timeout
1634
1662
  try:
1635
1663
  result = container.wait(
@@ -2255,6 +2283,13 @@ def start_redis_container(
2255
2283
  }
2256
2284
  logging.info(f"setting volume as follow: {volumes}. working_dir={mnt_point}")
2257
2285
  working_dir = mnt_point
2286
+
2287
+ # Calculate nano_cpus for better CPU distribution
2288
+ redis_cpu_count = len(db_cpuset_cpus.split(','))
2289
+ redis_nano_cpus = int(redis_cpu_count * 1e9) # 1 CPU = 1e9 nano_cpus
2290
+
2291
+ logging.info(f"Redis container will use {redis_cpu_count} CPUs (nano_cpus={redis_nano_cpus}) on cores {db_cpuset_cpus}")
2292
+
2258
2293
  redis_container = docker_client.containers.run(
2259
2294
  image=run_image,
2260
2295
  volumes=volumes,
@@ -2265,10 +2300,40 @@ def start_redis_container(
2265
2300
  network_mode="host",
2266
2301
  detach=True,
2267
2302
  cpuset_cpus=db_cpuset_cpus,
2303
+ nano_cpus=redis_nano_cpus, # Force CPU distribution
2268
2304
  pid_mode="host",
2269
2305
  publish_all_ports=True,
2270
2306
  )
2271
2307
  time.sleep(5)
2308
+
2309
+ # Apply CPU affinity using taskset to force Redis processes to use assigned cores
2310
+ try:
2311
+ container_info = docker_client.api.inspect_container(redis_container.id)
2312
+ container_pid = container_info['State']['Pid']
2313
+
2314
+ logging.info(f"Setting CPU affinity for Redis container PID {container_pid} to cores {db_cpuset_cpus}")
2315
+
2316
+ # Set CPU affinity for the main Redis process and all its threads
2317
+ subprocess.run(f"taskset -cp {db_cpuset_cpus} {container_pid}", shell=True, check=True)
2318
+
2319
+ # Wait a moment for Redis to start its IO threads, then set affinity for all Redis processes
2320
+ time.sleep(2)
2321
+ result = subprocess.run(f"pgrep -P {container_pid}", shell=True, capture_output=True, text=True)
2322
+ if result.returncode == 0:
2323
+ child_pids = result.stdout.strip().split('\n')
2324
+ for child_pid in child_pids:
2325
+ if child_pid.strip():
2326
+ try:
2327
+ subprocess.run(f"taskset -cp {db_cpuset_cpus} {child_pid.strip()}", shell=True, check=True)
2328
+ logging.info(f"Set CPU affinity for Redis child process {child_pid.strip()}")
2329
+ except subprocess.CalledProcessError:
2330
+ pass # Child process may have exited
2331
+
2332
+ logging.info(f"✅ Applied CPU affinity to Redis container and all child processes")
2333
+
2334
+ except Exception as e:
2335
+ logging.warning(f"Failed to set CPU affinity for Redis container: {e}")
2336
+
2272
2337
  redis_containers.append(redis_container)
2273
2338
  return redis_container
2274
2339
 
@@ -26,7 +26,7 @@ spec:
26
26
  redis_topology:
27
27
  primaries: 1
28
28
  replicas: 0
29
- redis_arguments: --io-threads 2 --io-threads-do-reads yes
29
+ redis_arguments: --io-threads 2 --io-threads-do-reads yes --server-cpulist 0,1
30
30
  resources:
31
31
  requests:
32
32
  cpus: "3"
@@ -37,7 +37,7 @@ spec:
37
37
  redis_topology:
38
38
  primaries: 1
39
39
  replicas: 0
40
- redis_arguments: --io-threads 4 --io-threads-do-reads yes
40
+ redis_arguments: --io-threads 4 --io-threads-do-reads yes --server-cpulist 0,1,2,3
41
41
  resources:
42
42
  requests:
43
43
  cpus: "5"
@@ -48,7 +48,7 @@ spec:
48
48
  redis_topology:
49
49
  primaries: 1
50
50
  replicas: 0
51
- redis_arguments: --io-threads 8 --io-threads-do-reads yes
51
+ redis_arguments: --io-threads 8 --io-threads-do-reads yes --server-cpulist 0,1,2,3,4,5,6,7
52
52
  resources:
53
53
  requests:
54
54
  cpus: "9"
@@ -24,10 +24,10 @@ tested-commands:
24
24
  tested-groups:
25
25
  - string
26
26
  redis-topologies:
27
- - oss-standalone
28
27
  - oss-standalone-08-io-threads
29
28
  - oss-standalone-04-io-threads
30
29
  - oss-standalone-02-io-threads
30
+ - oss-standalone
31
31
  build-variants:
32
32
  - gcc:15.2.0-amd64-debian-bookworm-default
33
33
  - gcc:15.2.0-arm64-debian-bookworm-default
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redis-benchmarks-specification
3
- Version: 0.2.15
3
+ Version: 0.2.17
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
@@ -37,7 +37,7 @@ redis_benchmarks_specification/__self_contained_coordinator__/docker.py,sha256=e
37
37
  redis_benchmarks_specification/__self_contained_coordinator__/post_processing.py,sha256=sVLKNnWdAqYY9DjVdqRC5tDaIrVSaI3Ca7w8-DQ-LRM,776
38
38
  redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py,sha256=VYGwUiIV382AjXTeYTOImPENzw2zf2VPQM2HvaZgE_M,3368
39
39
  redis_benchmarks_specification/__self_contained_coordinator__/runners.py,sha256=kpSNvliGOEBUa8aXXk9M1rb5jKmBI6QqC0znf2lz0kw,34110
40
- redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py,sha256=MPGuDhgI8h9cafi3togaacLMfhO7omlaV81F_vjcor0,114536
40
+ redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py,sha256=bGQ1-zrh0z4PTnwUH2NIE7FzqIay9OcCyhUmHCJkDsw,118580
41
41
  redis_benchmarks_specification/__setups__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  redis_benchmarks_specification/__setups__/topologies.py,sha256=xQ1IJkcTji_ZjLiJd3vOxZpvbNtBLZw9cPkw5hGJKHU,481
43
43
  redis_benchmarks_specification/__spec__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
@@ -51,7 +51,7 @@ redis_benchmarks_specification/commands/commands.py,sha256=hJbKkGzAFt_l40fJyQLfB
51
51
  redis_benchmarks_specification/setups/builders/gcc:15.2.0-amd64-debian-bookworm-default.yml,sha256=UobsjPRRQALKNvAkOqvYJJs8HLrlG9AbfJwuIkLpwHU,528
52
52
  redis_benchmarks_specification/setups/builders/gcc:15.2.0-arm64-debian-bookworm-default.yml,sha256=zexg-qwlrdjNEsJDigcwQgm-CluwtrWHPygvXzv0wwo,528
53
53
  redis_benchmarks_specification/setups/platforms/aws-ec2-1node-c5.4xlarge.yml,sha256=l7HsjccpebwZXeutnt3SHSETw4iiRwQ9dCDXLOySSRQ,622
54
- redis_benchmarks_specification/setups/topologies/topologies.yml,sha256=N2UOKA8tG_pLpaSFtn7WdUmDNYwxRyTv9Ln_PCOPTco,3261
54
+ redis_benchmarks_specification/setups/topologies/topologies.yml,sha256=acjn-N2X24FRrHDf-ICWujZ83S4OWIehBPZUj4srZu4,3340
55
55
  redis_benchmarks_specification/test-suites/defaults.yml,sha256=EJHv9INdjoNVMOgHY8qo4IVCHfvXVz5sv7Vxtr3DAIE,1392
56
56
  redis_benchmarks_specification/test-suites/generate.py,sha256=1QJBuWiouJ5OLil_r4OMG_UtZkmA8TLcyPlQAUuxCUw,4175
57
57
  redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values.yml,sha256=BYmI-u_QEoSVXczuWPIaoCU_IQdhPrNCdXj8SO4s60g,2317
@@ -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=TjgswuCZaZrPXdzBUf79pbcMZRSMV3iWoK53mT4fIK0,1368
166
+ redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml,sha256=Qt6ReUnzFmnfesvLx3h-vFPwpWoisIjW7y0e9acDnIA,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
@@ -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.15.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
291
- redis_benchmarks_specification-0.2.15.dist-info/METADATA,sha256=279bpm6Mgai-aSJ96Ii8isaCexDoQ8FPhwZYKIrRiIA,22767
292
- redis_benchmarks_specification-0.2.15.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
293
- redis_benchmarks_specification-0.2.15.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
294
- redis_benchmarks_specification-0.2.15.dist-info/RECORD,,
290
+ redis_benchmarks_specification-0.2.17.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
291
+ redis_benchmarks_specification-0.2.17.dist-info/METADATA,sha256=G1eTBdhG0ebfNsFdOqQdMufhDzEmGAkvnhnsahvB94w,22767
292
+ redis_benchmarks_specification-0.2.17.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
293
+ redis_benchmarks_specification-0.2.17.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
294
+ redis_benchmarks_specification-0.2.17.dist-info/RECORD,,