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 <amnon@scylladb.com>
This commit is contained in:
Amnon Heiman
2020-07-13 22:11:03 +03:00
committed by Avi Kivity
parent edd3c97364
commit ea8d52b11c
3 changed files with 5 additions and 4 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -46,6 +46,7 @@
#include <boost/range/adaptor/transformed.hpp>
#include <boost/range/adaptor/map.hpp>
#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");