]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: add rd/wr ops/bytes stats to pgs, pools
authorSage Weil <sage@newdream.net>
Wed, 22 Jul 2009 23:15:38 +0000 (16:15 -0700)
committerSage Weil <sage@newdream.net>
Thu, 23 Jul 2009 18:50:35 +0000 (11:50 -0700)
src/TODO
src/include/librados.h
src/librados.cc
src/osd/osd_types.h
src/rados.cc

index b937cf3e4b1ad5cb1b10ad90587bb7c5088ba1b9..e9933e1d42b8197da0d6d8ed73fc541cfcc42046 100644 (file)
--- a/src/TODO
+++ b/src/TODO
@@ -29,7 +29,7 @@ v0.10
 /  - fix op replay after mds restart (symlink ops)
 /- fix rados snaps vs 'ls'
 /- improved monitor read model
-- osd bugfixes
+/- osd bugfixes
 
 v0.11
 (andi)
@@ -45,11 +45,11 @@ v0.11
 /- fixed stray unaligned access
 /- respond to control-c on slow/hung mount
 
+v0.12
 - osdmap: allow explicit pg 'override' mappings
 
 bugs
 - premature filejournal trimming?
-- mount.ceph doesn't update /etc/mtab
 
 later
 - authentication
index e09a2859fd9f927b33a532537f537d4626568d5f..00360f39b1a5385303342199dc9537ef6eb45c70 100644 (file)
@@ -34,6 +34,7 @@ struct rados_pool_stat_t {
   long long unsigned num_object_copies;  // num_objects * num_replicas
   long long unsigned num_objects_missing_on_primary;
   long long unsigned num_objects_degraded;
+  long long unsigned num_rd, num_rd_kb,num_wr, num_wr_kb;
 };
 
 struct rados_statfs_t {
index dd0f37ecd62a42542ccfd2fa4f8cd9b8fe8c56f4..9746edee941140e71cd15881e673d5ff465dc5c4 100644 (file)
@@ -423,6 +423,10 @@ int RadosClient::get_pool_stats(std::vector<string>& pools, map<string,rados_poo
     v.num_object_copies = p->second.num_object_copies;
     v.num_objects_missing_on_primary = p->second.num_objects_missing_on_primary;
     v.num_objects_degraded = p->second.num_objects_degraded;
+    v.num_rd = p->second.num_rd;
+    v.num_rd_kb = p->second.num_rd_kb;
+    v.num_wr = p->second.num_wr;
+    v.num_wr_kb = p->second.num_wr_kb;
   }
 
   return 0;
index 8378e0a523993108b83cc38ff93b5bb7f300022e..7c17d2bdeb14bf54ac786bc0c0987ec77e6cefa2 100644 (file)
@@ -609,6 +609,9 @@ struct pg_stat_t {
   __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),
@@ -616,11 +619,12 @@ struct pg_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(version, bl);
@@ -642,6 +646,10 @@ struct pg_stat_t {
     ::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) {
@@ -667,6 +675,12 @@ struct pg_stat_t {
     ::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);
   }
 
@@ -680,6 +694,10 @@ struct pg_stat_t {
     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;
@@ -691,6 +709,10 @@ struct pg_stat_t {
     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)
@@ -708,15 +730,18 @@ struct pool_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);
@@ -727,6 +752,10 @@ struct pool_stat_t {
     ::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;
@@ -740,6 +769,12 @@ struct pool_stat_t {
     ::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) {
@@ -752,6 +787,10 @@ struct pool_stat_t {
     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;
@@ -763,6 +802,10 @@ struct pool_stat_t {
     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)
index 304b6d52ac23b9277a8706793dbd7c73be46a8d4..e5100761163a524fe54b9a5b029a098158b27d52 100644 (file)
@@ -316,14 +316,17 @@ int main(int argc, const char **argv)
     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