From 208b02a748d97378f312beaa5110d8630c853ced Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 25 Jan 2013 19:51:14 -0800 Subject: [PATCH] mon/PGMap: report recovery rates Signed-off-by: Sage Weil --- src/mon/PGMap.cc | 26 ++++++++++++++++++++++++++ src/mon/PGMap.h | 4 ++++ 2 files changed, 30 insertions(+) diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index e76130d07cb02..dd62d71370c44 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -157,6 +157,13 @@ void PGMap::apply_incremental(const Incremental& inc) { assert(inc.version == version+1); version++; + + stamp_delta = inc.stamp; + stamp_delta -= stamp; + stamp = inc.stamp; + + pool_stat_t pg_sum_old = pg_sum; + bool ratios_changed = false; if (inc.full_ratio != full_ratio && inc.full_ratio != -1) { full_ratio = inc.full_ratio; @@ -228,6 +235,9 @@ void PGMap::apply_incremental(const Incremental& inc) nearfull_osds.erase(*p); full_osds.erase(*p); } + + pg_sum_delta = pg_sum; + pg_sum_delta.stats.sub(pg_sum_old.stats); if (inc.osdmap_epoch) last_osdmap_epoch = inc.osdmap_epoch; @@ -425,6 +435,10 @@ void PGMap::dump_basic(Formatter *f) const f->open_object_section("pg_stats_sum"); pg_sum.dump(f); f->close_section(); + + f->open_object_section("pg_stats_delta"); + pg_sum_delta.dump(f); + f->close_section(); f->open_object_section("osd_stats_sum"); osd_sum.dump(f); @@ -637,6 +651,18 @@ void PGMap::recovery_summary(ostream& out) const << "/" << pg_sum.stats.sum.num_objects << " unfound (" << b << "%)"; first = false; } + if (pg_sum_delta.stats.sum.num_objects_recovered || + pg_sum_delta.stats.sum.num_bytes_recovered || + pg_sum_delta.stats.sum.num_keys_recovered) { + if (!first) + out << "; "; + out << " recovering " + << si_t(pg_sum_delta.stats.sum.num_objects_recovered / (double)stamp_delta) << " o/s, " + << si_t(pg_sum_delta.stats.sum.num_bytes_recovered / (double)stamp_delta) << "B/s"; + if (pg_sum_delta.stats.sum.num_keys_recovered) + out << ", " << si_t(pg_sum_delta.stats.sum.num_keys_recovered / (double)stamp_delta) << " key/s"; + first = false; + } } void PGMap::print_summary(ostream& out) const diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 86ef8d69b5012..6bb158a0d0c2b 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -73,6 +73,10 @@ public: utime_t stamp; + // delta since the previous map + pool_stat_t pg_sum_delta; + utime_t stamp_delta; + set creating_pgs; // lru: front = new additions, back = recently pinged map > creating_pgs_by_osd; -- 2.39.5