From: Sage Weil Date: Mon, 17 Feb 2014 20:23:44 +0000 (-0800) Subject: osd: l_osd_agent_{wake,skip,flush,evict} X-Git-Tag: v0.78~164^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d1a185bd4b1f0ea99a12abecb4a45970c9dfd7d0;p=ceph.git osd: l_osd_agent_{wake,skip,flush,evict} Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 93f9f288ab30..7d8c554f6d0c 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1444,6 +1444,11 @@ void OSD::create_logger() osd_plb.add_u64_counter(l_osd_tier_dirty, "tier_dirty"); osd_plb.add_u64_counter(l_osd_tier_clean, "tier_clean"); + osd_plb.add_u64_counter(l_osd_agent_wake, "agent_wake"); + osd_plb.add_u64_counter(l_osd_agent_skip, "agent_skip"); + osd_plb.add_u64_counter(l_osd_agent_flush, "agent_flush"); + osd_plb.add_u64_counter(l_osd_agent_evict, "agent_evict"); + 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 e3c2e1884e49..c5590233672b 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -134,6 +134,11 @@ enum { l_osd_tier_dirty, l_osd_tier_clean, + l_osd_agent_wake, + l_osd_agent_skip, + l_osd_agent_flush, + l_osd_agent_evict, + l_osd_last, }; diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index f5d8094da1c3..d3d7e72842df 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -10274,6 +10274,8 @@ void ReplicatedPG::agent_work(int start_max) return; } + osd->logger->inc(l_osd_agent_wake); + dout(10) << __func__ << " max " << start_max << ", flush " << agent_state->get_flush_mode_name() @@ -10305,29 +10307,35 @@ void ReplicatedPG::agent_work(int start_max) ++p) { if (is_degraded_object(*p)) { dout(20) << __func__ << " skip (degraded) " << *p << dendl; + osd->logger->inc(l_osd_agent_skip); continue; } ObjectContextRef obc = get_object_context(*p, false, NULL); if (!obc) { // we didn't flush; we may miss something here. dout(20) << __func__ << " no obc for " << *p << ", skipping" << dendl; + osd->logger->inc(l_osd_agent_skip); continue; } if (!obc->obs.exists) { dout(20) << __func__ << " " << obc->obs.oi.soid << " dne, skipping" << dendl; + osd->logger->inc(l_osd_agent_skip); continue; } if (scrubber.write_blocked_by_scrub(obc->obs.oi.soid)) { dout(20) << __func__ << " scrubbing, skipping " << obc->obs.oi << dendl; + osd->logger->inc(l_osd_agent_skip); continue; } if (obc->obs.oi.soid.nspace == cct->_conf->osd_hit_set_namespace) { dout(20) << __func__ << " skip (hit set) " << obc->obs.oi << dendl; + osd->logger->inc(l_osd_agent_skip); continue; } if (obc->is_blocked()) { dout(20) << __func__ << " skip (blocked) " << obc->obs.oi << dendl; + osd->logger->inc(l_osd_agent_skip); continue; } @@ -10335,6 +10343,7 @@ void ReplicatedPG::agent_work(int start_max) if (base_pool->is_erasure() && obc->obs.oi.test_flag(object_info_t::FLAG_OMAP)) { dout(20) << __func__ << " skip (omap to EC) " << obc->obs.oi << dendl; + osd->logger->inc(l_osd_agent_skip); continue; } @@ -10410,6 +10419,8 @@ bool ReplicatedPG::agent_maybe_flush(ObjectContextRef& obc) ctx->on_finish = new C_AgentFlushStartStop(this, obc->obs.oi.soid); start_flush(ctx, false); + + osd->logger->inc(l_osd_agent_flush); return true; } @@ -10489,6 +10500,7 @@ bool ReplicatedPG::agent_maybe_evict(ObjectContextRef& obc) finish_ctx(ctx, pg_log_entry_t::DELETE); simple_repop_submit(repop); osd->logger->inc(l_osd_tier_evict); + osd->logger->inc(l_osd_agent_evict); return true; }