From: Samuel Just Date: Wed, 6 May 2015 18:02:19 +0000 (-0700) Subject: OSD: add op_wq suicide timeout X-Git-Tag: v0.80.11~2^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=7f6ec65b7c2ca0174142c1c48f18998d8c586b02;p=ceph.git OSD: add op_wq suicide timeout Signed-off-by: Samuel Just (cherry picked from commit 3f2946aa9f9b4b432e8c018283503153a2b1eddc) Conflicts: src/osd/OSD.cc adapt op_wq() and peering_wq() calls in OSD::OSD src/osd/OSD.h adapt OpWQ instead of ShardedOpWQ --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 77fdc22a82666..226668cf8feea 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -476,6 +476,7 @@ OPTION(osd_recover_clone_overlap_limit, OPT_INT, 10) OPTION(osd_backfill_scan_min, OPT_INT, 64) OPTION(osd_backfill_scan_max, OPT_INT, 512) OPTION(osd_op_thread_timeout, OPT_INT, 15) +OPTION(osd_op_thread_suicide_timeout, OPT_INT, 150) OPTION(osd_recovery_thread_timeout, OPT_INT, 30) OPTION(osd_recovery_thread_suicide_timeout, OPT_INT, 300) OPTION(osd_snap_trim_thread_timeout, OPT_INT, 60*60*1) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 74d90d8829fc1..8139c85a67c0a 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -940,8 +940,16 @@ OSD::OSD(CephContext *cct_, ObjectStore *store_, finished_lock("OSD::finished_lock"), op_tracker(cct, cct->_conf->osd_enable_op_tracker), test_ops_hook(NULL), - op_wq(this, cct->_conf->osd_op_thread_timeout, &op_tp), - peering_wq(this, cct->_conf->osd_op_thread_timeout, &op_tp), + op_wq( + this, + cct->_conf->osd_op_thread_timeout, + cct->_conf->osd_op_thread_suicide_timeout, + &op_tp), + peering_wq( + this, + cct->_conf->osd_op_thread_timeout, + cct->_conf->osd_op_thread_suicide_timeout, + &op_tp), map_lock("OSD::map_lock"), peer_map_epoch_lock("OSD::peer_map_epoch_lock"), debug_drop_pg_create_probability(cct->_conf->osd_debug_drop_pg_create_probability), diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 10828f26aeee1..eb1060468e649 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -1147,9 +1147,9 @@ private: map > pg_for_processing; OSD *osd; PrioritizedQueue, entity_inst_t > pqueue; - OpWQ(OSD *o, time_t ti, ThreadPool *tp) + OpWQ(OSD *o, time_t ti, time_t si, ThreadPool *tp) : ThreadPool::WorkQueueVal, PGRef >( - "OSD::OpWQ", ti, ti*10, tp), + "OSD::OpWQ", ti, si, tp), qlock("OpWQ::qlock"), osd(o), pqueue(o->cct->_conf->osd_op_pq_max_tokens_per_priority, @@ -1211,9 +1211,9 @@ private: list peering_queue; OSD *osd; set in_use; - PeeringWQ(OSD *o, time_t ti, ThreadPool *tp) + PeeringWQ(OSD *o, time_t ti, time_t si, ThreadPool *tp) : ThreadPool::BatchWorkQueue( - "OSD::PeeringWQ", ti, ti*10, tp), osd(o) {} + "OSD::PeeringWQ", ti, si, tp), osd(o) {} void _dequeue(PG *pg) { for (list::iterator i = peering_queue.begin();