// aggregate stats (soft state)
hash_map<int,int> num_pg_by_state;
int64_t num_pg, num_osd;
- hash_map<int,pg_stat_t> pg_pool_sum;
- pg_stat_t pg_sum;
+ hash_map<int,pool_stat_t> pg_pool_sum;
+ pool_stat_t pg_sum;
osd_stat_t osd_sum;
set<pg_t> creating_pgs; // lru: front = new additions, back = recently pinged
num_pg_by_state.clear();
num_osd = 0;
pg_pool_sum.clear();
- pg_sum = pg_stat_t();
+ pg_sum = pool_stat_t();
osd_sum = osd_stat_t();
}
void stat_pg_add(pg_t pgid, pg_stat_t &s) {
<< "\t" << st.last_scrub << "\t" << st.last_scrub_stamp
<< std::endl;
}
- for (hash_map<int,pg_stat_t>::iterator p = pg_pool_sum.begin();
+ for (hash_map<int,pool_stat_t>::iterator p = pg_pool_sum.begin();
p != pg_pool_sum.end();
p++)
ss << "pool " << p->first
continue;
if (pg_map.pg_pool_sum.count(poolid) == 0)
continue;
- pg_stat_t& sum = pg_map.pg_pool_sum[poolid];
- pool_stat_t& s = reply->pool_stats[*p];
- s.num_bytes = sum.num_bytes;
- s.num_kb = sum.num_kb;
- s.num_objects = sum.num_objects;
- s.num_object_clones = sum.num_object_clones;
- s.num_object_copies = sum.num_object_copies;
- s.num_objects_missing_on_primary = sum.num_objects_missing_on_primary;
- s.num_objects_degraded = sum.num_objects_degraded;
+ reply->pool_stats[*p] = pg_map.pg_pool_sum[poolid];
}
mon->messenger->send_message(reply, m->get_orig_source_inst());
};
WRITE_CLASS_ENCODER(pg_stat_t)
-struct osd_peer_stat_t {
- struct ceph_timespec stamp;
- float oprate;
- float qlen;
- float recent_qlen;
- float read_latency;
- float read_latency_mine;
- float frac_rd_ops_shed_in;
- float frac_rd_ops_shed_out;
-} __attribute__ ((packed));
-
-WRITE_RAW_ENCODER(osd_peer_stat_t)
-
-inline ostream& operator<<(ostream& out, const osd_peer_stat_t &stat) {
- return out << "stat(" << stat.stamp
- //<< " oprate=" << stat.oprate
- // << " qlen=" << stat.qlen
- // << " recent_qlen=" << stat.recent_qlen
- << " rdlat=" << stat.read_latency_mine << " / " << stat.read_latency
- << " fshedin=" << stat.frac_rd_ops_shed_in
- << ")";
-}
-
-
-
+/*
+ * summation over an entire pool
+ */
struct pool_stat_t {
__u64 num_bytes; // in bytes
__u64 num_kb; // in KB
__u64 num_objects_missing_on_primary;
__u64 num_objects_degraded;
+ pool_stat_t() : num_bytes(0), num_kb(0),
+ num_objects(0), num_object_clones(0), num_object_copies(0),
+ num_objects_missing_on_primary(0), num_objects_degraded(0)
+ { }
+
void encode(bufferlist &bl) const {
::encode(num_bytes, bl);
::encode(num_kb, bl);
::decode(num_objects_missing_on_primary, bl);
::decode(num_objects_degraded, bl);
}
+
+ void add(const pg_stat_t& o) {
+ num_bytes += o.num_bytes;
+ num_kb += o.num_kb;
+ num_objects += o.num_objects;
+ num_object_clones += o.num_object_clones;
+ num_object_copies += o.num_object_copies;
+ num_objects_missing_on_primary += o.num_objects_missing_on_primary;
+ num_objects_degraded += o.num_objects_degraded;
+ }
+ void sub(const pg_stat_t& o) {
+ num_bytes -= o.num_bytes;
+ num_kb -= o.num_kb;
+ num_objects -= o.num_objects;
+ num_object_clones -= o.num_object_clones;
+ num_object_copies -= o.num_object_copies;
+ num_objects_missing_on_primary -= o.num_objects_missing_on_primary;
+ num_objects_degraded -= o.num_objects_degraded;
+ }
};
WRITE_CLASS_ENCODER(pool_stat_t)
+
+
+
+
+struct osd_peer_stat_t {
+ struct ceph_timespec stamp;
+ float oprate;
+ float qlen;
+ float recent_qlen;
+ float read_latency;
+ float read_latency_mine;
+ float frac_rd_ops_shed_in;
+ float frac_rd_ops_shed_out;
+} __attribute__ ((packed));
+
+WRITE_RAW_ENCODER(osd_peer_stat_t)
+
+inline ostream& operator<<(ostream& out, const osd_peer_stat_t &stat) {
+ return out << "stat(" << stat.stamp
+ //<< " oprate=" << stat.oprate
+ // << " qlen=" << stat.qlen
+ // << " recent_qlen=" << stat.recent_qlen
+ << " rdlat=" << stat.read_latency_mine << " / " << stat.read_latency
+ << " fshedin=" << stat.frac_rd_ops_shed_in
+ << ")";
+}
+
+
+
+
// -----------------------------------------
class ObjectExtent {