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 d3cda241a9fda..69cb7bb41dde3 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 @@ private void unbindFlushSubTaskMetrics(AbstractMetricService metricService) { 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 @@ private void bindWALMetrics(AbstractMetricService metricService) { 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 @@ private void unbindWALMetrics(AbstractMetricService metricService) { 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 void recordWALBufferEntriesCount(long count) { 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 451986b2f52d8..702b0fdc8adc2 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 void insert(InsertRowNode insertRowNode, long[] costsForMetrics) // recordScheduleWalCost costsForMetrics[2] += System.nanoTime() - startTime; } + walEntryNum++; startTime = System.nanoTime(); @@ -413,6 +416,7 @@ public void insert(InsertRowsNode insertRowsNode, long[] costsForMetrics) // recordScheduleWalCost costsForMetrics[2] += System.nanoTime() - startTime; } + walEntryNum++; startTime = System.nanoTime(); @@ -528,6 +532,7 @@ public void insertTablet( } finally { PERFORMANCE_OVERVIEW_METRICS.recordScheduleWalCost(System.nanoTime() - startTime); } + walEntryNum++; startTime = System.nanoTime(); @@ -1059,6 +1064,7 @@ public void deleteDataInMemory(Deletion deletion, Set devicePaths) } public WALFlushListener logDeleteDataNodeInWAL(DeleteDataNode deleteDataNode) { + walEntryNum++; return walNode.log(workMemTable.getMemTableId(), deleteDataNode); } @@ -1277,6 +1283,7 @@ private Future addAMemtableIntoFlushingList(IMemTable tobeFlushed) throws IOE .recordMemTableLiveDuration(System.currentTimeMillis() - getWorkMemTableCreatedTime()); WritingMetrics.getInstance() .recordActiveMemTableCount(dataRegionInfo.getDataRegion().getDataRegionId(), -1); + WritingMetrics.getInstance().recordWALEntryNumForOneTsFile(walEntryNum); workMemTable = null; return FlushManager.getInstance().registerTsFileProcessor(this); }