__u64 log_size;
__u64 ondisk_log_size; // >= active_log_size
+ __u64 num_rd, num_rd_kb;
+ __u64 num_wr, num_wr_kb;
+
vector<int> acting;
pg_stat_t() : state(0),
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),
- log_size(0), ondisk_log_size(0)
+ log_size(0), ondisk_log_size(0),
+ num_rd(0), num_rd_kb(0), num_wr(0), num_wr_kb(0)
{ }
void encode(bufferlist &bl) const {
- __u8 v = 1;
+ __u8 v = 2;
::encode(v, bl);
::encode(version, bl);
::encode(num_objects_degraded, bl);
::encode(log_size, bl);
::encode(ondisk_log_size, bl);
+ ::encode(num_rd, bl);
+ ::encode(num_rd_kb, bl);
+ ::encode(num_wr, bl);
+ ::encode(num_wr_kb, bl);
::encode(acting, bl);
}
void decode(bufferlist::iterator &bl) {
::decode(num_objects_degraded, bl);
::decode(log_size, bl);
::decode(ondisk_log_size, bl);
+ if (v >= 2) {
+ ::decode(num_rd, bl);
+ ::decode(num_rd_kb, bl);
+ ::decode(num_wr, bl);
+ ::decode(num_wr_kb, bl);
+ }
::decode(acting, bl);
}
num_objects_degraded += o.num_objects_degraded;
log_size += o.log_size;
ondisk_log_size += o.ondisk_log_size;
+ num_rd += o.num_rd;
+ num_rd_kb += o.num_rd_kb;
+ num_wr += o.num_wr;
+ num_wr_kb += o.num_wr_kb;
}
void sub(const pg_stat_t& o) {
num_bytes -= o.num_bytes;
num_objects_degraded -= o.num_objects_degraded;
log_size -= o.log_size;
ondisk_log_size -= o.ondisk_log_size;
+ num_rd -= o.num_rd;
+ num_rd_kb -= o.num_rd_kb;
+ num_wr -= o.num_wr;
+ num_wr_kb -= o.num_wr_kb;
}
};
WRITE_CLASS_ENCODER(pg_stat_t)
__u64 num_objects_degraded;
__u64 log_size;
__u64 ondisk_log_size; // >= active_log_size
+ __u64 num_rd, num_rd_kb;
+ __u64 num_wr, num_wr_kb;
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),
- log_size(0), ondisk_log_size(0)
+ log_size(0), ondisk_log_size(0),
+ num_rd(0), num_rd_kb(0), num_wr(0), num_wr_kb(0)
{ }
void encode(bufferlist &bl) const {
- __u8 v = 1;
+ __u8 v = 2;
::encode(v, bl);
::encode(num_bytes, bl);
::encode(num_kb, bl);
::encode(num_objects_degraded, bl);
::encode(log_size, bl);
::encode(ondisk_log_size, bl);
+ ::encode(num_rd, bl);
+ ::encode(num_rd_kb, bl);
+ ::encode(num_wr, bl);
+ ::encode(num_wr_kb, bl);
}
void decode(bufferlist::iterator &bl) {
__u8 v;
::decode(num_objects_degraded, bl);
::decode(log_size, bl);
::decode(ondisk_log_size, bl);
+ if (v >= 2) {
+ ::decode(num_rd, bl);
+ ::decode(num_rd_kb, bl);
+ ::decode(num_wr, bl);
+ ::decode(num_wr_kb, bl);
+ }
}
void add(const pg_stat_t& o) {
num_objects_degraded += o.num_objects_degraded;
log_size += o.log_size;
ondisk_log_size += o.ondisk_log_size;
+ num_rd += o.num_rd;
+ num_rd_kb += o.num_rd_kb;
+ num_wr += o.num_wr;
+ num_wr_kb += o.num_wr_kb;
}
void sub(const pg_stat_t& o) {
num_bytes -= o.num_bytes;
num_objects_degraded -= o.num_objects_degraded;
log_size -= o.log_size;
ondisk_log_size -= o.ondisk_log_size;
+ num_rd -= o.num_rd;
+ num_rd_kb -= o.num_rd_kb;
+ num_wr -= o.num_wr;
+ num_wr_kb -= o.num_wr_kb;
}
};
WRITE_CLASS_ENCODER(pool_stat_t)
map<string,rados_pool_stat_t> stats;
rados.get_pool_stats(vec, stats);
- printf("%-15s %12s %12s %12s %12s\n", "pool name", "KB", "objects", "clones", "degraded");
+ printf("%-15s %12s %12s %12s %12s %12s %12s %12s %12s\n",
+ "pool name", "KB", "objects", "clones", "degraded", "rd", "rd KB", "wr", "wr KB");
for (map<string,rados_pool_stat_t>::iterator i = stats.begin(); i != stats.end(); ++i) {
- printf("%-15s %12lld %12lld %12lld %12lld\n",
+ printf("%-15s %12lld %12lld %12lld %12lld %12lld %12lld %12lld %12lld\n",
i->first.c_str(),
i->second.num_kb,
i->second.num_objects,
i->second.num_object_clones,
- i->second.num_objects_degraded);
+ i->second.num_objects_degraded,
+ i->second.num_rd, i->second.num_rd_kb,
+ i->second.num_wr, i->second.num_wr_kb);
}
// total