{
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;
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;
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);
<< "/" << 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
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;