X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Frocksdb%2Fmonitoring%2Finstrumented_mutex.cc;h=7b61bcf4fb8b733faf969f9b46fa064ca9ff945a;hb=494da23a05e25ed98f5539f3b89e6af3cafe3fec;hp=ef3805b4979d02020c82d439af35bcc275a7e58f;hpb=7c673caec407dd16107e56e4b51a6d00f021315c;p=ceph.git diff --git a/ceph/src/rocksdb/monitoring/instrumented_mutex.cc b/ceph/src/rocksdb/monitoring/instrumented_mutex.cc index ef3805b49..7b61bcf4f 100644 --- a/ceph/src/rocksdb/monitoring/instrumented_mutex.cc +++ b/ceph/src/rocksdb/monitoring/instrumented_mutex.cc @@ -1,7 +1,7 @@ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. -// This source code is licensed under the BSD-style license found in the -// LICENSE file in the root directory of this source tree. An additional grant -// of patent rights can be found in the PATENTS file in the same directory. +// This source code is licensed under both the GPLv2 (found in the +// COPYING file in the root directory) and Apache 2.0 License +// (found in the LICENSE.Apache file in the root directory). #include "monitoring/instrumented_mutex.h" #include "monitoring/perf_context_imp.h" @@ -10,25 +10,21 @@ namespace rocksdb { namespace { -bool ShouldReportToStats(Env* env, Statistics* stats) { - return env != nullptr && stats != nullptr && - stats->stats_level_ > kExceptTimeForMutex; +Statistics* stats_for_report(Env* env, Statistics* stats) { + if (env != nullptr && stats != nullptr && + stats->get_stats_level() > kExceptTimeForMutex) { + return stats; + } else { + return nullptr; + } } } // namespace void InstrumentedMutex::Lock() { - PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD(db_mutex_lock_nanos, - stats_code_ == DB_MUTEX_WAIT_MICROS); - uint64_t wait_time_micros = 0; - if (ShouldReportToStats(env_, stats_)) { - { - StopWatch sw(env_, nullptr, 0, &wait_time_micros); - LockInternal(); - } - RecordTick(stats_, stats_code_, wait_time_micros); - } else { - LockInternal(); - } + PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD( + db_mutex_lock_nanos, stats_code_ == DB_MUTEX_WAIT_MICROS, + stats_for_report(env_, stats_), stats_code_); + LockInternal(); } void InstrumentedMutex::LockInternal() { @@ -39,18 +35,10 @@ void InstrumentedMutex::LockInternal() { } void InstrumentedCondVar::Wait() { - PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD(db_condition_wait_nanos, - stats_code_ == DB_MUTEX_WAIT_MICROS); - uint64_t wait_time_micros = 0; - if (ShouldReportToStats(env_, stats_)) { - { - StopWatch sw(env_, nullptr, 0, &wait_time_micros); - WaitInternal(); - } - RecordTick(stats_, stats_code_, wait_time_micros); - } else { - WaitInternal(); - } + PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD( + db_condition_wait_nanos, stats_code_ == DB_MUTEX_WAIT_MICROS, + stats_for_report(env_, stats_), stats_code_); + WaitInternal(); } void InstrumentedCondVar::WaitInternal() { @@ -61,20 +49,10 @@ void InstrumentedCondVar::WaitInternal() { } bool InstrumentedCondVar::TimedWait(uint64_t abs_time_us) { - PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD(db_condition_wait_nanos, - stats_code_ == DB_MUTEX_WAIT_MICROS); - uint64_t wait_time_micros = 0; - bool result = false; - if (ShouldReportToStats(env_, stats_)) { - { - StopWatch sw(env_, nullptr, 0, &wait_time_micros); - result = TimedWaitInternal(abs_time_us); - } - RecordTick(stats_, stats_code_, wait_time_micros); - } else { - result = TimedWaitInternal(abs_time_us); - } - return result; + PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD( + db_condition_wait_nanos, stats_code_ == DB_MUTEX_WAIT_MICROS, + stats_for_report(env_, stats_), stats_code_); + return TimedWaitInternal(abs_time_us); } bool InstrumentedCondVar::TimedWaitInternal(uint64_t abs_time_us) {