You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2025/06/25 03:34:39 UTC
(iotdb) branch add_wal_entry_for_one_tsfile_metric created (now 7dc2d7eab4e)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a change to branch add_wal_entry_for_one_tsfile_metric
in repository https://gitbox.apache.org/repos/asf/iotdb.git
at 7dc2d7eab4e Add WAL entry number for one TsFile metric
This branch includes the following new commits:
new 7dc2d7eab4e Add WAL entry number for one TsFile metric
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(iotdb) 01/01: Add WAL entry number for one TsFile metric
Posted by ha...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch add_wal_entry_for_one_tsfile_metric
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 7dc2d7eab4ef1cd5eaf1edabfe3e805cc188f14d
Author: HTHou <ha...@apache.org>
AuthorDate: Wed Jun 25 11:34:17 2025 +0800
Add WAL entry number for one TsFile metric
---
.../org/apache/iotdb/db/service/metrics/WritingMetrics.java | 13 +++++++++++++
.../storageengine/dataregion/memtable/TsFileProcessor.java | 8 ++++++++
2 files changed, 21 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 2481519018f..15686b89546 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,
@@ -918,6 +927,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 861b72c923a..b2c96a87f3b 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
@@ -204,6 +204,8 @@ public class TsFileProcessor {
public static final int MEMTABLE_NOT_EXIST = -1;
+ private int walEntryNum = 0;
+
@SuppressWarnings("squid:S107")
public TsFileProcessor(
String dataRegionName,
@@ -318,6 +320,7 @@ public class TsFileProcessor {
// recordScheduleWalCost
infoForMetrics[2] += System.nanoTime() - startTime;
}
+ walEntryNum++;
startTime = System.nanoTime();
@@ -414,6 +417,7 @@ public class TsFileProcessor {
// recordScheduleWalCost
infoForMetrics[2] += System.nanoTime() - startTime;
}
+ walEntryNum++;
startTime = System.nanoTime();
@@ -586,6 +590,7 @@ public class TsFileProcessor {
// recordScheduleWalCost
infoForMetrics[2] += System.nanoTime() - startTime;
}
+ walEntryNum++;
startTime = System.nanoTime();
@@ -1207,10 +1212,12 @@ public class TsFileProcessor {
}
public WALFlushListener logDeleteDataNodeInWAL(DeleteDataNode deleteDataNode) {
+ walEntryNum++;
return walNode.log(workMemTable.getMemTableId(), deleteDataNode);
}
public WALFlushListener logDeleteDataNodeInWAL(RelationalDeleteDataNode deleteDataNode) {
+ walEntryNum++;
return walNode.log(workMemTable.getMemTableId(), deleteDataNode);
}
@@ -1436,6 +1443,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);
}