You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/08/15 01:50:49 UTC
[iotdb] branch MemoryControl updated: TransformOperator
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch MemoryControl
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/MemoryControl by this push:
new ba55d2e35e TransformOperator
ba55d2e35e is described below
commit ba55d2e35eaa6e78dfbb5cf49f654e8242da4981
Author: Liao Lanyu <10...@users.noreply.github.com>
AuthorDate: Mon Aug 15 09:50:43 2022 +0800
TransformOperator
---
.../operator/process/TransformOperator.java | 24 ++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java
index 0e08b682f1..13f97fe8c6 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java
@@ -35,6 +35,7 @@ import org.apache.iotdb.db.mpp.transformation.dag.input.QueryDataSetInputLayer;
import org.apache.iotdb.db.mpp.transformation.dag.input.TsBlockInputDataSet;
import org.apache.iotdb.db.mpp.transformation.dag.udf.UDTFContext;
import org.apache.iotdb.db.utils.datastructure.TimeSelector;
+import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
@@ -350,4 +351,27 @@ public class TransformOperator implements ProcessOperator {
public OperatorContext getOperatorContext() {
return operatorContext;
}
+
+ @Override
+ public long calculateMaxPeekMemory() {
+ // here we use maximum estimated memory usage
+ return (long)
+ (udfCollectorMemoryBudgetInMB
+ + udfTransformerMemoryBudgetInMB
+ + inputOperator.calculateMaxReturnSize());
+ }
+
+ @Override
+ public long calculateMaxReturnSize() {
+ // time + all value columns
+ return (long) (1 + transformers.length)
+ * TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
+ }
+
+ @Override
+ public long calculateRetainedSizeAfterCallingNext() {
+ // Collector may cache points, here we use maximum usage
+ return (long)
+ (inputOperator.calculateRetainedSizeAfterCallingNext() + udfCollectorMemoryBudgetInMB);
+ }
}