YugabyteDB (2.13.0.0-b42, bfc6a6643e7399ac8a0e81d06a3ee6d6571b33ab)

Coverage Report

Created: 2022-03-09 17:30

/Users/deen/code/yugabyte-db/src/yb/rocksdb/util/perf_context.cc
Line
Count
Source
1
//  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
2
//  This source code is licensed under the BSD-style license found in the
3
//  LICENSE file in the root directory of this source tree. An additional grant
4
//  of patent rights can be found in the PATENTS file in the same directory.
5
//
6
// The following only applies to changes made to this file as part of YugaByte development.
7
//
8
// Portions Copyright (c) YugaByte, Inc.
9
//
10
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
11
// in compliance with the License.  You may obtain a copy of the License at
12
//
13
// http://www.apache.org/licenses/LICENSE-2.0
14
//
15
// Unless required by applicable law or agreed to in writing, software distributed under the License
16
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
17
// or implied.  See the License for the specific language governing permissions and limitations
18
// under the License.
19
//
20
#include <sstream>
21
22
#include "yb/rocksdb/perf_context.h"
23
24
namespace rocksdb {
25
26
#if defined(NPERF_CONTEXT) || defined(IOS_CROSS_COMPILE)
27
  PerfContext perf_context;
28
#elif _WIN32
29
  __declspec(thread) PerfContext perf_context;
30
#else
31
  __thread PerfContext perf_context;
32
#endif
33
34
842k
void PerfContext::Reset() {
35
842k
#if !defined(NPERF_CONTEXT) && !defined(IOS_CROSS_COMPILE)
36
842k
  user_key_comparison_count = 0;
37
842k
  block_cache_hit_count = 0;
38
842k
  block_read_count = 0;
39
842k
  block_read_byte = 0;
40
842k
  block_read_time = 0;
41
842k
  block_checksum_time = 0;
42
842k
  block_decompress_time = 0;
43
842k
  internal_key_skipped_count = 0;
44
842k
  internal_delete_skipped_count = 0;
45
842k
  write_wal_time = 0;
46
47
842k
  get_snapshot_time = 0;
48
842k
  get_from_memtable_time = 0;
49
842k
  get_from_memtable_count = 0;
50
842k
  get_post_process_time = 0;
51
842k
  get_from_output_files_time = 0;
52
842k
  seek_on_memtable_time = 0;
53
842k
  seek_on_memtable_count = 0;
54
842k
  seek_child_seek_time = 0;
55
842k
  seek_child_seek_count = 0;
56
842k
  seek_min_heap_time = 0;
57
842k
  seek_internal_seek_time = 0;
58
842k
  find_next_user_entry_time = 0;
59
842k
  write_pre_and_post_process_time = 0;
60
842k
  write_memtable_time = 0;
61
842k
  write_delay_time = 0;
62
842k
  db_mutex_lock_nanos = 0;
63
842k
  db_condition_wait_nanos = 0;
64
842k
  merge_operator_time_nanos = 0;
65
842k
  read_index_block_nanos = 0;
66
842k
  read_filter_block_nanos = 0;
67
842k
  new_table_block_iter_nanos = 0;
68
842k
  new_table_iterator_nanos = 0;
69
842k
  block_seek_nanos = 0;
70
842k
  find_table_nanos = 0;
71
842k
  bloom_memtable_hit_count = 0;
72
842k
  bloom_memtable_miss_count = 0;
73
842k
  bloom_sst_hit_count = 0;
74
842k
  bloom_sst_miss_count = 0;
75
842k
#endif
76
842k
}
77
78
#define PERF_CONTEXT_OUTPUT(counter)             \
79
76
  if (!exclude_zero_counters || (counter > 0)) { \
80
39
    ss << #counter << " = " << counter << ", ";  \
81
39
  }
82
83
2
std::string PerfContext::ToString(bool exclude_zero_counters) const {
84
#if defined(NPERF_CONTEXT) || defined(IOS_CROSS_COMPILE)
85
  return "";
86
#else
87
2
  std::ostringstream ss;
88
2
  PERF_CONTEXT_OUTPUT(user_key_comparison_count);
89
2
  PERF_CONTEXT_OUTPUT(block_cache_hit_count);
90
2
  PERF_CONTEXT_OUTPUT(block_read_count);
91
2
  PERF_CONTEXT_OUTPUT(block_read_byte);
92
2
  PERF_CONTEXT_OUTPUT(block_read_time);
93
2
  PERF_CONTEXT_OUTPUT(block_checksum_time);
94
2
  PERF_CONTEXT_OUTPUT(block_decompress_time);
95
2
  PERF_CONTEXT_OUTPUT(internal_key_skipped_count);
96
2
  PERF_CONTEXT_OUTPUT(internal_delete_skipped_count);
97
2
  PERF_CONTEXT_OUTPUT(write_wal_time);
98
2
  PERF_CONTEXT_OUTPUT(get_snapshot_time);
99
2
  PERF_CONTEXT_OUTPUT(get_from_memtable_time);
100
2
  PERF_CONTEXT_OUTPUT(get_from_memtable_count);
101
2
  PERF_CONTEXT_OUTPUT(get_post_process_time);
102
2
  PERF_CONTEXT_OUTPUT(get_from_output_files_time);
103
2
  PERF_CONTEXT_OUTPUT(seek_on_memtable_time);
104
2
  PERF_CONTEXT_OUTPUT(seek_on_memtable_count);
105
2
  PERF_CONTEXT_OUTPUT(seek_child_seek_time);
106
2
  PERF_CONTEXT_OUTPUT(seek_child_seek_count);
107
2
  PERF_CONTEXT_OUTPUT(seek_min_heap_time);
108
2
  PERF_CONTEXT_OUTPUT(seek_internal_seek_time);
109
2
  PERF_CONTEXT_OUTPUT(find_next_user_entry_time);
110
2
  PERF_CONTEXT_OUTPUT(write_pre_and_post_process_time);
111
2
  PERF_CONTEXT_OUTPUT(write_memtable_time);
112
2
  PERF_CONTEXT_OUTPUT(db_mutex_lock_nanos);
113
2
  PERF_CONTEXT_OUTPUT(db_condition_wait_nanos);
114
2
  PERF_CONTEXT_OUTPUT(merge_operator_time_nanos);
115
2
  PERF_CONTEXT_OUTPUT(write_delay_time);
116
2
  PERF_CONTEXT_OUTPUT(read_index_block_nanos);
117
2
  PERF_CONTEXT_OUTPUT(read_filter_block_nanos);
118
2
  PERF_CONTEXT_OUTPUT(new_table_block_iter_nanos);
119
2
  PERF_CONTEXT_OUTPUT(new_table_iterator_nanos);
120
2
  PERF_CONTEXT_OUTPUT(block_seek_nanos);
121
2
  PERF_CONTEXT_OUTPUT(find_table_nanos);
122
2
  PERF_CONTEXT_OUTPUT(bloom_memtable_hit_count);
123
2
  PERF_CONTEXT_OUTPUT(bloom_memtable_miss_count);
124
2
  PERF_CONTEXT_OUTPUT(bloom_sst_hit_count);
125
2
  PERF_CONTEXT_OUTPUT(bloom_sst_miss_count);
126
2
  return ss.str();
127
2
#endif
128
2
}
129
130
} // namespace rocksdb