redisbench-admin 0.11.50__py3-none-any.whl → 0.11.52__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.
- redisbench_admin/cli.py +13 -6
- redisbench_admin/compare/args.py +0 -20
- redisbench_admin/compare/compare.py +23 -165
- redisbench_admin/export/export.py +0 -1
- redisbench_admin/profilers/daemon.py +2 -2
- redisbench_admin/run/ann/pkg/.dockerignore +0 -0
- redisbench_admin/run/ann/pkg/.git +0 -0
- redisbench_admin/run/ann/pkg/.github/workflows/benchmarks.yml +0 -0
- redisbench_admin/run/ann/pkg/.gitignore +0 -0
- redisbench_admin/run/ann/pkg/LICENSE +0 -0
- redisbench_admin/run/ann/pkg/README.md +0 -0
- redisbench_admin/run/ann/pkg/algos.yaml +0 -0
- redisbench_admin/run/ann/pkg/algosP.yaml +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/__init__.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/__init__.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/annoy.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/balltree.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/base.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/bruteforce.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/ckdtree.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/datasketch.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/definitions.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/diskann.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dolphinnpy.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dummy_algo.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elasticsearch.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elastiknn.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_gpu.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_hnsw.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/flann.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/hnswlib.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kdtree.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kgraph.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/lshf.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/milvus.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/mrpt.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/n2.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nearpy.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nmslib.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/onng_ngt.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/opensearchknn.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/panng_ngt.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pinecone.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/puffinn.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pynndescent.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/qg_ngt.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/redisearch.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/rpforest.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/scann.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/sptag.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/subprocess.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vald.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vecsim-hnsw.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vespa.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/constants.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/data.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/datasets.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/distance.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/main.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/__init__.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/metrics.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/plot_variants.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/utils.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/results.py +0 -0
- redisbench_admin/run/ann/pkg/ann_benchmarks/runner.py +0 -0
- redisbench_admin/run/ann/pkg/create_dataset.py +0 -0
- redisbench_admin/run/ann/pkg/create_hybrid_dataset.py +0 -0
- redisbench_admin/run/ann/pkg/create_text_to_image_ds.py +0 -0
- redisbench_admin/run/ann/pkg/create_website.py +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.annoy +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.datasketch +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.diskann +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.diskann_pq +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.dolphinn +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.elasticsearch +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.elastiknn +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.faiss +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.flann +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.hnswlib +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.kgraph +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.mih +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.milvus +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.mrpt +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.n2 +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.nearpy +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.ngt +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.nmslib +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.opensearchknn +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.puffinn +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.pynndescent +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.redisearch +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.rpforest +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.scann +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.scipy +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.sklearn +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.sptag +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.vald +0 -0
- redisbench_admin/run/ann/pkg/install/Dockerfile.vespa +0 -0
- redisbench_admin/run/ann/pkg/install.py +0 -0
- redisbench_admin/run/ann/pkg/logging.conf +0 -0
- redisbench_admin/run/ann/pkg/multirun.py +0 -0
- redisbench_admin/run/ann/pkg/plot.py +0 -0
- redisbench_admin/run/ann/pkg/protocol/bf-runner.py +0 -0
- redisbench_admin/run/ann/pkg/protocol/ext-add-query-metric.md +0 -0
- redisbench_admin/run/ann/pkg/protocol/ext-batch-queries.md +0 -0
- redisbench_admin/run/ann/pkg/protocol/ext-prepared-queries.md +0 -0
- redisbench_admin/run/ann/pkg/protocol/ext-query-parameters.md +0 -0
- redisbench_admin/run/ann/pkg/protocol/specification.md +0 -0
- redisbench_admin/run/ann/pkg/requirements.txt +0 -0
- redisbench_admin/run/ann/pkg/requirements_py38.txt +0 -0
- redisbench_admin/run/ann/pkg/results/lastfm-64-dot.png +0 -0
- redisbench_admin/run/ann/pkg/run.py +0 -0
- redisbench_admin/run/ann/pkg/run_algorithm.py +0 -0
- redisbench_admin/run/ann/pkg/templates/chartjs.template +0 -0
- redisbench_admin/run/ann/pkg/templates/detail_page.html +0 -0
- redisbench_admin/run/ann/pkg/templates/general.html +0 -0
- redisbench_admin/run/ann/pkg/templates/latex.template +0 -0
- redisbench_admin/run/ann/pkg/templates/summary.html +0 -0
- redisbench_admin/run/ann/pkg/test/__init__.py +0 -0
- redisbench_admin/run/ann/pkg/test/test-jaccard.py +0 -0
- redisbench_admin/run/ann/pkg/test/test-metrics.py +0 -0
- redisbench_admin/run/args.py +2 -1
- redisbench_admin/run/modules.py +0 -87
- redisbench_admin/run/run.py +9 -0
- redisbench_admin/run_async/benchmark.py +0 -1
- redisbench_admin/run_local/run_local.py +11 -3
- redisbench_admin/run_remote/args.py +1 -1
- redisbench_admin/run_remote/remote_db.py +0 -114
- redisbench_admin/run_remote/run_remote.py +1 -50
- redisbench_admin/run_remote/standalone.py +11 -139
- redisbench_admin/utils/benchmark_config.py +2 -74
- redisbench_admin/utils/remote.py +2 -40
- {redisbench_admin-0.11.50.dist-info → redisbench_admin-0.11.52.dist-info}/METADATA +1 -1
- {redisbench_admin-0.11.50.dist-info → redisbench_admin-0.11.52.dist-info}/RECORD +21 -21
- {redisbench_admin-0.11.50.dist-info → redisbench_admin-0.11.52.dist-info}/LICENSE +0 -0
- {redisbench_admin-0.11.50.dist-info → redisbench_admin-0.11.52.dist-info}/WHEEL +0 -0
- {redisbench_admin-0.11.50.dist-info → redisbench_admin-0.11.52.dist-info}/entry_points.txt +0 -0
redisbench_admin/cli.py
CHANGED
|
@@ -36,15 +36,22 @@ LOG_FORMAT = "%(asctime)s %(levelname)-4s %(message)s"
|
|
|
36
36
|
LOG_DATEFMT = "%Y-%m-%d %H:%M:%S"
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
def
|
|
39
|
+
def populate_with_project_data():
|
|
40
40
|
project_name = "redisbench-admin"
|
|
41
41
|
project_version = __version__
|
|
42
42
|
project_description = None
|
|
43
43
|
try:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
pyproject_toml = toml.load("pyproject.toml")
|
|
45
|
+
if "project" in pyproject_toml:
|
|
46
|
+
project_data = pyproject_toml["project"]
|
|
47
|
+
project_name = project_data["name"]
|
|
48
|
+
project_version = project_data["version"]
|
|
49
|
+
project_description = project_data.get("description")
|
|
50
|
+
else:
|
|
51
|
+
poetry_data = pyproject_toml["tool"]["poetry"]
|
|
52
|
+
project_name = poetry_data["name"]
|
|
53
|
+
project_version = poetry_data["version"]
|
|
54
|
+
project_description = poetry_data["description"]
|
|
48
55
|
except FileNotFoundError:
|
|
49
56
|
pass
|
|
50
57
|
|
|
@@ -59,7 +66,7 @@ def main():
|
|
|
59
66
|
)
|
|
60
67
|
sys.exit(1)
|
|
61
68
|
requested_tool = sys.argv[1]
|
|
62
|
-
project_name, project_description, project_version =
|
|
69
|
+
project_name, project_description, project_version = populate_with_project_data()
|
|
63
70
|
parser = argparse.ArgumentParser(
|
|
64
71
|
description=project_description,
|
|
65
72
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
redisbench_admin/compare/args.py
CHANGED
|
@@ -114,26 +114,6 @@ def create_compare_arguments(parser):
|
|
|
114
114
|
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
115
115
|
default=START_TIME_NOW_UTC,
|
|
116
116
|
)
|
|
117
|
-
parser.add_argument(
|
|
118
|
-
"--from-date-baseline",
|
|
119
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
120
|
-
default=None,
|
|
121
|
-
)
|
|
122
|
-
parser.add_argument(
|
|
123
|
-
"--to-date-baseline",
|
|
124
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
125
|
-
default=None,
|
|
126
|
-
)
|
|
127
|
-
parser.add_argument(
|
|
128
|
-
"--from-date-comparison",
|
|
129
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
130
|
-
default=None,
|
|
131
|
-
)
|
|
132
|
-
parser.add_argument(
|
|
133
|
-
"--to-date-comparison",
|
|
134
|
-
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
135
|
-
default=None,
|
|
136
|
-
)
|
|
137
117
|
parser.add_argument(
|
|
138
118
|
"--metric_mode",
|
|
139
119
|
type=str,
|
|
@@ -314,10 +314,6 @@ def compare_command_logic(args, project_name, project_version):
|
|
|
314
314
|
first_n_baseline,
|
|
315
315
|
first_n_comparison,
|
|
316
316
|
grafana_link_base,
|
|
317
|
-
args.from_date_baseline,
|
|
318
|
-
args.to_date_baseline,
|
|
319
|
-
args.from_date_comparison,
|
|
320
|
-
args.to_date_comparison,
|
|
321
317
|
)
|
|
322
318
|
comment_body = ""
|
|
323
319
|
if total_comparison_points > 0:
|
|
@@ -597,99 +593,24 @@ def compute_regression_table(
|
|
|
597
593
|
first_n_baseline=-1,
|
|
598
594
|
first_n_comparison=-1,
|
|
599
595
|
grafana_link_base=None,
|
|
600
|
-
from_date_baseline=None,
|
|
601
|
-
to_date_baseline=None,
|
|
602
|
-
from_date_comparison=None,
|
|
603
|
-
to_date_comparison=None,
|
|
604
596
|
):
|
|
605
597
|
START_TIME_NOW_UTC, _, _ = get_start_time_vars()
|
|
606
598
|
START_TIME_LAST_MONTH_UTC = START_TIME_NOW_UTC - datetime.timedelta(days=31)
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
if
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
)
|
|
621
|
-
|
|
622
|
-
to_date_baseline if to_date_baseline is not None else START_TIME_NOW_UTC
|
|
623
|
-
)
|
|
624
|
-
from_date_comparison = (
|
|
625
|
-
from_date_comparison
|
|
626
|
-
if from_date_comparison is not None
|
|
627
|
-
else START_TIME_LAST_MONTH_UTC
|
|
628
|
-
)
|
|
629
|
-
to_date_comparison = (
|
|
630
|
-
to_date_comparison if to_date_comparison is not None else START_TIME_NOW_UTC
|
|
631
|
-
)
|
|
632
|
-
|
|
633
|
-
from_ts_ms_baseline = int(from_date_baseline.timestamp() * 1000)
|
|
634
|
-
to_ts_ms_baseline = int(to_date_baseline.timestamp() * 1000)
|
|
635
|
-
from_ts_ms_comparison = int(from_date_comparison.timestamp() * 1000)
|
|
636
|
-
to_ts_ms_comparison = int(to_date_comparison.timestamp() * 1000)
|
|
637
|
-
|
|
638
|
-
from_human_str_baseline = humanize.naturaltime(
|
|
639
|
-
dt.datetime.utcfromtimestamp(from_ts_ms_baseline / 1000)
|
|
640
|
-
)
|
|
641
|
-
to_human_str_baseline = humanize.naturaltime(
|
|
642
|
-
dt.datetime.utcfromtimestamp(to_ts_ms_baseline / 1000)
|
|
643
|
-
)
|
|
644
|
-
from_human_str_comparison = humanize.naturaltime(
|
|
645
|
-
dt.datetime.utcfromtimestamp(from_ts_ms_comparison / 1000)
|
|
646
|
-
)
|
|
647
|
-
to_human_str_comparison = humanize.naturaltime(
|
|
648
|
-
dt.datetime.utcfromtimestamp(to_ts_ms_comparison / 1000)
|
|
649
|
-
)
|
|
650
|
-
|
|
651
|
-
logging.info(
|
|
652
|
-
"Using separate time ranges - Baseline: {} to {}, Comparison: {} to {}".format(
|
|
653
|
-
from_human_str_baseline,
|
|
654
|
-
to_human_str_baseline,
|
|
655
|
-
from_human_str_comparison,
|
|
656
|
-
to_human_str_comparison,
|
|
657
|
-
)
|
|
658
|
-
)
|
|
659
|
-
|
|
660
|
-
# Use baseline range for legacy compatibility (will be overridden in data queries)
|
|
661
|
-
from_ts_ms = from_ts_ms_baseline
|
|
662
|
-
to_ts_ms = to_ts_ms_baseline
|
|
663
|
-
|
|
664
|
-
# Set legacy variables for table headers (show separate ranges info)
|
|
665
|
-
from_human_str = f"Baseline: {from_human_str_baseline} to {to_human_str_baseline}, Comparison: {from_human_str_comparison} to {to_human_str_comparison}"
|
|
666
|
-
to_human_str = to_human_str_baseline
|
|
667
|
-
else:
|
|
668
|
-
# Use legacy single date range for both baseline and comparison
|
|
669
|
-
if from_date is None:
|
|
670
|
-
from_date = START_TIME_LAST_MONTH_UTC
|
|
671
|
-
if to_date is None:
|
|
672
|
-
to_date = START_TIME_NOW_UTC
|
|
673
|
-
if from_ts_ms is None:
|
|
674
|
-
from_ts_ms = int(from_date.timestamp() * 1000)
|
|
675
|
-
if to_ts_ms is None:
|
|
676
|
-
to_ts_ms = int(to_date.timestamp() * 1000)
|
|
677
|
-
|
|
678
|
-
# Use same range for both baseline and comparison
|
|
679
|
-
from_ts_ms_baseline = from_ts_ms
|
|
680
|
-
to_ts_ms_baseline = to_ts_ms
|
|
681
|
-
from_ts_ms_comparison = from_ts_ms
|
|
682
|
-
to_ts_ms_comparison = to_ts_ms
|
|
683
|
-
|
|
684
|
-
from_human_str = humanize.naturaltime(
|
|
685
|
-
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
686
|
-
)
|
|
687
|
-
to_human_str = humanize.naturaltime(
|
|
688
|
-
dt.datetime.utcfromtimestamp(to_ts_ms / 1000)
|
|
689
|
-
)
|
|
690
|
-
logging.info(
|
|
691
|
-
"Using a time-delta from {} to {}".format(from_human_str, to_human_str)
|
|
692
|
-
)
|
|
599
|
+
if from_date is None:
|
|
600
|
+
from_date = START_TIME_LAST_MONTH_UTC
|
|
601
|
+
if to_date is None:
|
|
602
|
+
to_date = START_TIME_NOW_UTC
|
|
603
|
+
if from_ts_ms is None:
|
|
604
|
+
from_ts_ms = int(from_date.timestamp() * 1000)
|
|
605
|
+
if to_ts_ms is None:
|
|
606
|
+
to_ts_ms = int(to_date.timestamp() * 1000)
|
|
607
|
+
from_human_str = humanize.naturaltime(
|
|
608
|
+
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
609
|
+
)
|
|
610
|
+
to_human_str = humanize.naturaltime(dt.datetime.utcfromtimestamp(to_ts_ms / 1000))
|
|
611
|
+
logging.info(
|
|
612
|
+
"Using a time-delta from {} to {}".format(from_human_str, to_human_str)
|
|
613
|
+
)
|
|
693
614
|
baseline_str, by_str_baseline, comparison_str, by_str_comparison = get_by_strings(
|
|
694
615
|
baseline_branch,
|
|
695
616
|
comparison_branch,
|
|
@@ -773,10 +694,6 @@ def compute_regression_table(
|
|
|
773
694
|
comparison_tag,
|
|
774
695
|
from_date,
|
|
775
696
|
to_date,
|
|
776
|
-
from_ts_ms_baseline,
|
|
777
|
-
to_ts_ms_baseline,
|
|
778
|
-
from_ts_ms_comparison,
|
|
779
|
-
to_ts_ms_comparison,
|
|
780
697
|
)
|
|
781
698
|
logging.info(
|
|
782
699
|
"Printing differential analysis between {} and {}".format(
|
|
@@ -1027,56 +944,7 @@ def from_rts_to_regression_table(
|
|
|
1027
944
|
comparison_tag=None,
|
|
1028
945
|
from_date=None,
|
|
1029
946
|
to_date=None,
|
|
1030
|
-
from_ts_ms_baseline=None,
|
|
1031
|
-
to_ts_ms_baseline=None,
|
|
1032
|
-
from_ts_ms_comparison=None,
|
|
1033
|
-
to_ts_ms_comparison=None,
|
|
1034
947
|
):
|
|
1035
|
-
# Use separate timestamp ranges if provided, otherwise use legacy single range
|
|
1036
|
-
if (
|
|
1037
|
-
from_ts_ms_baseline is not None
|
|
1038
|
-
and to_ts_ms_baseline is not None
|
|
1039
|
-
and from_ts_ms_comparison is not None
|
|
1040
|
-
and to_ts_ms_comparison is not None
|
|
1041
|
-
):
|
|
1042
|
-
# Use separate ranges for baseline and comparison
|
|
1043
|
-
baseline_from_ts = from_ts_ms_baseline
|
|
1044
|
-
baseline_to_ts = to_ts_ms_baseline
|
|
1045
|
-
comparison_from_ts = from_ts_ms_comparison
|
|
1046
|
-
comparison_to_ts = to_ts_ms_comparison
|
|
1047
|
-
baseline_from_human = humanize.naturaltime(
|
|
1048
|
-
dt.datetime.utcfromtimestamp(baseline_from_ts / 1000)
|
|
1049
|
-
)
|
|
1050
|
-
baseline_to_human = humanize.naturaltime(
|
|
1051
|
-
dt.datetime.utcfromtimestamp(baseline_to_ts / 1000)
|
|
1052
|
-
)
|
|
1053
|
-
comparison_from_human = humanize.naturaltime(
|
|
1054
|
-
dt.datetime.utcfromtimestamp(comparison_from_ts / 1000)
|
|
1055
|
-
)
|
|
1056
|
-
comparison_to_human = humanize.naturaltime(
|
|
1057
|
-
dt.datetime.utcfromtimestamp(comparison_to_ts / 1000)
|
|
1058
|
-
)
|
|
1059
|
-
logging.info(
|
|
1060
|
-
"Using separate timestamp ranges - Baseline: {} to {}, Comparison: {} to {}".format(
|
|
1061
|
-
baseline_from_human, baseline_to_human, comparison_from_human, comparison_to_human
|
|
1062
|
-
)
|
|
1063
|
-
)
|
|
1064
|
-
else:
|
|
1065
|
-
# Use legacy single range for both
|
|
1066
|
-
baseline_from_ts = from_ts_ms
|
|
1067
|
-
baseline_to_ts = to_ts_ms
|
|
1068
|
-
comparison_from_ts = from_ts_ms
|
|
1069
|
-
comparison_to_ts = to_ts_ms
|
|
1070
|
-
from_human = humanize.naturaltime(
|
|
1071
|
-
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
1072
|
-
)
|
|
1073
|
-
to_human = humanize.naturaltime(dt.datetime.utcfromtimestamp(to_ts_ms / 1000))
|
|
1074
|
-
logging.info(
|
|
1075
|
-
"Using single timestamp range for both baseline and comparison: {} to {}".format(
|
|
1076
|
-
from_human, to_human
|
|
1077
|
-
)
|
|
1078
|
-
)
|
|
1079
|
-
|
|
1080
948
|
print_all = print_regressions_only is False and print_improvements_only is False
|
|
1081
949
|
table = []
|
|
1082
950
|
detected_regressions = []
|
|
@@ -1177,7 +1045,7 @@ def from_rts_to_regression_table(
|
|
|
1177
1045
|
try:
|
|
1178
1046
|
for ts_name_baseline in baseline_timeseries:
|
|
1179
1047
|
datapoints_inner = rts.ts().revrange(
|
|
1180
|
-
ts_name_baseline,
|
|
1048
|
+
ts_name_baseline, from_ts_ms, to_ts_ms
|
|
1181
1049
|
)
|
|
1182
1050
|
baseline_datapoints.extend(datapoints_inner)
|
|
1183
1051
|
(
|
|
@@ -1196,7 +1064,7 @@ def from_rts_to_regression_table(
|
|
|
1196
1064
|
)
|
|
1197
1065
|
for ts_name_comparison in comparison_timeseries:
|
|
1198
1066
|
datapoints_inner = rts.ts().revrange(
|
|
1199
|
-
ts_name_comparison,
|
|
1067
|
+
ts_name_comparison, from_ts_ms, to_ts_ms
|
|
1200
1068
|
)
|
|
1201
1069
|
comparison_datapoints.extend(datapoints_inner)
|
|
1202
1070
|
|
|
@@ -1665,11 +1533,9 @@ def check_client_side_latency(
|
|
|
1665
1533
|
comparison_ts = comparison_client_ts[0]
|
|
1666
1534
|
|
|
1667
1535
|
# Get client-side latency data
|
|
1668
|
-
baseline_client_data = rts.ts().revrange(
|
|
1669
|
-
baseline_ts, baseline_from_ts, baseline_to_ts
|
|
1670
|
-
)
|
|
1536
|
+
baseline_client_data = rts.ts().revrange(baseline_ts, from_ts_ms, to_ts_ms)
|
|
1671
1537
|
comparison_client_data = rts.ts().revrange(
|
|
1672
|
-
comparison_ts,
|
|
1538
|
+
comparison_ts, from_ts_ms, to_ts_ms
|
|
1673
1539
|
)
|
|
1674
1540
|
|
|
1675
1541
|
if len(baseline_client_data) == 0 or len(comparison_client_data) == 0:
|
|
@@ -2012,15 +1878,11 @@ def perform_variance_and_p99_analysis(
|
|
|
2012
1878
|
comparison_p99_data = []
|
|
2013
1879
|
|
|
2014
1880
|
for ts_name in baseline_ts_list:
|
|
2015
|
-
datapoints = rts.ts().revrange(
|
|
2016
|
-
ts_name, baseline_from_ts, baseline_to_ts
|
|
2017
|
-
)
|
|
1881
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2018
1882
|
baseline_p99_data.extend(datapoints)
|
|
2019
1883
|
|
|
2020
1884
|
for ts_name in comparison_ts_list:
|
|
2021
|
-
datapoints = rts.ts().revrange(
|
|
2022
|
-
ts_name, comparison_from_ts, comparison_to_ts
|
|
2023
|
-
)
|
|
1885
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2024
1886
|
comparison_p99_data.extend(datapoints)
|
|
2025
1887
|
|
|
2026
1888
|
if len(baseline_p99_data) < 3 or len(comparison_p99_data) < 3:
|
|
@@ -2368,15 +2230,11 @@ def check_latency_for_unstable_throughput(
|
|
|
2368
2230
|
comparison_latency_data = []
|
|
2369
2231
|
|
|
2370
2232
|
for ts_name in baseline_ts_list:
|
|
2371
|
-
datapoints = rts.ts().revrange(
|
|
2372
|
-
ts_name, baseline_from_ts, baseline_to_ts
|
|
2373
|
-
)
|
|
2233
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2374
2234
|
baseline_latency_data.extend(datapoints)
|
|
2375
2235
|
|
|
2376
2236
|
for ts_name in comparison_ts_list:
|
|
2377
|
-
datapoints = rts.ts().revrange(
|
|
2378
|
-
ts_name, comparison_from_ts, comparison_to_ts
|
|
2379
|
-
)
|
|
2237
|
+
datapoints = rts.ts().revrange(ts_name, from_ts_ms, to_ts_ms)
|
|
2380
2238
|
comparison_latency_data.extend(datapoints)
|
|
2381
2239
|
|
|
2382
2240
|
if len(baseline_latency_data) == 0 or len(comparison_latency_data) == 0:
|
|
@@ -76,7 +76,6 @@ def export_command_logic(args, project_name, project_version):
|
|
|
76
76
|
exporter_timemetric_path,
|
|
77
77
|
_,
|
|
78
78
|
_,
|
|
79
|
-
_,
|
|
80
79
|
) = get_defaults(exporter_spec_file)
|
|
81
80
|
arch = args.architecture
|
|
82
81
|
logging.info("Using the following architecture on the timeseries: {}".format(arch))
|
|
@@ -16,7 +16,7 @@ import botocore
|
|
|
16
16
|
import daemonize
|
|
17
17
|
from flask import Flask, request
|
|
18
18
|
|
|
19
|
-
from redisbench_admin.cli import
|
|
19
|
+
from redisbench_admin.cli import populate_with_project_data
|
|
20
20
|
from redisbench_admin.profilers.perf import Perf
|
|
21
21
|
from redisbench_admin.profilers.perf_daemon_caller import PERF_DAEMON_LOGNAME
|
|
22
22
|
from redisbench_admin.profilers.profilers_local import local_profilers_platform_checks
|
|
@@ -282,7 +282,7 @@ class PerfDaemon:
|
|
|
282
282
|
|
|
283
283
|
|
|
284
284
|
def main():
|
|
285
|
-
_, project_description, project_version =
|
|
285
|
+
_, project_description, project_version = populate_with_project_data()
|
|
286
286
|
project_name = "perf-daemon"
|
|
287
287
|
parser = argparse.ArgumentParser(
|
|
288
288
|
description=project_description,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|