]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: set suicide timeouts on some workqueues
authorSage Weil <sage@newdream.net>
Mon, 29 Aug 2011 18:54:21 +0000 (11:54 -0700)
committerSage Weil <sage@newdream.net>
Mon, 29 Aug 2011 18:54:21 +0000 (11:54 -0700)
OpWQ: timeout * 10
RecoveryWQ: this does no io; it if stalls we're probably stuck in an
  infinite loop.  timeout * 10.
ScrubFinalizeWQ: this is cpu only. we're probably stuck in a loop, or
  swapping.  timeout * 10.

Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/OSD.h

index 2068e7c9cfb6ff90df9a0de32113d8d23fee5532..869f5eee0238474ce8783a8aa75698960119918e 100644 (file)
@@ -318,7 +318,7 @@ private:
   struct OpWQ : public ThreadPool::WorkQueue<PG> {
     OSD *osd;
     OpWQ(OSD *o, time_t ti, ThreadPool *tp)
-      : ThreadPool::WorkQueue<PG>("OSD::OpWQ", ti, 0, tp), osd(o) {}
+      : ThreadPool::WorkQueue<PG>("OSD::OpWQ", ti, ti*10, tp), osd(o) {}
 
     bool _enqueue(PG *pg) {
       pg->get();
@@ -648,7 +648,7 @@ protected:
   struct RecoveryWQ : public ThreadPool::WorkQueue<PG> {
     OSD *osd;
     RecoveryWQ(OSD *o, time_t ti, ThreadPool *tp)
-      : ThreadPool::WorkQueue<PG>("OSD::RecoveryWQ", ti, 0, tp), osd(o) {}
+      : ThreadPool::WorkQueue<PG>("OSD::RecoveryWQ", ti, ti*10, tp), osd(o) {}
 
     bool _empty() {
       return osd->recovery_queue.empty();
@@ -827,7 +827,7 @@ protected:
 
   public:
     ScrubFinalizeWQ(OSD *o, time_t ti, ThreadPool *tp)
-      : ThreadPool::WorkQueue<PG>("OSD::ScrubFinalizeWQ", ti, 0, tp), osd(o) {}
+      : ThreadPool::WorkQueue<PG>("OSD::ScrubFinalizeWQ", ti, ti*10, tp), osd(o) {}
 
     bool _empty() {
       return scrub_finalize_queue.empty();