]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PGMap: report recovery rates
authorSage Weil <sage@inktank.com>
Sat, 26 Jan 2013 03:51:14 +0000 (19:51 -0800)
committerSage Weil <sage@inktank.com>
Tue, 29 Jan 2013 02:50:03 +0000 (18:50 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/PGMap.cc
src/mon/PGMap.h

index e76130d07cb02c7c25a83e37cefc5a684b75655e..dd62d71370c44eea726ce4992d6418652e49d429 100644 (file)
@@ -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
index 86ef8d69b5012888e5a9f56ef03eff68b16aeda8..6bb158a0d0c2b60a43f75ef48e83b75ea3707c96 100644 (file)
@@ -73,6 +73,10 @@ public:
 
   utime_t stamp;
 
+  // delta since the previous map
+  pool_stat_t pg_sum_delta;
+  utime_t stamp_delta;
+
   set<pg_t> creating_pgs;   // lru: front = new additions, back = recently pinged
   map<int,set<pg_t> > creating_pgs_by_osd;