From 73fb61a6ef9f88c8d6add59fe2824caecfb70f85 Mon Sep 17 00:00:00 2001 From: Xinze Chi Date: Thu, 16 Apr 2015 06:57:34 +0800 Subject: [PATCH] osd: misc latency perf counter for tier pool l_osd_agent_flush_lat, l_osd_agent_promote_lat, l_osd_agent_proxy_read_lat Signed-off-by: Xinze Chi --- src/osd/OSD.cc | 3 +++ src/osd/OSD.h | 3 +++ src/osd/ReplicatedPG.cc | 13 ++++++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 933d35daaf22..5503a2133550 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2126,6 +2126,9 @@ void OSD::create_logger() osd_plb.add_u64_counter(l_osd_object_ctx_cache_total, "object_ctx_cache_total", "Object context cache lookups"); osd_plb.add_u64_counter(l_osd_op_cache_hit, "op_cache_hit"); + osd_plb.add_time_avg(l_osd_tier_flush_lat, "osd_tier_flush_lat", "Object flush latency"); + osd_plb.add_time_avg(l_osd_tier_promote_lat, "osd_tier_promote_lat", "Object promote latency"); + osd_plb.add_time_avg(l_osd_tier_r_lat, "osd_tier_r_lat", "Object proxy read latency"); logger = osd_plb.create_perf_counters(); cct->get_perfcounters_collection()->add(logger); diff --git a/src/osd/OSD.h b/src/osd/OSD.h index c40c977cfac4..43333df40233 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -145,6 +145,9 @@ enum { l_osd_object_ctx_cache_total, l_osd_op_cache_hit, + l_osd_tier_flush_lat, + l_osd_tier_promote_lat, + l_osd_tier_r_lat, l_osd_last, }; diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index ab435301c15e..2ae2e67af18d 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1991,10 +1991,11 @@ struct C_ProxyRead : public Context { epoch_t last_peering_reset; ceph_tid_t tid; ReplicatedPG::ProxyReadOpRef prdop; + utime_t start; C_ProxyRead(ReplicatedPG *p, hobject_t o, epoch_t lpr, const ReplicatedPG::ProxyReadOpRef& prd) : pg(p), oid(o), last_peering_reset(lpr), - tid(0), prdop(prd) + tid(0), prdop(prd), start(ceph_clock_now(NULL)) {} void finish(int r) { if (prdop->canceled) @@ -2006,6 +2007,7 @@ struct C_ProxyRead : public Context { } if (last_peering_reset == pg->get_last_peering_reset()) { pg->finish_proxy_read(oid, tid, r); + pg->osd->logger->tinc(l_osd_tier_r_lat, ceph_clock_now(NULL) - start); } pg->unlock(); } @@ -2147,15 +2149,18 @@ void ReplicatedPG::cancel_proxy_read_ops(bool requeue) class PromoteCallback: public ReplicatedPG::CopyCallback { ObjectContextRef obc; ReplicatedPG *pg; + utime_t start; public: PromoteCallback(ObjectContextRef obc_, ReplicatedPG *pg_) : obc(obc_), - pg(pg_) {} + pg(pg_), + start(ceph_clock_now(NULL)) {} virtual void finish(ReplicatedPG::CopyCallbackResults results) { ReplicatedPG::CopyResults *results_data = results.get<1>(); int r = results.get<0>(); pg->finish_promote(r, results_data, obc); + pg->osd->logger->tinc(l_osd_tier_promote_lat, ceph_clock_now(NULL) - start); } }; @@ -6762,9 +6767,10 @@ struct C_Flush : public Context { hobject_t oid; epoch_t last_peering_reset; ceph_tid_t tid; + utime_t start; C_Flush(ReplicatedPG *p, hobject_t o, epoch_t lpr) : pg(p), oid(o), last_peering_reset(lpr), - tid(0) + tid(0), start(ceph_clock_now(NULL)) {} void finish(int r) { if (r == -ECANCELED) @@ -6772,6 +6778,7 @@ struct C_Flush : public Context { pg->lock(); if (last_peering_reset == pg->get_last_peering_reset()) { pg->finish_flush(oid, tid, r); + pg->osd->logger->tinc(l_osd_tier_flush_lat, ceph_clock_now(NULL) - start); } pg->unlock(); } -- 2.47.3