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

caogaofei pushed a commit to branch beyyes/add_more_metrics
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 53aae81cb744cda382c569f962551a9c4684f817
Author: Beyyes <[email protected]>
AuthorDate: Wed Mar 13 11:18:35 2024 +0800

    add metric
---
 .../queryengine/metric/QueryRelatedResourceMetricSet.java  | 14 ++++++++++++++
 .../db/queryengine/plan/planner/LocalExecutionPlanner.java |  5 +++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
index f0efaf4d52a..a5f5d9ed4e0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/QueryRelatedResourceMetricSet.java
@@ -99,6 +99,12 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
       LocalExecutionPlanner.getInstance();
   private static final String LOCAL_EXECUTION_PLANNER = 
Metric.LOCAL_EXECUTION_PLANNER.toString();
   private static final String FREE_MEMORY_FOR_OPERATORS = 
"free_memory_for_operators";
+  private static final String ESTIMATED_MEMORY_SIZE = "estimated_memory_size";
+  private Histogram estimatedMemoryHistogram = 
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
+
+  public void updateEstimatedMemory(long memory) {
+    estimatedMemoryHistogram.update(memory);
+  }
 
   @Override
   public void bindTo(AbstractMetricService metricService) {
@@ -179,6 +185,12 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
         LocalExecutionPlanner::getFreeMemoryForOperators,
         Tag.NAME.toString(),
         FREE_MEMORY_FOR_OPERATORS);
+    estimatedMemoryHistogram =
+        metricService.getOrCreateHistogram(
+            LOCAL_EXECUTION_PLANNER,
+            MetricLevel.IMPORTANT,
+            Tag.NAME.toString(),
+            ESTIMATED_MEMORY_SIZE);
   }
 
   @Override
@@ -231,6 +243,8 @@ public class QueryRelatedResourceMetricSet implements 
IMetricSet {
         LOCAL_EXECUTION_PLANNER,
         Tag.NAME.toString(),
         FREE_MEMORY_FOR_OPERATORS);
+    metricService.remove(
+        MetricType.HISTOGRAM, LOCAL_EXECUTION_PLANNER, Tag.NAME.toString(), 
ESTIMATED_MEMORY_SIZE);
   }
 
   private QueryRelatedResourceMetricSet() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java
index 2e509a57999..6acd4e1b716 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java
@@ -27,6 +27,7 @@ import 
org.apache.iotdb.db.queryengine.execution.fragment.DataNodeQueryContext;
 import 
org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext;
 import 
org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceStateMachine;
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
+import org.apache.iotdb.db.queryengine.metric.QueryRelatedResourceMetricSet;
 import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
@@ -54,8 +55,7 @@ public class LocalExecutionPlanner {
     ALLOCATE_MEMORY_FOR_OPERATORS = CONFIG.getAllocateMemoryForOperators();
     MAX_REST_MEMORY_FOR_LOAD =
         (long)
-            (((double) ALLOCATE_MEMORY_FOR_OPERATORS)
-                * (1.0 - CONFIG.getMaxAllocateMemoryRatioForLoad()));
+            ((ALLOCATE_MEMORY_FOR_OPERATORS) * (1.0 - 
CONFIG.getMaxAllocateMemoryRatioForLoad()));
   }
 
   /** allocated memory for operator execution */
@@ -126,6 +126,7 @@ public class LocalExecutionPlanner {
     }
 
     long estimatedMemorySize = root.calculateMaxPeekMemoryWithCounter();
+    
QueryRelatedResourceMetricSet.getInstance().updateEstimatedMemory(estimatedMemorySize);
 
     synchronized (this) {
       if (estimatedMemorySize > freeMemoryForOperators) {

Reply via email to