From: Xinze Chi Date: Wed, 15 Apr 2015 22:57:34 +0000 (+0800) Subject: osd: misc latency perf counter for tier pool X-Git-Tag: v9.0.1~39^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F4362%2Fhead;p=ceph.git 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 --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 933d35daaf2..5503a213355 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 c40c977cfac..43333df4023 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 ab435301c15..2ae2e67af18 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(); }