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:17 UTC

[iotdb] branch rel/1.0 updated: [To rel/1.0][IOTDB-5232] Add schema memory metric (#8544)

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

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


The following commit(s) were added to refs/heads/rel/1.0 by this push:
     new 02357a93a5 [To rel/1.0][IOTDB-5232] Add schema memory metric (#8544)
02357a93a5 is described below

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

    [To rel/1.0][IOTDB-5232] Add schema memory metric (#8544)
    
    [To rel/1.0][IOTDB-5232] Add schema memory metric (#8544)
---
 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 de2302c8b5..92cd563eb6 100644
--- a/docs/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -173,11 +173,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 3ffc58ac91..cafd2f257e 100644
--- a/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -176,11 +176,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);
   }