From 449e375a3aad0ad70e610ed35a58ebef107f5b87 Mon Sep 17 00:00:00 2001 From: Paulo Sousa Date: Wed, 19 Aug 2026 13:54:13 +0100 Subject: [PATCH] run: accept --running_platform so platforms get separate series running_platform was already part of the time-series key in get_ts_metric_name, already a label in get_project_ts_tags, already threaded through common_exporter_logic and timeseries_test_sucess_flow, and already filterable in compare via --running_platform. Only the run entry points never supplied it: run_remote.py and run_local.py both called timeseries_test_sucess_flow without it, and no run argument existed to set it. The consequence is that runs on different hardware share one series. Tagging cannot substitute, because check_rts_labels applies TS.ALTER whenever incoming labels differ from the key's, so labels describe the series and the latest push wins. Observed on RediSearch benchmarks: an m7i.8xlarge VM baseline and an m7i.metal-24xl run against the same commit read back as a single 8-sample series, and its interval converged around a mean describing neither platform. The flag lives in common_run_args beside --architecture, which is its closest analogue: both describe the machine, and both belong in the key. Leaving it unset keeps keys byte-identical to before, so no existing series move. export_redis_metrics is deliberately untouched. It builds its own key prefix for server-side metrics, which are not used for gating, and changing that prefix would relocate a separate metric family. Co-Authored-By: Claude Opus 5 (1M context) --- redisbench_admin/run/args.py | 11 +++++++++++ redisbench_admin/run_local/run_local.py | 1 + redisbench_admin/run_remote/run_remote.py | 1 + 3 files changed, 13 insertions(+) diff --git a/redisbench_admin/run/args.py b/redisbench_admin/run/args.py index 1dafde7..67bd504 100644 --- a/redisbench_admin/run/args.py +++ b/redisbench_admin/run/args.py @@ -64,6 +64,17 @@ def common_run_args(parser): default=ARCH, help=f"Architecture to run the benchmark on. One of {VALID_ARCHS}.", ) + parser.add_argument( + "--running_platform", + type=str, + required=False, + default=None, + help="Platform identifier recorded in the time-series key and labels, " + "for example the instance class the benchmark ran on. Without it, runs " + "on different hardware share a single series, because labels are " + "per-series rather than per-sample and get overwritten by the latest " + "push. Set it to keep results from different platforms separable.", + ) parser.add_argument( "--keep_env_and_topo", required=False, diff --git a/redisbench_admin/run_local/run_local.py b/redisbench_admin/run_local/run_local.py index d5c3125..9a59289 100644 --- a/redisbench_admin/run_local/run_local.py +++ b/redisbench_admin/run_local/run_local.py @@ -703,6 +703,7 @@ def run_local_command_logic(args, project_name, project_version): github_repo_name, tf_triggering_env, metadata_tags, + running_platform=args.running_platform, tf_github_sha=push_github_sha, arch=push_arch, ) diff --git a/redisbench_admin/run_remote/run_remote.py b/redisbench_admin/run_remote/run_remote.py index 76c32ef..1e3a349 100644 --- a/redisbench_admin/run_remote/run_remote.py +++ b/redisbench_admin/run_remote/run_remote.py @@ -1479,6 +1479,7 @@ def run_remote_command_logic(args, project_name, project_version): tf_github_repo, tf_triggering_env, metadata_tags, + running_platform=args.running_platform, tf_github_sha=push_github_sha, arch=push_arch, )