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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
3
table.cc
3
table.cc
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user