From 004aff531446c77c68a5caae80aa5c1947467bce Mon Sep 17 00:00:00 2001 From: Alexander Bayandin Date: Wed, 3 Jan 2024 16:51:45 +0000 Subject: [PATCH] test_pageserver: report duration --- test_runner/fixtures/benchmark_fixture.py | 28 ++++++++++++++-------- test_runner/performance/test_pageserver.py | 5 ++-- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/test_runner/fixtures/benchmark_fixture.py b/test_runner/fixtures/benchmark_fixture.py index f94cc9979c..1f08c4ed26 100644 --- a/test_runner/fixtures/benchmark_fixture.py +++ b/test_runner/fixtures/benchmark_fixture.py @@ -410,34 +410,42 @@ class NeonBenchmarker: report=MetricReport.LOWER_IS_BETTER, ) - def record_pagebench_results(self, name: str, results: Dict[str, Any]): + def record_pagebench_results(self, name: str, results: Dict[str, Any], duration: str): total = results["total"] metric = "request_count" self.record( - f"{name}.{metric}", - total[metric], - "", + metric_name=f"{name}.{metric}", + metric_value=total[metric], + unit="", report=MetricReport.HIGHER_IS_BETTER, ) metric = "latency_mean" self.record( - f"{name}.{metric}", - humantime_to_ms(total[metric]), - "ms", + metric_name=f"{name}.{metric}", + metric_value=humantime_to_ms(total[metric]), + unit="ms", report=MetricReport.LOWER_IS_BETTER, ) metric = "latency_percentiles" for k, v in total[metric].items(): self.record( - f"{name}.{metric}.{k}", - humantime_to_ms(v), - "ms", + metric_name=f"{name}.{metric}.{k}", + metric_value=humantime_to_ms(v), + unit="ms", report=MetricReport.LOWER_IS_BETTER, ) + metric = "duration" + self.record( + metric_name=f"{name}.{metric}", + metric_value=humantime_to_ms(duration) / 1000, + unit="s", + report=MetricReport.LOWER_IS_BETTER, + ) + @pytest.fixture(scope="function") def zenbenchmark(record_property: Callable[[str, object], None]) -> Iterator[NeonBenchmarker]: diff --git a/test_runner/performance/test_pageserver.py b/test_runner/performance/test_pageserver.py index 5a1342380c..3d91a52b1e 100644 --- a/test_runner/performance/test_pageserver.py +++ b/test_runner/performance/test_pageserver.py @@ -152,6 +152,7 @@ def test_getpage_throughput( ps_http = env.pageserver.http_client() # run the benchmark with one client per timeline, each doing 10k requests to random keys. + duration = "10s" cmd = [ str(env.neon_binpath / "pagebench"), "get-page-latest-lsn", @@ -160,7 +161,7 @@ def test_getpage_throughput( "--page-service-connstring", env.pageserver.connstr(password=None), "--runtime", - "10s", + duration, *[f"{tenant}/{template_timeline}" for tenant in tenants], ] log.info(f"command: {' '.join(cmd)}") @@ -173,4 +174,4 @@ def test_getpage_throughput( log.info(f"Results:\n{json.dumps(results, sort_keys=True, indent=2)}") - zenbenchmark.record_pagebench_results("get-page-latest-lsn", results) + zenbenchmark.record_pagebench_results("get-page-latest-lsn", results, duration)