This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch cp_wal_entry_metric in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 9444341df2003e1b60d416137cad32eaa0930528 Author: Haonan <[email protected]> AuthorDate: Fri Jun 27 11:34:33 2025 +0800 Add WAL entry number for one TsFile metric (#15818) --- .../org/apache/iotdb/db/service/metrics/WritingMetrics.java | 13 +++++++++++++ .../storageengine/dataregion/memtable/TsFileProcessor.java | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java index d3cda241a9f..69cb7bb41dd 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/WritingMetrics.java @@ -185,11 +185,13 @@ public class WritingMetrics implements IMetricSet { public static final String READ_WAL_BUFFER_COST_NS = "read_wal_buffer_cost"; public static final String WRITE_WAL_BUFFER_COST_NS = "write_wal_buffer_cost"; public static final String ENTRIES_COUNT = "entries_count"; + public static final String WAL_ENTRY_NUM_FOR_ONE_TSFILE = "wal_entry_num_for_one_tsfile"; public static final String WAL_QUEUE_CURRENT_MEM_COST = "wal_queue_current_mem_cost"; public static final String WAL_QUEUE_MAX_MEM_COST = "wal_queue_max_mem_cost"; private Histogram usedRatioHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; private Histogram entriesCountHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; + private Histogram walEntryNumForOneTsFileHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; private Histogram serializedWALBufferSizeHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; private Histogram wroteWALBufferSizeHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; private Histogram walCompressCostHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; @@ -216,6 +218,12 @@ public class WritingMetrics implements IMetricSet { MetricLevel.IMPORTANT, Tag.NAME.toString(), ENTRIES_COUNT); + walEntryNumForOneTsFileHistogram = + metricService.getOrCreateHistogram( + Metric.WAL_BUFFER.toString(), + MetricLevel.IMPORTANT, + Tag.NAME.toString(), + WAL_ENTRY_NUM_FOR_ONE_TSFILE); serializedWALBufferSizeHistogram = metricService.getOrCreateHistogram( @@ -280,6 +288,7 @@ public class WritingMetrics implements IMetricSet { MetricType.AUTO_GAUGE, Metric.WAL_NODE_NUM.toString(), Tag.NAME.toString(), WAL_NODES_NUM); usedRatioHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; entriesCountHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; + walEntryNumForOneTsFileHistogram = DoNothingMetricManager.DO_NOTHING_HISTOGRAM; Arrays.asList( USED_RATIO, ENTRIES_COUNT, @@ -920,6 +929,10 @@ public class WritingMetrics implements IMetricSet { entriesCountHistogram.update(count); } + public void recordWALEntryNumForOneTsFile(long count) { + walEntryNumForOneTsFileHistogram.update(count); + } + public void recordWALQueueMaxMemorySize(long size) { walQueueMaxMemSizeGauge.set(size); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java index 451986b2f52..702b0fdc8ad 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java @@ -207,6 +207,8 @@ public class TsFileProcessor { public static final int MEMTABLE_NOT_EXIST = -1; + private int walEntryNum = 0; + @SuppressWarnings("squid:S107") public TsFileProcessor( String storageGroupName, @@ -315,6 +317,7 @@ public class TsFileProcessor { // recordScheduleWalCost costsForMetrics[2] += System.nanoTime() - startTime; } + walEntryNum++; startTime = System.nanoTime(); @@ -413,6 +416,7 @@ public class TsFileProcessor { // recordScheduleWalCost costsForMetrics[2] += System.nanoTime() - startTime; } + walEntryNum++; startTime = System.nanoTime(); @@ -528,6 +532,7 @@ public class TsFileProcessor { } finally { PERFORMANCE_OVERVIEW_METRICS.recordScheduleWalCost(System.nanoTime() - startTime); } + walEntryNum++; startTime = System.nanoTime(); @@ -1059,6 +1064,7 @@ public class TsFileProcessor { } public WALFlushListener logDeleteDataNodeInWAL(DeleteDataNode deleteDataNode) { + walEntryNum++; return walNode.log(workMemTable.getMemTableId(), deleteDataNode); } @@ -1277,6 +1283,7 @@ public class TsFileProcessor { .recordMemTableLiveDuration(System.currentTimeMillis() - getWorkMemTableCreatedTime()); WritingMetrics.getInstance() .recordActiveMemTableCount(dataRegionInfo.getDataRegion().getDataRegionId(), -1); + WritingMetrics.getInstance().recordWALEntryNumForOneTsFile(walEntryNum); workMemTable = null; return FlushManager.getInstance().registerTsFileProcessor(this); }
