Skip to content

Commit 848a6cd

Browse files
committed
address review comments
1 parent 7abfe3e commit 848a6cd

11 files changed

Lines changed: 322 additions & 280 deletions

File tree

clients/da-vinci-client/src/main/java/com/linkedin/davinci/stats/RocksDBMemoryOtelMetricEntity.java

Lines changed: 95 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -16,124 +16,157 @@
1616
* OTel metric entities for RocksDB memory consumption stats.
1717
*
1818
* <p>Maps 1:1 from Tehuti async gauges in {@link RocksDBMemoryStats} to OTel ASYNC_GAUGE metrics.
19+
* OTel names use hierarchical dot-separated naming grouped by RocksDB subsystem
20+
* (memtable, compaction, flush, block_cache, sst, blob, rmd_block_cache).
1921
*
2022
* <p>Constants that correspond to a RocksDB property (queried via
2123
* {@link com.linkedin.davinci.store.rocksdb.RocksDBStoragePartition#getRocksDBStatValue})
2224
* carry the original hyphenated property name (e.g. {@code "rocksdb.num-immutable-mem-table"})
2325
* and are discoverable via {@link #fromRocksDBProperty(String)}.
2426
*/
2527
public enum RocksDBMemoryOtelMetricEntity implements ModuleMetricEntityInterface {
28+
// Memtable metrics
2629
NUM_IMMUTABLE_MEM_TABLE(
27-
"rocksdb.num_immutable_mem_table", MetricUnit.NUMBER, "Number of immutable memtables",
28-
"rocksdb.num-immutable-mem-table"
30+
"rocksdb.memtable.immutable.unflushed_count", MetricUnit.NUMBER,
31+
"Number of immutable memtables that have not yet been flushed", "rocksdb.num-immutable-mem-table"
2932
),
3033
MEM_TABLE_FLUSH_PENDING(
31-
"rocksdb.mem_table_flush_pending", MetricUnit.NUMBER, "Number of pending memtable flushes",
34+
"rocksdb.memtable.immutable.flush_pending", MetricUnit.NUMBER, "1 if a memtable flush is pending, 0 otherwise",
3235
"rocksdb.mem-table-flush-pending"
3336
),
34-
COMPACTION_PENDING(
35-
"rocksdb.compaction_pending", MetricUnit.NUMBER, "Number of pending compactions", "rocksdb.compaction-pending"
36-
),
37-
BACKGROUND_ERRORS(
38-
"rocksdb.background_errors", MetricUnit.NUMBER, "Number of background errors", "rocksdb.background-errors"
39-
),
4037
CUR_SIZE_ACTIVE_MEM_TABLE(
41-
"rocksdb.cur_size_active_mem_table", MetricUnit.BYTES, "Current size of active memtables",
38+
"rocksdb.memtable.active.size", MetricUnit.BYTES, "Approximate size of the active memtable in bytes",
4239
"rocksdb.cur-size-active-mem-table"
4340
),
4441
CUR_SIZE_ALL_MEM_TABLES(
45-
"rocksdb.cur_size_all_mem_tables", MetricUnit.BYTES, "Current size of all memtables",
46-
"rocksdb.cur-size-all-mem-tables"
42+
"rocksdb.memtable.active_and_unflushed_immutable.size", MetricUnit.BYTES,
43+
"Approximate size of active and unflushed immutable memtables in bytes", "rocksdb.cur-size-all-mem-tables"
4744
),
4845
SIZE_ALL_MEM_TABLES(
49-
"rocksdb.size_all_mem_tables", MetricUnit.BYTES, "Total size of all memtables", "rocksdb.size-all-mem-tables"
46+
"rocksdb.memtable.all.size", MetricUnit.BYTES,
47+
"Approximate size of active, unflushed immutable, and pinned immutable memtables in bytes",
48+
"rocksdb.size-all-mem-tables"
5049
),
5150
NUM_ENTRIES_ACTIVE_MEM_TABLE(
52-
"rocksdb.num_entries_active_mem_table", MetricUnit.NUMBER, "Number of entries in active memtables",
51+
"rocksdb.memtable.active.entry_count", MetricUnit.NUMBER, "Total number of entries in the active memtable",
5352
"rocksdb.num-entries-active-mem-table"
5453
),
55-
NUM_ENTRIES_IMM_MEM_TABLES(
56-
"rocksdb.num_entries_imm_mem_tables", MetricUnit.NUMBER, "Number of entries in immutable memtables",
57-
"rocksdb.num-entries-imm-mem-tables"
54+
NUM_ENTRIES_IMMUTABLE_MEM_TABLES(
55+
"rocksdb.memtable.immutable.entry_count", MetricUnit.NUMBER,
56+
"Total number of entries in the unflushed immutable memtables", "rocksdb.num-entries-imm-mem-tables"
5857
),
5958
NUM_DELETES_ACTIVE_MEM_TABLE(
60-
"rocksdb.num_deletes_active_mem_table", MetricUnit.NUMBER, "Number of deletes in active memtables",
61-
"rocksdb.num-deletes-active-mem-table"
59+
"rocksdb.memtable.active.delete_count", MetricUnit.NUMBER,
60+
"Total number of delete entries in the active memtable", "rocksdb.num-deletes-active-mem-table"
61+
),
62+
NUM_DELETES_IMMUTABLE_MEM_TABLES(
63+
"rocksdb.memtable.immutable.delete_count", MetricUnit.NUMBER,
64+
"Total number of delete entries in the unflushed immutable memtables", "rocksdb.num-deletes-imm-mem-tables"
6265
),
63-
NUM_DELETES_IMM_MEM_TABLES(
64-
"rocksdb.num_deletes_imm_mem_tables", MetricUnit.NUMBER, "Number of deletes in immutable memtables",
65-
"rocksdb.num-deletes-imm-mem-tables"
66+
67+
// Compaction metrics
68+
COMPACTION_PENDING(
69+
"rocksdb.compaction.pending", MetricUnit.NUMBER, "1 if at least one compaction is pending, 0 otherwise",
70+
"rocksdb.compaction-pending"
71+
),
72+
ESTIMATE_PENDING_COMPACTION_BYTES(
73+
"rocksdb.compaction.estimated_pending_bytes", MetricUnit.BYTES,
74+
"Estimated total bytes compaction needs to rewrite to get all levels down to target size",
75+
"rocksdb.estimate-pending-compaction-bytes"
76+
),
77+
NUM_RUNNING_COMPACTIONS(
78+
"rocksdb.compaction.running_count", MetricUnit.NUMBER, "Number of currently running compactions",
79+
"rocksdb.num-running-compactions"
80+
),
81+
82+
// Flush metrics
83+
NUM_RUNNING_FLUSHES(
84+
"rocksdb.flush.running_count", MetricUnit.NUMBER, "Number of currently running flushes",
85+
"rocksdb.num-running-flushes"
86+
),
87+
88+
// General DB metrics
89+
BACKGROUND_ERRORS(
90+
"rocksdb.background_errors", MetricUnit.NUMBER, "Accumulated number of background errors",
91+
"rocksdb.background-errors"
6692
),
6793
ESTIMATE_NUM_KEYS(
68-
"rocksdb.estimate_num_keys", MetricUnit.NUMBER, "Estimated number of keys", "rocksdb.estimate-num-keys"
94+
"rocksdb.keys.estimated_count", MetricUnit.NUMBER,
95+
"Estimated number of total keys in the active and unflushed immutable memtables and storage",
96+
"rocksdb.estimate-num-keys"
6997
),
7098
ESTIMATE_TABLE_READERS_MEM(
71-
"rocksdb.estimate_table_readers_mem", MetricUnit.BYTES, "Estimated memory used by table readers",
72-
"rocksdb.estimate-table-readers-mem"
73-
), NUM_SNAPSHOTS("rocksdb.num_snapshots", MetricUnit.NUMBER, "Number of snapshots", "rocksdb.num-snapshots"),
99+
"rocksdb.table_readers.estimated_memory", MetricUnit.BYTES,
100+
"Estimated memory used for reading SST tables, excluding block cache", "rocksdb.estimate-table-readers-mem"
101+
),
102+
NUM_SNAPSHOTS(
103+
"rocksdb.snapshots.count", MetricUnit.NUMBER, "Number of unreleased snapshots of the database",
104+
"rocksdb.num-snapshots"
105+
),
74106
NUM_LIVE_VERSIONS(
75-
"rocksdb.num_live_versions", MetricUnit.NUMBER, "Number of live versions", "rocksdb.num-live-versions"
107+
"rocksdb.versions.live_count", MetricUnit.NUMBER,
108+
"Number of live versions. More live versions often mean more SST files are held from being deleted",
109+
"rocksdb.num-live-versions"
76110
),
77111
ESTIMATE_LIVE_DATA_SIZE(
78-
"rocksdb.estimate_live_data_size", MetricUnit.BYTES, "Estimated live data size", "rocksdb.estimate-live-data-size"
112+
"rocksdb.data.estimated_live_size", MetricUnit.BYTES,
113+
"Estimated amount of live data in bytes, including blob file live bytes", "rocksdb.estimate-live-data-size"
79114
),
80115
MIN_LOG_NUMBER_TO_KEEP(
81-
"rocksdb.min_log_number_to_keep", MetricUnit.NUMBER, "Minimum log number to keep",
116+
"rocksdb.min_log_number_to_keep", MetricUnit.NUMBER, "Minimum log number of the log files that should be kept",
82117
"rocksdb.min-log-number-to-keep"
83118
),
119+
ACTUAL_DELAYED_WRITE_RATE(
120+
"rocksdb.actual_delayed_write_rate", MetricUnit.NUMBER,
121+
"Current actual delayed write rate in bytes per second. 0 means no delay", "rocksdb.actual-delayed-write-rate"
122+
),
123+
124+
// SST file metrics
84125
TOTAL_SST_FILES_SIZE(
85-
"rocksdb.total_sst_files_size", MetricUnit.BYTES, "Total SST file size", "rocksdb.total-sst-files-size"
126+
"rocksdb.sst.total_size", MetricUnit.BYTES, "Total size of all SST files across all versions",
127+
"rocksdb.total-sst-files-size"
86128
),
87129
LIVE_SST_FILES_SIZE(
88-
"rocksdb.live_sst_files_size", MetricUnit.BYTES, "Live SST file size", "rocksdb.live-sst-files-size"
89-
),
90-
ESTIMATE_PENDING_COMPACTION_BYTES(
91-
"rocksdb.estimate_pending_compaction_bytes", MetricUnit.BYTES, "Estimated pending compaction bytes",
92-
"rocksdb.estimate-pending-compaction-bytes"
93-
),
94-
NUM_RUNNING_COMPACTIONS(
95-
"rocksdb.num_running_compactions", MetricUnit.NUMBER, "Number of running compactions",
96-
"rocksdb.num-running-compactions"
97-
),
98-
NUM_RUNNING_FLUSHES(
99-
"rocksdb.num_running_flushes", MetricUnit.NUMBER, "Number of running flushes", "rocksdb.num-running-flushes"
100-
),
101-
ACTUAL_DELAYED_WRITE_RATE(
102-
"rocksdb.actual_delayed_write_rate", MetricUnit.NUMBER, "Actual delayed write rate",
103-
"rocksdb.actual-delayed-write-rate"
130+
"rocksdb.sst.live_size", MetricUnit.BYTES, "Total size of all SST files in the current version",
131+
"rocksdb.live-sst-files-size"
104132
),
105133

106-
// Block cache properties
134+
// Block cache metrics
107135
BLOCK_CACHE_CAPACITY(
108-
"rocksdb.block_cache_capacity", MetricUnit.BYTES, "Block cache capacity", "rocksdb.block-cache-capacity"
136+
"rocksdb.block_cache.capacity", MetricUnit.BYTES, "Block cache capacity", "rocksdb.block-cache-capacity"
137+
),
138+
BLOCK_CACHE_USAGE(
139+
"rocksdb.block_cache.usage", MetricUnit.BYTES, "Memory size for the entries residing in block cache",
140+
"rocksdb.block-cache-usage"
109141
),
110142
BLOCK_CACHE_PINNED_USAGE(
111-
"rocksdb.block_cache_pinned_usage", MetricUnit.BYTES, "Block cache pinned usage",
143+
"rocksdb.block_cache.pinned_usage", MetricUnit.BYTES, "Memory size for the entries being pinned in block cache",
112144
"rocksdb.block-cache-pinned-usage"
113-
), BLOCK_CACHE_USAGE("rocksdb.block_cache_usage", MetricUnit.BYTES, "Block cache usage", "rocksdb.block-cache-usage"),
145+
),
114146

115147
// Blob file metrics
116-
NUM_BLOB_FILES("rocksdb.num_blob_files", MetricUnit.NUMBER, "Number of blob files", "rocksdb.num-blob-files"),
148+
NUM_BLOB_FILES(
149+
"rocksdb.blob.file_count", MetricUnit.NUMBER, "Number of blob files in the current version",
150+
"rocksdb.num-blob-files"
151+
),
117152
TOTAL_BLOB_FILE_SIZE(
118-
"rocksdb.total_blob_file_size", MetricUnit.BYTES, "Total blob file size", "rocksdb.total-blob-file-size"
153+
"rocksdb.blob.total_size", MetricUnit.BYTES, "Total size of all blob files across all versions",
154+
"rocksdb.total-blob-file-size"
119155
),
120156
LIVE_BLOB_FILE_SIZE(
121-
"rocksdb.live_blob_file_size", MetricUnit.BYTES, "Live blob file size", "rocksdb.live-blob-file-size"
157+
"rocksdb.blob.live_size", MetricUnit.BYTES, "Total size of all blob files in the current version",
158+
"rocksdb.live-blob-file-size"
122159
),
123160
LIVE_BLOB_FILE_GARBAGE_SIZE(
124-
"rocksdb.live_blob_file_garbage_size", MetricUnit.BYTES, "Live blob file garbage size",
161+
"rocksdb.blob.garbage_size", MetricUnit.BYTES, "Total amount of garbage in the blob files in the current version",
125162
"rocksdb.live-blob-file-garbage-size"
126163
),
127164

128-
// Server-level memory metrics (not backed by a RocksDB property)
129-
MEMORY_LIMIT("rocksdb.memory_limit", MetricUnit.BYTES, "RocksDB memory limit for this server"),
130-
MEMORY_USAGE("rocksdb.memory_usage", MetricUnit.BYTES, "RocksDB SST file manager total size"),
131-
132165
// RMD (Replication Metadata) block cache metrics (not backed by a RocksDB property)
133-
RMD_BLOCK_CACHE_CAPACITY("rocksdb.rmd_block_cache_capacity", MetricUnit.BYTES, "RMD block cache capacity"),
134-
RMD_BLOCK_CACHE_USAGE("rocksdb.rmd_block_cache_usage", MetricUnit.BYTES, "RMD block cache usage"),
166+
RMD_BLOCK_CACHE_CAPACITY("rocksdb.rmd_block_cache.capacity", MetricUnit.BYTES, "RMD block cache capacity"),
167+
RMD_BLOCK_CACHE_USAGE("rocksdb.rmd_block_cache.usage", MetricUnit.BYTES, "RMD block cache usage"),
135168
RMD_BLOCK_CACHE_PINNED_USAGE(
136-
"rocksdb.rmd_block_cache_pinned_usage", MetricUnit.BYTES, "RMD block cache pinned usage"
169+
"rocksdb.rmd_block_cache.pinned_usage", MetricUnit.BYTES, "RMD block cache pinned usage"
137170
);
138171

139172
/**
@@ -162,7 +195,7 @@ public String getRocksDBProperty() {
162195
return rocksDBProperty;
163196
}
164197

165-
/** Constructor for metrics not backed by a RocksDB property (MEMORY_LIMIT, MEMORY_USAGE, RMD_*). */
198+
/** Constructor for metrics not backed by a RocksDB property (RMD_*). */
166199
RocksDBMemoryOtelMetricEntity(String metricName, MetricUnit unit, String description) {
167200
this(metricName, unit, description, null);
168201
}

0 commit comments

Comments
 (0)