From ea8d52b11cfdba80f385a1188e84688b44b11b5a Mon Sep 17 00:00:00 2001 From: Amnon Heiman Date: Mon, 13 Jul 2020 22:11:03 +0300 Subject: [PATCH] row_locking: change estimated histogram with time_estimated_histogram This patch changes the row locking latencies to use time_estimated_histogram. The change consist of changing the histogram definition and changing how values are inserted to the histogram. Signed-off-by: Amnon Heiman --- db/view/row_locking.cc | 4 ++-- db/view/row_locking.hh | 2 +- table.cc | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/db/view/row_locking.cc b/db/view/row_locking.cc index 74f45c0f65..788aea68ac 100644 --- a/db/view/row_locking.cc +++ b/db/view/row_locking.cc @@ -80,7 +80,7 @@ row_locker::lock_pk(const dht::decorated_key& pk, bool exclusive, db::timeout_cl // even in the case of rehashing. return f.then([this, pk = &i->first, exclusive, &single_lock_stats, waiting_latency = std::move(waiting_latency)] () mutable { waiting_latency.stop(); - single_lock_stats.estimated_waiting_for_lock.add(waiting_latency.latency(), single_lock_stats.operations_currently_waiting_for_lock); + single_lock_stats.estimated_waiting_for_lock.add(waiting_latency.latency()); single_lock_stats.lock_acquisitions++; single_lock_stats.operations_currently_waiting_for_lock--; return lock_holder(this, pk, exclusive); @@ -126,7 +126,7 @@ row_locker::lock_ck(const dht::decorated_key& pk, const clustering_key_prefix& c lock1.release(); lock2.release(); waiting_latency.stop(); - single_lock_stats.estimated_waiting_for_lock.add(waiting_latency.latency(), single_lock_stats.operations_currently_waiting_for_lock); + single_lock_stats.estimated_waiting_for_lock.add(waiting_latency.latency()); single_lock_stats.lock_acquisitions++; single_lock_stats.operations_currently_waiting_for_lock--; return lock_holder(this, pk, cpk, exclusive); diff --git a/db/view/row_locking.hh b/db/view/row_locking.hh index dcaafc2238..5807f4b944 100644 --- a/db/view/row_locking.hh +++ b/db/view/row_locking.hh @@ -51,7 +51,7 @@ public: struct single_lock_stats { uint64_t lock_acquisitions = 0; uint64_t operations_currently_waiting_for_lock = 0; - utils::estimated_histogram estimated_waiting_for_lock; + utils::time_estimated_histogram estimated_waiting_for_lock; }; struct stats { single_lock_stats exclusive_row; diff --git a/table.cc b/table.cc index d3c9767621..973ef677f1 100644 --- a/table.cc +++ b/table.cc @@ -46,6 +46,7 @@ #include #include #include "utils/error_injection.hh" +#include "utils/histogram_metrics_helper.hh" static logging::logger tlogger("table"); static seastar::metrics::label column_family_label("cf"); @@ -952,7 +953,7 @@ void table::set_metrics() { ms::make_total_operations(format("row_lock_{}_acquisitions", stat_name), stats.lock_acquisitions, ms::description(format("Row lock acquisitions for {} lock", stat_name)))(cf)(ks), ms::make_queue_length(format("row_lock_{}_operations_currently_waiting_for_lock", stat_name), stats.operations_currently_waiting_for_lock, ms::description(format("Operations currently waiting for {} lock", stat_name)))(cf)(ks), ms::make_histogram(format("row_lock_{}_waiting_time", stat_name), ms::description(format("Histogram representing time that operations spent on waiting for {} lock", stat_name)), - [&stats] {return stats.estimated_waiting_for_lock.get_histogram(std::chrono::microseconds(100));})(cf)(ks) + [&stats] {return to_metrics_histogram(stats.estimated_waiting_for_lock);})(cf)(ks) }); }; add_row_lock_metrics(_row_locker_stats.exclusive_row, "exclusive_row");