You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2025/07/28 02:03:12 UTC
(iotdb) branch dev/1.3 updated: Add WAL entry number for one TsFile metric (#15818) (#16011)
This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 5ea0fe53725 Add WAL entry number for one TsFile metric (#15818) (#16011)
5ea0fe53725 is described below
commit 5ea0fe537255bc079b5cc6e5c0b09cfbdb8f5c50
Author: Haonan <hh...@outlook.com>
AuthorDate: Mon Jul 28 10:03:05 2025 +0800
Add WAL entry number for one TsFile metric (#15818) (#16011)
---
.../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);
}