From 9a3e70adfbf8aa97aabc78df25abafa27663fc68 Mon Sep 17 00:00:00 2001 From: Amnon Heiman Date: Sun, 17 Jul 2022 13:09:59 +0300 Subject: [PATCH] histogram_metrics_helper.hh: Add to_metrics_summary function The to_metrics_summary is a helper function that create a metrics type summary from a timed_rate_moving_average_with_summary object. Signed-off-by: Amnon Heiman --- configure.py | 1 + utils/histogram_metrics_helper.cc | 20 ++++++++++++++++++++ utils/histogram_metrics_helper.hh | 11 ++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 utils/histogram_metrics_helper.cc diff --git a/configure.py b/configure.py index 127998d9f7..ae1fee09b6 100755 --- a/configure.py +++ b/configure.py @@ -704,6 +704,7 @@ scylla_core = (['replica/database.cc', 'utils/generation-number.cc', 'utils/rjson.cc', 'utils/human_readable.cc', + 'utils/histogram_metrics_helper.cc', 'mutation_partition.cc', 'mutation_partition_view.cc', 'mutation_partition_serializer.cc', diff --git a/utils/histogram_metrics_helper.cc b/utils/histogram_metrics_helper.cc new file mode 100644 index 0000000000..5b2f2f9469 --- /dev/null +++ b/utils/histogram_metrics_helper.cc @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2022-present ScyllaDB + */ + +/* + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +#include "histogram_metrics_helper.hh" + +seastar::metrics::histogram to_metrics_summary(const utils::summary_calculator& summary) noexcept { + seastar::metrics::histogram res; + res.buckets.resize(summary.quantiles().size()); + res.sample_count = summary.histogram().count(); + for (size_t i = 0; i < summary.quantiles().size(); i++) { + res.buckets[i].count = summary.summary()[i]; + res.buckets[i].upper_bound = summary.quantiles()[i]; + } + return res; +} diff --git a/utils/histogram_metrics_helper.hh b/utils/histogram_metrics_helper.hh index 450cc038b8..ab041217c3 100644 --- a/utils/histogram_metrics_helper.hh +++ b/utils/histogram_metrics_helper.hh @@ -14,7 +14,7 @@ #include #include "seastarx.hh" #include "estimated_histogram.hh" - +#include "histogram.hh" template seastar::metrics::histogram to_metrics_histogram(const utils::approx_exponential_histogram& hist) { @@ -35,3 +35,12 @@ seastar::metrics::histogram to_metrics_histogram(const utils::approx_exponential res.sample_sum += hist.get(hist.NUM_BUCKETS - 1) * hist.get_bucket_lower_limit(hist.NUM_BUCKETS - 1); return res; } + +/*! + * \brief get a metrics summary from timed_rate_moving_average_with_summary + * + * timed_rate_moving_average_with_summary contains a summary. This function + * copy it to a metric summary. + * A metric summary is a histogram where each bucket holds some quantile. + */ +seastar::metrics::histogram to_metrics_summary(const utils::summary_calculator& summary) noexcept;