*out << "v" << version << ": "
<< pg_stat.size() << " pgs: "
<< states << "; "
- << prettybyte_t(pg_sum.stats.sum.num_bytes) << " data, "
+ << prettybyte_t(pg_sum.stats.sum.num_bytes) << " data, "
<< kb_t(osd_sum.kb_used) << " used, "
<< kb_t(osd_sum.kb_avail) << " / "
<< kb_t(osd_sum.kb) << " avail";
*out << "; " << ssr.str();
}
+void PGMap::print_oneline_summary(ostream *out) const
+{
+ std::stringstream ss;
+
+ for (hash_map<int,int>::const_iterator p = num_pg_by_state.begin();
+ p != num_pg_by_state.end();
+ ++p) {
+ if (p != num_pg_by_state.begin())
+ ss << ", ";
+ ss << p->second << " " << pg_state_string(p->first);
+ }
+
+ string states = ss.str();
+ *out << "v" << version << ": "
+ << pg_stat.size() << " pgs: "
+ << states << "; "
+ << prettybyte_t(pg_sum.stats.sum.num_bytes) << " data, "
+ << kb_t(osd_sum.kb_used) << " used, "
+ << kb_t(osd_sum.kb_avail) << " / "
+ << kb_t(osd_sum.kb) << " avail";
+
+ // make non-negative; we can get negative values if osds send
+ // uncommitted stats and then "go backward" or if they are just
+ // buggy/wrong.
+ pool_stat_t pos_delta = pg_sum_delta;
+ pos_delta.floor(0);
+ if (pos_delta.stats.sum.num_rd ||
+ pos_delta.stats.sum.num_wr) {
+ *out << "; ";
+ if (pos_delta.stats.sum.num_rd) {
+ int64_t rd = (pos_delta.stats.sum.num_rd_kb << 10) / (double)stamp_delta;
+ *out << si_t(rd) << "B/s rd, ";
+ }
+ if (pos_delta.stats.sum.num_wr) {
+ int64_t wr = (pos_delta.stats.sum.num_wr_kb << 10) / (double)stamp_delta;
+ *out << si_t(wr) << "B/s wr, ";
+ }
+ int64_t iops = (pos_delta.stats.sum.num_rd + pos_delta.stats.sum.num_wr) / (double)stamp_delta;
+ *out << si_t(iops) << "op/s";
+ }
+
+ std::stringstream ssr;
+ recovery_summary(NULL, &ssr);
+ if (ssr.str().length())
+ *out << "; " << ssr.str();
+}
+
void PGMap::generate_test_instances(list<PGMap*>& o)
{
o.push_back(new PGMap);
void recovery_summary(Formatter *f, ostream *out) const;
void print_summary(Formatter *f, ostream *out) const;
+ void print_oneline_summary(ostream *out) const;
epoch_t calc_min_last_epoch_clean() const;
WRITE_CLASS_ENCODER_FEATURES(PGMap)
inline ostream& operator<<(ostream& out, const PGMap& m) {
- m.print_summary(NULL, &out);
+ m.print_oneline_summary(&out);
return out;
}