mirror of
https://github.com/facebook/rocksdb.git
synced 2024-12-02 10:15:54 +00:00
da1c64b6e7
Summary: Introduce the first CPU timing counter, perf_context.get_cpu_nanos. This opens a door to more CPU counters in the future. Only Posix Env has it implemented using clock_gettime() with CLOCK_THREAD_CPUTIME_ID. How accurate the counter is depends on the platform. Make PerfStepTimer to take an Env as an argument, and sometimes pass it in. The direct reason is to make the unit tests to use SpecialEnv where we can ingest logic there. But in long term, this is a good change. Pull Request resolved: https://github.com/facebook/rocksdb/pull/4741 Differential Revision: D13287798 Pulled By: siying fbshipit-source-id: 090361049d9d5095d1d1a369fe1338d2e2e1c73f
34 lines
1.2 KiB
C++
34 lines
1.2 KiB
C++
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
// 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).
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <string>
|
|
|
|
namespace rocksdb {
|
|
|
|
// How much perf stats to collect. Affects perf_context and iostats_context.
|
|
enum PerfLevel : unsigned char {
|
|
kUninitialized = 0, // unknown setting
|
|
kDisable = 1, // disable perf stats
|
|
kEnableCount = 2, // enable only count stats
|
|
kEnableTimeExceptForMutex = 3, // Other than count stats, also enable time
|
|
// stats except for mutexes
|
|
// Other than time, also measure CPU time counters. Still don't measure
|
|
// time (neither wall time nor CPU time) for mutexes.
|
|
kEnableTimeAndCPUTimeExceptForMutex = 4,
|
|
kEnableTime = 5, // enable count and time stats
|
|
kOutOfBounds = 6 // N.B. Must always be the last value!
|
|
};
|
|
|
|
// set the perf stats level for current thread
|
|
void SetPerfLevel(PerfLevel level);
|
|
|
|
// get current perf stats level for current thread
|
|
PerfLevel GetPerfLevel();
|
|
|
|
} // namespace rocksdb
|