Packages
rocksdb
3.1.1
3.1.1
3.1.0
3.0.0
2.6.2
2.6.1
retired
2.6.0
retired
2.5.0
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.0
0.26.2
0.26.1
0.26.0
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
RocksDB for Erlang
Current section
Files
Jump to
Current section
Files
deps/rocksdb/monitoring/file_read_sample.h
// 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 "db/version_edit.h"
#include "test_util/sync_point.h"
#include "util/random.h"
namespace ROCKSDB_NAMESPACE {
static const uint32_t kFileReadSampleRate = 1024;
static const uint32_t kFileReadNextSampleRate =
kFileReadSampleRate * 64; // Must be kept a power of 2
inline bool should_sample_file_read() {
bool result = (Random::GetTLSInstance()->Next() % kFileReadSampleRate == 307);
TEST_SYNC_POINT_CALLBACK("should_sample_file_read:override", &result);
return result;
}
inline bool should_sample_file_read_next() {
// Decrease probability of sampling next() to discount it as it is cheaper
// than seek()
thread_local uint32_t counter = 0;
bool result = (++counter & (kFileReadNextSampleRate - 1)) == 0;
TEST_SYNC_POINT_CALLBACK("should_sample_file_read:override", &result);
return result;
}
inline void sample_file_read_inc(const FileMetaData* meta) {
meta->stats.num_reads_sampled.fetch_add(kFileReadSampleRate,
std::memory_order_relaxed);
}
inline void sample_collapsible_entry_file_read_inc(const FileMetaData* meta) {
meta->stats.num_collapsible_entry_reads_sampled.fetch_add(
kFileReadSampleRate, std::memory_order_relaxed);
}
} // namespace ROCKSDB_NAMESPACE