From: xie xingguo Date: Wed, 23 Mar 2016 08:44:10 +0000 (+0800) Subject: osd/pg: add an option to cap loop before we reset tp handle X-Git-Tag: v10.1.1~95^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bb7ebe93bf4927aa36f57c9bb35301de5f0c9e38;p=ceph.git osd/pg: add an option to cap loop before we reset tp handle So we don't try to reset handle on every loop and this shall save CPU a little bit. Signed-off-by: xie xingguo --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index aea9c169b63a..6837c0014611 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -803,7 +803,7 @@ OPTION(osd_tracing, OPT_BOOL, false) // true if LTTng-UST tracepoints should be // determines whether PGLog::check() compares written out log to stored log OPTION(osd_debug_pg_log_writeout, OPT_BOOL, false) - +OPTION(osd_loop_before_reset_tphandle, OPT_U32, 64) // Max number of loop before we reset thread-pool's handle // default timeout while caling WaitInterval on an empty queue OPTION(threadpool_default_timeout, OPT_INT, 60) // default wait time for an empty queue before pinging the hb timeout diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 7eabe3b8d108..a0dd96ce2acd 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -506,14 +506,16 @@ bool PG::MissingLoc::add_source_info( ThreadPool::TPHandle* handle) { bool found_missing = false; + unsigned loop = 0; // found items? for (map::const_iterator p = needs_recovery_map.begin(); p != needs_recovery_map.end(); ++p) { const hobject_t &soid(p->first); eversion_t need = p->second.need; - if (handle) { + if (handle && ++loop >= g_conf->osd_loop_before_reset_tphandle) { handle->reset_tp_timeout(); + loop = 0; } if (oinfo.last_update < need) { dout(10) << "search_for_missing " << soid << " " << need