From 9cada8b59d26b97ad361b51c2e2dbf3fc89bd892 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Fri, 3 Mar 2023 17:53:43 +0100 Subject: [PATCH] fix benchmarks, broken by PR #3737 Benchmarks only run on `main` branch, so, the pre-commit tests didn't catch these. --- test_runner/fixtures/benchmark_fixture.py | 17 +++++++++++------ test_runner/fixtures/compare_fixtures.py | 6 +++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/test_runner/fixtures/benchmark_fixture.py b/test_runner/fixtures/benchmark_fixture.py index 3428e6db8a..a39aaf8241 100644 --- a/test_runner/fixtures/benchmark_fixture.py +++ b/test_runner/fixtures/benchmark_fixture.py @@ -354,20 +354,25 @@ class NeonBenchmarker: """ Fetch the "cumulative # of bytes written" metric from the pageserver """ - metric_name = r'libmetrics_disk_io_bytes_total{io_operation="write"}' - return self.get_int_counter_value(pageserver, metric_name) + return self.get_int_counter_value( + pageserver, "libmetrics_disk_io_bytes_total", {"io_operation": "write"} + ) def get_peak_mem(self, pageserver: NeonPageserver) -> int: """ Fetch the "maxrss" metric from the pageserver """ - metric_name = r"libmetrics_maxrss_kb" - return self.get_int_counter_value(pageserver, metric_name) + return self.get_int_counter_value(pageserver, "libmetrics_maxrss_kb") - def get_int_counter_value(self, pageserver: NeonPageserver, metric_name: str) -> int: + def get_int_counter_value( + self, + pageserver: NeonPageserver, + metric_name: str, + label_filters: Optional[Dict[str, str]] = None, + ) -> int: """Fetch the value of given int counter from pageserver metrics.""" all_metrics = pageserver.http_client().get_metrics() - sample = all_metrics.query_one(metric_name) + sample = all_metrics.query_one(metric_name, label_filters) return int(round(sample.value)) def get_timeline_size( diff --git a/test_runner/fixtures/compare_fixtures.py b/test_runner/fixtures/compare_fixtures.py index 17c0b19447..0ba926c8d2 100644 --- a/test_runner/fixtures/compare_fixtures.py +++ b/test_runner/fixtures/compare_fixtures.py @@ -144,12 +144,12 @@ class NeonCompare(PgCompare): "size", timeline_size / (1024 * 1024), "MB", report=MetricReport.LOWER_IS_BETTER ) - params = f'{{tenant_id="{self.tenant}",timeline_id="{self.timeline}"}}' + metric_filters = {"tenant_id": str(self.tenant), "timeline_id": str(self.timeline)} total_files = self.zenbenchmark.get_int_counter_value( - self.env.pageserver, "pageserver_created_persistent_files_total" + params + self.env.pageserver, "pageserver_created_persistent_files_total", metric_filters ) total_bytes = self.zenbenchmark.get_int_counter_value( - self.env.pageserver, "pageserver_written_persistent_bytes_total" + params + self.env.pageserver, "pageserver_written_persistent_bytes_total", metric_filters ) self.zenbenchmark.record( "data_uploaded", total_bytes / (1024 * 1024), "MB", report=MetricReport.LOWER_IS_BETTER