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

spricoder pushed a commit to branch feature/memory_auto
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/feature/memory_auto by this 
push:
     new b2d05672d6c Add Config
b2d05672d6c is described below

commit b2d05672d6cbaf9ffb5fe84612000facbd1f4674
Author: spricoder <[email protected]>
AuthorDate: Sat Feb 22 13:25:50 2025 +0800

    Add Config
---
 .../org/apache/iotdb/commons/conf/CommonConfig.java | 21 +++++++++++++++++++++
 .../apache/iotdb/commons/conf/CommonDescriptor.java |  9 +++++++++
 .../apache/iotdb/commons/memory/MemoryManager.java  | 20 +++++++++++++++-----
 3 files changed, 45 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index ffacc771789..0fb4af517e4 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -369,6 +369,11 @@ public class CommonConfig {
 
   private volatile Pattern trustedUriPattern = Pattern.compile("file:.*");
 
+  // memory management
+  private boolean enableMemoryTransfer = false;
+
+  private long memoryCheckIntervalInS = 20;
+
   CommonConfig() {
     // Empty constructor
   }
@@ -1664,4 +1669,20 @@ public class CommonConfig {
   public void setTrustedUriPattern(Pattern trustedUriPattern) {
     this.trustedUriPattern = trustedUriPattern;
   }
+
+  public long getMemoryCheckIntervalInS() {
+    return memoryCheckIntervalInS;
+  }
+
+  public void setMemoryCheckIntervalInS(long memoryCheckIntervalInS) {
+    this.memoryCheckIntervalInS = memoryCheckIntervalInS;
+  }
+
+  public boolean isEnableMemoryTransfer() {
+    return enableMemoryTransfer;
+  }
+
+  public void setEnableMemoryTransfer(boolean enableMemoryTransfer) {
+    this.enableMemoryTransfer = enableMemoryTransfer;
+  }
 }
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
index 346d75292b1..dc645bd0431 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
@@ -250,6 +250,15 @@ public class CommonDescriptor {
 
     loadRetryProperties(properties);
     loadBinaryAllocatorProps(properties);
+
+    config.setEnableMemoryTransfer(
+        Boolean.parseBoolean(
+            properties.getProperty(
+                "enable_memory_transfer", 
Boolean.toString(config.isEnableMemoryTransfer()))));
+    config.setMemoryCheckIntervalInS(
+        Integer.parseInt(
+            properties.getProperty(
+                "memory_check_interval", 
String.valueOf(config.getMemoryCheckIntervalInS()))));
   }
 
   private void loadPipeProps(TrimProperties properties) {
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
index e9b0918087d..06819008d9f 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/memory/MemoryManager.java
@@ -19,6 +19,8 @@
 
 package org.apache.iotdb.commons.memory;
 
+import org.apache.iotdb.commons.conf.CommonConfig;
+import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.utils.TestOnly;
 
 import org.slf4j.Logger;
@@ -30,6 +32,9 @@ import java.util.function.LongUnaryOperator;
 
 public class MemoryManager {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(MemoryManager.class);
+  private static final CommonConfig CONFIG = 
CommonDescriptor.getInstance().getConfig();
+  private static final boolean ENABLE_MEMORY_TRANSFER = 
CONFIG.isEnableMemoryTransfer();
+  private static final long MEMORY_CHECK_INTERVAL_IN_S = 
CONFIG.getMemoryCheckIntervalInS();
 
   /** The max retry times for memory allocation */
   private static final int MEMORY_ALLOCATE_MAX_RETRIES = 3;
@@ -499,11 +504,16 @@ public class MemoryManager {
         new MemoryManager("GlobalMemoryManager", null, 
Runtime.getRuntime().totalMemory());
 
     static {
-      MemoryRuntimeAgent.getInstance()
-          .registerPeriodicalJob(
-              "GlobalMemoryManager#updateAllocate()",
-              MemoryManagerHolder.GLOBAL::updateAllocate,
-              20);
+      if (ENABLE_MEMORY_TRANSFER) {
+        LOGGER.info(
+            "Enable automatic memory transfer with an interval of {} s",
+            MEMORY_CHECK_INTERVAL_IN_S);
+        MemoryRuntimeAgent.getInstance()
+            .registerPeriodicalJob(
+                "GlobalMemoryManager#updateAllocate()",
+                MemoryManagerHolder.GLOBAL::updateAllocate,
+                MEMORY_CHECK_INTERVAL_IN_S);
+      }
     }
 
     private MemoryManagerHolder() {}

Reply via email to