You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by zy...@apache.org on 2022/12/20 12:52:37 UTC

[iotdb] branch master updated: [IOTDB-5232] Add schema memory metric (#8545)

This is an automated email from the ASF dual-hosted git repository.

zyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new f65389577c [IOTDB-5232] Add schema memory metric (#8545)
f65389577c is described below

commit f65389577cd1dac018bde1199c68b576b650f1f6
Author: Marcos_Zyk <38...@users.noreply.github.com>
AuthorDate: Tue Dec 20 20:52:32 2022 +0800

    [IOTDB-5232] Add schema memory metric (#8545)
    
    [IOTDB-5232] Add schema memory metric (#8545)
---
 docs/UserGuide/Monitor-Alert/Metric-Tool.md        | 12 ++++---
 docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md     | 12 ++++---
 .../db/metadata/rescon/SchemaResourceManager.java  |  4 ++-
 ...rics.java => SchemaResourceManagerMetrics.java} | 41 +++++++++++++++++++---
 4 files changed, 54 insertions(+), 15 deletions(-)

diff --git a/docs/UserGuide/Monitor-Alert/Metric-Tool.md b/docs/UserGuide/Monitor-Alert/Metric-Tool.md
index c57222130a..151a43d522 100644
--- a/docs/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -181,11 +181,13 @@ Core-level metrics are enabled by default during system operation. The addition
 | thrift_active_threads | name="ClientRPC-Service"           | AutoGauge | The number of thrift active connections of client              |
 
 #### 4.2.6. Memory
-| Metric | Tags                          | Type      | Description                                                        |
-| ------ | ----------------------------- | --------- | ------------------------------------------------------------------ |
-| mem    | name="database_{{name}}"      | AutoGauge | The memory usage of DataRegion in DataNode, Unit: byte             |
-| mem    | name="chunkMetaData_{{name}}" | AutoGauge | The memory usage of chunkMetaData when writting TsFile, Unit: byte |
-| mem    | name="IoTConsensus"           | AutoGauge | The memory usage of IoTConsensus, Unit: byte                       |
+| Metric | Tags                                 | Type      | Description                                                        |
+| ------ |--------------------------------------| --------- | ------------------------------------------------------------------ |
+| mem    | name="database_{{name}}"             | AutoGauge | The memory usage of DataRegion in DataNode, Unit: byte             |
+| mem    | name="chunkMetaData_{{name}}"        | AutoGauge | The memory usage of chunkMetaData when writting TsFile, Unit: byte |
+| mem    | name="IoTConsensus"                  | AutoGauge | The memory usage of IoTConsensus, Unit: byte                       |
+| mem    | name="schema_region_total_usage"           | AutoGauge | The memory usage of all SchemaRegion, Unit: byte                   |
+| mem    | name="schema_region_total_remaining" | AutoGauge | The memory remaining for all SchemaRegion, Unit: byte              |
 
 #### 4.2.7. Task
 | Metric    | Tags                                              | Type      | Description                           |
diff --git a/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md b/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
index 0d11b7c0fa..cb40dee7d4 100644
--- a/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -177,11 +177,13 @@ Core 级别的监控指标在系统运行中默认开启,每一个 Core 级别
 | thrift_active_threads | name="ClientRPC-Service"           | AutoGauge | Client 建立的活跃 Thrift 连接数     |
 
 #### 4.2.6. 内存统计
-| Metric | Tags                          | Type      | Description                                       |
-| ------ | ----------------------------- | --------- | ------------------------------------------------- |
-| mem    | name="database_{{name}}"      | AutoGauge | DataNode内对应DataRegion的内存占用,单位为byte    |
-| mem    | name="chunkMetaData_{{name}}" | AutoGauge | 写入TsFile时的ChunkMetaData的内存占用,单位为byte |
-| mem    | name="IoTConsensus"           | AutoGauge | IoT共识协议的内存占用,单位为byte                 |
+| Metric | Tags                                 | Type      | Description                                       |
+| ------ |--------------------------------------| --------- | ------------------------------------------------- |
+| mem    | name="database_{{name}}"             | AutoGauge | DataNode内对应DataRegion的内存占用,单位为byte    |
+| mem    | name="chunkMetaData_{{name}}"        | AutoGauge | 写入TsFile时的ChunkMetaData的内存占用,单位为byte |
+| mem    | name="IoTConsensus"                  | AutoGauge | IoT共识协议的内存占用,单位为byte                 |
+| mem    | name="schema_region_total_usage"           | AutoGauge | 所有SchemaRegion的总内存占用,单位为byte         |
+| mem    | name="schema_region_total_remaining" | AutoGauge | 所有SchemaRegion的总内存剩余,单位为byte         |
 
 #### 4.2.7. 任务统计
 | Metric    | Tags                                              | Type      | Description        |
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaResourceManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaResourceManager.java
index 8f95c73ad7..d46cb7addf 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaResourceManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaResourceManager.java
@@ -32,7 +32,9 @@ public class SchemaResourceManager {
 
   public static void initSchemaResource() {
     MetricService.getInstance()
-        .addMetricSet(new SchemaStatisticsManagerMetrics(SchemaStatisticsManager.getInstance()));
+        .addMetricSet(
+            new SchemaResourceManagerMetrics(
+                SchemaStatisticsManager.getInstance(), MemoryStatistics.getInstance()));
     MemoryStatistics.getInstance().init();
     if (IoTDBDescriptor.getInstance()
         .getConfig()
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaStatisticsManagerMetrics.java b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaResourceManagerMetrics.java
similarity index 62%
rename from server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaStatisticsManagerMetrics.java
rename to server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaResourceManagerMetrics.java
index 350adda4c0..1782c7a046 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaStatisticsManagerMetrics.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/SchemaResourceManagerMetrics.java
@@ -28,11 +28,15 @@ import org.apache.iotdb.metrics.utils.MetricType;
 
 import java.util.Objects;
 
-public class SchemaStatisticsManagerMetrics implements IMetricSet {
-  private SchemaStatisticsManager schemaStatisticsManager;
+public class SchemaResourceManagerMetrics implements IMetricSet {
+  private final SchemaStatisticsManager schemaStatisticsManager;
 
-  public SchemaStatisticsManagerMetrics(SchemaStatisticsManager schemaStatisticsManager) {
+  private final MemoryStatistics memoryStatistics;
+
+  public SchemaResourceManagerMetrics(
+      SchemaStatisticsManager schemaStatisticsManager, MemoryStatistics memoryStatistics) {
     this.schemaStatisticsManager = schemaStatisticsManager;
+    this.memoryStatistics = memoryStatistics;
   }
 
   @Override
@@ -44,19 +48,48 @@ public class SchemaStatisticsManagerMetrics implements IMetricSet {
         SchemaStatisticsManager::getTotalSeriesNumber,
         Tag.NAME.toString(),
         "timeSeries");
+
+    metricService.createAutoGauge(
+        Metric.MEM.toString(),
+        MetricLevel.IMPORTANT,
+        memoryStatistics,
+        MemoryStatistics::getMemoryUsage,
+        Tag.NAME.toString(),
+        "schema_region_total_usage");
+
+    metricService.createAutoGauge(
+        Metric.MEM.toString(),
+        MetricLevel.IMPORTANT,
+        memoryStatistics,
+        memoryStatistics ->
+            memoryStatistics.getMemoryCapacity() - memoryStatistics.getMemoryUsage(),
+        Tag.NAME.toString(),
+        "schema_region_total_remaining");
   }
 
   @Override
   public void unbindFrom(AbstractMetricService metricService) {
     metricService.remove(
         MetricType.AUTO_GAUGE, Metric.QUANTITY.toString(), Tag.NAME.toString(), "timeSeries");
+
+    metricService.remove(
+        MetricType.AUTO_GAUGE,
+        Metric.MEM.toString(),
+        Tag.NAME.toString(),
+        "schema_region_total_usage");
+
+    metricService.remove(
+        MetricType.AUTO_GAUGE,
+        Metric.MEM.toString(),
+        Tag.NAME.toString(),
+        "schema_region_total_remaining");
   }
 
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
     if (o == null || getClass() != o.getClass()) return false;
-    SchemaStatisticsManagerMetrics that = (SchemaStatisticsManagerMetrics) o;
+    SchemaResourceManagerMetrics that = (SchemaResourceManagerMetrics) o;
     return Objects.equals(schemaStatisticsManager, that.schemaStatisticsManager);
   }