From a17f2a9a6600803a8b7f6dd306f7bafb6acc1af5 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Tue, 1 Sep 2015 21:35:19 +0800 Subject: [PATCH] osdc/Objecter: optimize Objecter::tick. Set bool value is better than insert same value into set<>. Signed-off-by: Jianpeng Ma (cherry picked from commit ee204044d9e69ea44b533c05cec154974039264c) --- src/osdc/Objecter.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 92df11fd833a7..9f35ffdda753c 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1862,6 +1862,7 @@ void Objecter::tick() for (map::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) { OSDSession *s = siter->second; RWLock::RLocker l(s->lock); + bool found = false; for (map::iterator p = s->ops.begin(); p != s->ops.end(); ++p) { @@ -1869,7 +1870,7 @@ void Objecter::tick() assert(op->session); if (op->stamp < cutoff) { ldout(cct, 2) << " tid " << p->first << " on osd." << op->session->osd << " is laggy" << dendl; - toping.insert(op->session); + found = true; ++laggy_ops; } } @@ -1880,7 +1881,7 @@ void Objecter::tick() RWLock::WLocker wl(op->watch_lock); assert(op->session); ldout(cct, 10) << " pinging osd that serves lingering tid " << p->first << " (osd." << op->session->osd << ")" << dendl; - toping.insert(op->session); + found = true; if (op->is_watch && op->registered && !op->last_error) _send_linger_ping(op); } @@ -1890,8 +1891,10 @@ void Objecter::tick() CommandOp *op = p->second; assert(op->session); ldout(cct, 10) << " pinging osd that serves command tid " << p->first << " (osd." << op->session->osd << ")" << dendl; - toping.insert(op->session); + found = true; } + if (found) + toping.insert(s); } if (num_homeless_ops.read() || !toping.empty()) { _maybe_request_map(); -- 2.39.5