From cfc68307843ea5fa878cf2f7fe9f45f25c9f9e99 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 19 Aug 2014 21:29:41 -0700 Subject: [PATCH] common/Finisher: fix perfcounter Make sure we add in the nubmer of elements when we queue them from a list or deque or vector. Fix the type to be a counter. Backport: firefly, dumpling Signed-off-by: Sage Weil --- src/common/Finisher.cc | 3 +++ src/common/Finisher.h | 14 +++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/common/Finisher.cc b/src/common/Finisher.cc index 0cbfc44926f3..f3f4107dcf17 100644 --- a/src/common/Finisher.cc +++ b/src/common/Finisher.cc @@ -11,16 +11,19 @@ void Finisher::start() { + ldout(cct, 10) << __func__ << dendl; finisher_thread.create(); } void Finisher::stop() { + ldout(cct, 10) << __func__ << dendl; finisher_lock.Lock(); finisher_stop = true; finisher_cond.Signal(); finisher_lock.Unlock(); finisher_thread.join(); + ldout(cct, 10) << __func__ << " finish" << dendl; } void Finisher::wait_for_empty() diff --git a/src/common/Finisher.h b/src/common/Finisher.h index 236fecf3f6a0..76a3944ac9e3 100644 --- a/src/common/Finisher.h +++ b/src/common/Finisher.h @@ -55,36 +55,36 @@ class Finisher { } else finisher_queue.push_back(c); finisher_cond.Signal(); - finisher_lock.Unlock(); if (logger) logger->inc(l_finisher_queue_len); + finisher_lock.Unlock(); } void queue(vector& ls) { finisher_lock.Lock(); finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end()); finisher_cond.Signal(); + if (logger) + logger->inc(l_finisher_queue_len, ls.size()); finisher_lock.Unlock(); ls.clear(); - if (logger) - logger->inc(l_finisher_queue_len); } void queue(deque& ls) { finisher_lock.Lock(); finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end()); finisher_cond.Signal(); + if (logger) + logger->inc(l_finisher_queue_len, ls.size()); finisher_lock.Unlock(); ls.clear(); - if (logger) - logger->inc(l_finisher_queue_len); } void queue(list& ls) { finisher_lock.Lock(); finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end()); finisher_cond.Signal(); + if (logger) + logger->inc(l_finisher_queue_len, ls.size()); finisher_lock.Unlock(); ls.clear(); - if (logger) - logger->inc(l_finisher_queue_len); } void start(); -- 2.47.3