]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PGMap: track histogram of pg blocked_by
authorSage Weil <sage@redhat.com>
Wed, 6 Aug 2014 21:03:41 +0000 (14:03 -0700)
committerSage Weil <sage@redhat.com>
Sat, 9 Aug 2014 01:12:30 +0000 (18:12 -0700)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/PGMap.cc
src/mon/PGMap.h

index 6ef82ad6c9163514fbbd9412f234a9ad2449dfcd..dbe78e400ec2457929e06879f40f25fc673c6cbd 100644 (file)
@@ -433,6 +433,11 @@ void PGMap::stat_pg_add(const pg_t &pgid, const pg_stat_t &s)
     if (s.acting_primary >= 0)
       creating_pgs_by_osd[s.acting_primary].insert(pgid);
   }
+  for (vector<int>::const_iterator p = s.blocked_by.begin();
+       p != s.blocked_by.end();
+       ++p) {
+    ++blocked_by_sum[*p];
+  }
 }
 
 void PGMap::stat_pg_sub(const pg_t &pgid, const pg_stat_t &s)
@@ -455,6 +460,16 @@ void PGMap::stat_pg_sub(const pg_t &pgid, const pg_stat_t &s)
         creating_pgs_by_osd.erase(s.acting_primary);
     }
   }
+
+  for (vector<int>::const_iterator p = s.blocked_by.begin();
+       p != s.blocked_by.end();
+       ++p) {
+    ceph::unordered_map<int,int>::iterator q = blocked_by_sum.find(*p);
+    assert(q != blocked_by_sum.end());
+    --q->second;
+    if (q->second == 0)
+      blocked_by_sum.erase(q);
+  }
 }
 
 void PGMap::stat_osd_add(const osd_stat_t &s)
index 560290b7533ed53c74c9c2344fbd30a8b75ca146..66d634c3bb151000ea352b31caa71f438deb342d 100644 (file)
@@ -120,6 +120,7 @@ public:
   pool_stat_t pg_sum;
   osd_stat_t osd_sum;
   mutable epoch_t min_last_epoch_clean;
+  ceph::unordered_map<int,int> blocked_by_sum;
 
   utime_t stamp;
 
@@ -277,6 +278,9 @@ public:
   void dump_osd_perf_stats(Formatter *f) const;
   void print_osd_perf_stats(std::ostream *ss) const;
 
+  void dump_osd_blocked_by_stats(Formatter *f) const;
+  void print_osd_blocked_by_stats(std::ostream *ss) const;
+
   void recovery_summary(Formatter *f, ostream *out,
                         const pool_stat_t& delta_sum) const;
   void overall_recovery_summary(Formatter *f, ostream *out) const;