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) {
