You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2019/04/19 04:52:31 UTC
[incubator-iotdb] 01/01: remove JVMMemController
This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch refactor_mem_controller
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit fad45c4eb753d9782545220b7188ed548e3cd4b5
Author: 江天 <jt...@163.com>
AuthorDate: Fri Apr 19 12:51:10 2019 +0800
remove JVMMemController
---
iotdb/iotdb/conf/iotdb-engine.properties | 1 -
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 5 +-
.../db/engine/memcontrol/BasicMemController.java | 6 +-
...hPartialPolicy.java => ClosePartialPolicy.java} | 3 +-
...LushAllPolicy.java => ForceCloseAllPolicy.java} | 0
.../db/engine/memcontrol/JVMMemController.java | 100 ---------------------
6 files changed, 6 insertions(+), 109 deletions(-)
diff --git a/iotdb/iotdb/conf/iotdb-engine.properties b/iotdb/iotdb/conf/iotdb-engine.properties
index 5c7046f..88f1689 100644
--- a/iotdb/iotdb/conf/iotdb-engine.properties
+++ b/iotdb/iotdb/conf/iotdb-engine.properties
@@ -145,7 +145,6 @@ mem_monitor_interval=1000
# Decide how to control memory used by inserting data.
# 0 is RecordMemController, which count the size of every record (tuple).
-# 1 is JVMMemController, which use JVM heap memory as threshold.
mem_controller_type=0
# When a bufferwrite's metadata size (in byte) exceed this, the bufferwrite is forced closed.
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 9790f37..0526cb3 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -187,10 +187,9 @@ public class IoTDBConfig {
private long memMonitorInterval = 1000;
/**
* Decide how to control memory usage of inserting data. 0 is RecordMemController, which sums the
- * size of each record (tuple). 1 is JVMMemController, which uses the JVM heap memory as the
- * memory usage indicator.
+ * size of each record (tuple).
*/
- private int memControllerType = 1;
+ private int memControllerType = 0;
/**
* When a bufferwrite's metadata size (in byte) exceed this, the bufferwrite is forced closed.
*/
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/BasicMemController.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/BasicMemController.java
index 503afa3..396888f 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/BasicMemController.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/BasicMemController.java
@@ -49,8 +49,6 @@ public abstract class BasicMemController implements IService {
public static BasicMemController getInstance() {
switch (ControllerType.values()[IoTDBDescriptor.getInstance().getConfig()
.getMemControllerType()]) {
- case JVM:
- return JVMMemController.getInstance();
case RECORD:
default:
return RecordMemController.getInstance();
@@ -162,7 +160,7 @@ public abstract class BasicMemController implements IService {
* warning - there is only a small amount of memories available, the user would better
* try to reduce memory usage but can still proceed and this usage is recorded.
* dangerous - there is almost no memories unused, the user cannot proceed before enough
- * memory usages are released and this usage is NOT recorded.
+ * memory usages are released but this usage is still recorded.
*/
public abstract UsageLevel acquireUsage(Object user, long usage);
@@ -175,7 +173,7 @@ public abstract class BasicMemController implements IService {
public abstract void releaseUsage(Object user, long freeSize);
public enum ControllerType {
- RECORD, JVM
+ RECORD
}
public enum UsageLevel {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/FlushPartialPolicy.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ClosePartialPolicy.java
similarity index 94%
rename from iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/FlushPartialPolicy.java
rename to iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ClosePartialPolicy.java
index 31a5860..9be76dd 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/FlushPartialPolicy.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ClosePartialPolicy.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.engine.memcontrol;
import org.apache.iotdb.db.concurrent.ThreadName;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.engine.filenode.FileNodeManager;
+import org.apache.iotdb.db.engine.memcontrol.BasicMemController.UsageLevel;
import org.apache.iotdb.db.utils.MemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,7 +61,7 @@ public class FlushPartialPolicy implements Policy {
private Thread createWorkerThread() {
return new Thread(() -> {
- FileNodeManager.getInstance().forceFlush(BasicMemController.UsageLevel.SAFE);
+ FileNodeManager.getInstance().forceClose(UsageLevel.WARNING);
try {
Thread.sleep(sleepInterval);
} catch (InterruptedException e) {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceFLushAllPolicy.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceCloseAllPolicy.java
similarity index 100%
rename from iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceFLushAllPolicy.java
rename to iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/ForceCloseAllPolicy.java
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/JVMMemController.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/JVMMemController.java
deleted file mode 100644
index 31a3ef8..0000000
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memcontrol/JVMMemController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.engine.memcontrol;
-
-import org.apache.iotdb.db.conf.IoTDBConfig;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.utils.MemUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JVMMemController extends BasicMemController {
-
- private static Logger LOGGER = LoggerFactory.getLogger(JVMMemController.class);
-
- private JVMMemController(IoTDBConfig config) {
- super(config);
- }
-
- public static JVMMemController getInstance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public long getTotalUsage() {
- // memory used by non-data objects, this is used to estimate the memory used by data
- long nonDataUsage = 0;
- return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory() - nonDataUsage;
- }
-
- @Override
- public UsageLevel getCurrLevel() {
- long memUsage = getTotalUsage();
- if (memUsage < warningThreshold) {
- return UsageLevel.SAFE;
- } else if (memUsage < dangerouseThreshold) {
- return UsageLevel.WARNING;
- } else {
- return UsageLevel.DANGEROUS;
- }
- }
-
- @Override
- public void clear() {
- // JVMMemController does not need cleaning
- }
-
- @Override
- public UsageLevel acquireUsage(Object user, long usage) {
- long memUsage = getTotalUsage() + usage;
- if (memUsage < warningThreshold) {
- return UsageLevel.SAFE;
- } else if (memUsage < dangerouseThreshold) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Warning Threshold : {} allocated to {}, total usage {}",
- MemUtils.bytesCntToStr(usage),
- user.getClass(), MemUtils.bytesCntToStr(memUsage));
- }
- return UsageLevel.WARNING;
- } else {
- if (LOGGER.isWarnEnabled()) {
- LOGGER.warn("Memory request from {} is denied, memory usage : {}", user.getClass(),
- MemUtils.bytesCntToStr(memUsage));
- }
- return UsageLevel.DANGEROUS;
- }
- }
-
- @Override
- public void releaseUsage(Object user, long freeSize) {
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info("{} freed from {}, total usage {}", MemUtils.bytesCntToStr(freeSize),
- user.getClass(), MemUtils.bytesCntToStr(getTotalUsage()));
- }
- }
-
- private static class InstanceHolder {
-
- private InstanceHolder() {
- }
-
- private static final JVMMemController INSTANCE = new JVMMemController(
- IoTDBDescriptor.getInstance().getConfig());
- }
-}