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