Directly refernce perf_context internally.
Summary:
After 7f6c02dda1
, the same get_perf_context() is called both of internally and externally. However, I found internally this is not got inlined. I don't know why this is the case, but directly referencing perf_context is the logical way to do.
Closes https://github.com/facebook/rocksdb/pull/2892
Differential Revision: D5843789
Pulled By: siying
fbshipit-source-id: b49777d8809f35847699291bb7f8ea2754c3af49
This commit is contained in:
parent
6b3c71f6ed
commit
c319792059
@ -6,7 +6,6 @@
|
||||
#include <sstream>
|
||||
#include "monitoring/iostats_context_imp.h"
|
||||
#include "rocksdb/env.h"
|
||||
#include "util/thread_local.h"
|
||||
|
||||
namespace rocksdb {
|
||||
|
||||
|
@ -8,35 +8,33 @@
|
||||
#include "rocksdb/iostats_context.h"
|
||||
|
||||
#ifdef ROCKSDB_SUPPORT_THREAD_LOCAL
|
||||
namespace rocksdb {
|
||||
extern __thread IOStatsContext iostats_context;
|
||||
} // namespace rocksdb
|
||||
|
||||
// increment a specific counter by the specified value
|
||||
#define IOSTATS_ADD(metric, value) \
|
||||
(get_iostats_context()->metric += value)
|
||||
#define IOSTATS_ADD(metric, value) (iostats_context.metric += value)
|
||||
|
||||
// Increase metric value only when it is positive
|
||||
#define IOSTATS_ADD_IF_POSITIVE(metric, value) \
|
||||
if (value > 0) { IOSTATS_ADD(metric, value); }
|
||||
|
||||
// reset a specific counter to zero
|
||||
#define IOSTATS_RESET(metric) \
|
||||
(get_iostats_context()->metric = 0)
|
||||
#define IOSTATS_RESET(metric) (iostats_context.metric = 0)
|
||||
|
||||
// reset all counters to zero
|
||||
#define IOSTATS_RESET_ALL() \
|
||||
(get_iostats_context()->Reset())
|
||||
#define IOSTATS_RESET_ALL() (iostats_context.Reset())
|
||||
|
||||
#define IOSTATS_SET_THREAD_POOL_ID(value) \
|
||||
(get_iostats_context()->thread_pool_id = value)
|
||||
#define IOSTATS_SET_THREAD_POOL_ID(value) \
|
||||
(iostats_context.thread_pool_id = value)
|
||||
|
||||
#define IOSTATS_THREAD_POOL_ID() \
|
||||
(get_iostats_context()->thread_pool_id)
|
||||
#define IOSTATS_THREAD_POOL_ID() (iostats_context.thread_pool_id)
|
||||
|
||||
#define IOSTATS(metric) \
|
||||
(get_iostats_context()->metric)
|
||||
#define IOSTATS(metric) (iostats_context.metric)
|
||||
|
||||
// Declare and set start time of the timer
|
||||
#define IOSTATS_TIMER_GUARD(metric) \
|
||||
PerfStepTimer iostats_step_timer_##metric(&(get_iostats_context()->metric)); \
|
||||
#define IOSTATS_TIMER_GUARD(metric) \
|
||||
PerfStepTimer iostats_step_timer_##metric(&(iostats_context.metric)); \
|
||||
iostats_step_timer_##metric.Start();
|
||||
|
||||
#else // ROCKSDB_SUPPORT_THREAD_LOCAL
|
||||
|
@ -9,6 +9,16 @@
|
||||
#include "util/stop_watch.h"
|
||||
|
||||
namespace rocksdb {
|
||||
#if defined(NPERF_CONTEXT) || !defined(ROCKSDB_SUPPORT_THREAD_LOCAL)
|
||||
extern PerfContext perf_context;
|
||||
#else
|
||||
#if defined(OS_SOLARIS)
|
||||
extern __thread PerfContext perf_context_;
|
||||
#define perf_context (*get_perf_context());
|
||||
#else
|
||||
extern __thread PerfContext perf_context;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(NPERF_CONTEXT)
|
||||
|
||||
@ -27,14 +37,14 @@ namespace rocksdb {
|
||||
#define PERF_TIMER_START(metric) perf_step_timer_##metric.Start();
|
||||
|
||||
// Declare and set start time of the timer
|
||||
#define PERF_TIMER_GUARD(metric) \
|
||||
PerfStepTimer perf_step_timer_##metric(&(get_perf_context()->metric)); \
|
||||
#define PERF_TIMER_GUARD(metric) \
|
||||
PerfStepTimer perf_step_timer_##metric(&(perf_context.metric)); \
|
||||
perf_step_timer_##metric.Start();
|
||||
|
||||
#define PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD(metric, condition) \
|
||||
PerfStepTimer perf_step_timer_##metric(&(get_perf_context()->metric), true); \
|
||||
if ((condition)) { \
|
||||
perf_step_timer_##metric.Start(); \
|
||||
#define PERF_CONDITIONAL_TIMER_FOR_MUTEX_GUARD(metric, condition) \
|
||||
PerfStepTimer perf_step_timer_##metric(&(perf_context.metric), true); \
|
||||
if ((condition)) { \
|
||||
perf_step_timer_##metric.Start(); \
|
||||
}
|
||||
|
||||
// Update metric with time elapsed since last START. start time is reset
|
||||
@ -44,7 +54,7 @@ namespace rocksdb {
|
||||
// Increase metric value
|
||||
#define PERF_COUNTER_ADD(metric, value) \
|
||||
if (perf_level >= PerfLevel::kEnableCount) { \
|
||||
get_perf_context()->metric += value; \
|
||||
perf_context.metric += value; \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user