From 9a4d442cf6d6d85458744d2d1fb7aea7b81aec45 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 17 Mar 2025 18:19:45 +0000 Subject: [PATCH] architecture aware benchmark client link downloads --- pyproject.toml | 2 +- redisbench_admin/run/ftsb/ftsb.py | 8 ++++++-- redisbench_admin/run_remote/remote_client.py | 2 ++ redisbench_admin/run_remote/remote_db.py | 2 ++ redisbench_admin/run_remote/remote_helpers.py | 9 +++++++-- redisbench_admin/run_remote/run_remote.py | 3 +++ redisbench_admin/utils/remote.py | 5 ++++- 7 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 34d1ae5..7a22a6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "redisbench-admin" -version = "0.11.26" +version = "0.11.28" description = "Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... )." authors = ["filipecosta90 ","Redis Performance Group "] readme = "README.md" diff --git a/redisbench_admin/run/ftsb/ftsb.py b/redisbench_admin/run/ftsb/ftsb.py index 7ab2736..be4e833 100644 --- a/redisbench_admin/run/ftsb/ftsb.py +++ b/redisbench_admin/run/ftsb/ftsb.py @@ -55,12 +55,16 @@ def prepare_ftsb_benchmark_command( def extract_ftsb_extra_links( - benchmark_config, benchmark_tool, config_key="clientconfig" + benchmark_config, benchmark_tool, config_key="clientconfig", architecture="x86_64" ): remote_tool_link = "/tmp/{}".format(benchmark_tool) + arch_txt = "amd64" + if architecture == "aarch64": + arch_txt = "arm64" + tool_link = ( "https://s3.amazonaws.com/benchmarks.redislabs/" - + "redisearch/tools/ftsb/{}_linux_amd64".format(benchmark_tool) + + f"redisearch/tools/ftsb/{benchmark_tool}_linux_{arch_txt}" ) queries_file_link = None for entry in benchmark_config[config_key]: diff --git a/redisbench_admin/run_remote/remote_client.py b/redisbench_admin/run_remote/remote_client.py index 4f52388..35da028 100644 --- a/redisbench_admin/run_remote/remote_client.py +++ b/redisbench_admin/run_remote/remote_client.py @@ -53,6 +53,7 @@ def run_remote_client_tool( redis_conns=[], do_post_process=True, redis_password=None, + architecture="x86_64", ): ( benchmark_min_tool_version, @@ -83,6 +84,7 @@ def run_remote_client_tool( arch_str, client_ssh_port, private_key, + architecture, ) if "ann-benchmarks" in benchmark_tool: logging.info( diff --git a/redisbench_admin/run_remote/remote_db.py b/redisbench_admin/run_remote/remote_db.py index 0c9c79e..6df63d2 100644 --- a/redisbench_admin/run_remote/remote_db.py +++ b/redisbench_admin/run_remote/remote_db.py @@ -104,6 +104,7 @@ def remote_db_spin( ignore_keyspace_errors=False, continue_on_module_check_error=False, keyspace_check_timeout=60, + architecture="x86_64", ): ( _, @@ -337,6 +338,7 @@ def remote_db_spin( [], False, redis_password, + architecture, ) logging.info( "Finished loading the data via client tool. Took {} seconds. Result={}".format( diff --git a/redisbench_admin/run_remote/remote_helpers.py b/redisbench_admin/run_remote/remote_helpers.py index 81492a4..c220ef8 100644 --- a/redisbench_admin/run_remote/remote_helpers.py +++ b/redisbench_admin/run_remote/remote_helpers.py @@ -66,8 +66,11 @@ def remote_tool_pre_bench_step( arch_str, client_ssh_port, private_key, + architecture="x86_64", ): - logging.info("Settting up remote tool {} requirements".format(benchmark_tool)) + logging.info( + f"Settting up remote tool {benchmark_tool} requirements. architecture ={architecture}" + ) if benchmark_tool == "redisgraph-benchmark-go": setup_remote_benchmark_tool_redisgraph_benchmark_go( client_public_ip, @@ -90,7 +93,9 @@ def remote_tool_pre_bench_step( queries_file_link, remote_tool_link, tool_link, - ) = extract_ftsb_extra_links(benchmark_config, benchmark_tool, config_key) + ) = extract_ftsb_extra_links( + benchmark_config, benchmark_tool, config_key, architecture + ) logging.info( "FTSB Extracted:\nremote tool input: {}\nremote tool link: {}\ntool path: {}".format( queries_file_link, remote_tool_link, tool_link diff --git a/redisbench_admin/run_remote/run_remote.py b/redisbench_admin/run_remote/run_remote.py index bf16d48..82072bb 100644 --- a/redisbench_admin/run_remote/run_remote.py +++ b/redisbench_admin/run_remote/run_remote.py @@ -553,6 +553,8 @@ def run_remote_command_logic(args, project_name, project_version): flushall_on_every_test_start, ignore_keyspace_errors, continue_on_module_check_error, + 60, + architecture, ) if benchmark_type == "read-only": ro_benchmark_set( @@ -698,6 +700,7 @@ def run_remote_command_logic(args, project_name, project_version): redis_conns, True, redis_password, + architecture, ) if profilers_enabled: diff --git a/redisbench_admin/utils/remote.py b/redisbench_admin/utils/remote.py index e60c8bf..16a4a73 100644 --- a/redisbench_admin/utils/remote.py +++ b/redisbench_admin/utils/remote.py @@ -9,7 +9,7 @@ import os import sys import tempfile - +import time import git import paramiko import pysftp @@ -314,6 +314,9 @@ def setup_remote_environment( }, raise_on_error=True, ) + infra_wait_secs = 60 + logging.warning("Infra ready wait... for {infra_wait_secs} secs") + time.sleep(infra_wait_secs) return retrieve_tf_connection_vars(return_code, tf)