This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new eb5e759 Add more JMX MBean
eb5e759 is described below
commit eb5e75909eb78bcb7eb653904216c91d82b075e3
Author: JackieTien97 <[email protected]>
AuthorDate: Tue May 12 16:32:45 2020 +0800
Add more JMX MBean
---
.../db/engine/cache/CacheHitRatioMonitor.java | 65 ++++++++++++++++++++--
.../engine/cache/CacheHitRatioMonitorMXBean.java | 27 +++++++++
.../apache/iotdb/db/engine/cache/ChunkCache.java | 19 ++++++-
.../iotdb/db/engine/cache/ChunkMetadataCache.java | 32 +++++++----
.../iotdb/db/engine/cache/LRULinkedHashMap.java | 31 ++++++++---
.../db/engine/cache/TimeSeriesMetadataCache.java | 17 +++++-
6 files changed, 164 insertions(+), 27 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
index 3d5f4f5..2c411ac 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
@@ -28,8 +28,6 @@ import org.slf4j.LoggerFactory;
public class CacheHitRatioMonitor implements CacheHitRatioMonitorMXBean,
IService {
- double chunkMetaDataHitRatio;
- double tsfileMetaDataHitRatio;
private static Logger logger =
LoggerFactory.getLogger(CacheHitRatioMonitor.class);
static final CacheHitRatioMonitor instance =
AsyncCacheHitRatioHolder.DISPLAYER;
@@ -56,8 +54,27 @@ public class CacheHitRatioMonitor implements
CacheHitRatioMonitorMXBean, IServic
@Override
public double getChunkMetaDataHitRatio() {
- chunkMetaDataHitRatio =
ChunkMetadataCache.getInstance().calculateChunkMetaDataHitRatio();
- return chunkMetaDataHitRatio;
+ return ChunkMetadataCache.getInstance().calculateChunkMetaDataHitRatio();
+ }
+
+ @Override
+ public long getChunkMetaDataCacheUsedMemory() {
+ return ChunkMetadataCache.getInstance().getUsedMemory();
+ }
+
+ @Override
+ public long getChunkMetaDataCacheMaxMemory() {
+ return ChunkMetadataCache.getInstance().getMaxMemory();
+ }
+
+ @Override
+ public double getChunkMetaDataCacheUsedMemoryProportion() {
+ return ChunkMetadataCache.getInstance().getUsedMemoryProportion();
+ }
+
+ @Override
+ public long getChunkMetaDataCacheAverageSize() {
+ return ChunkMetadataCache.getInstance().getAverageSize();
}
@Override
@@ -66,10 +83,50 @@ public class CacheHitRatioMonitor implements
CacheHitRatioMonitorMXBean, IServic
}
@Override
+ public long getChunkCacheUsedMemory() {
+ return ChunkCache.getInstance().getUsedMemory();
+ }
+
+ @Override
+ public long getChunkCacheMaxMemory() {
+ return ChunkCache.getInstance().getMaxMemory();
+ }
+
+ @Override
+ public double getChunkCacheUsedMemoryProportion() {
+ return ChunkCache.getInstance().getUsedMemoryProportion();
+ }
+
+ @Override
+ public long getChunkCacheAverageSize() {
+ return ChunkCache.getInstance().getAverageSize();
+ }
+
+ @Override
public double getTimeSeriesMetadataHitRatio() {
return
TimeSeriesMetadataCache.getInstance().calculateTimeSeriesMetadataHitRatio();
}
+ @Override
+ public long getTimeSeriesMetadataCacheUsedMemory() {
+ return TimeSeriesMetadataCache.getInstance().getUsedMemory();
+ }
+
+ @Override
+ public long getTimeSeriesMetadataCacheMaxMemory() {
+ return TimeSeriesMetadataCache.getInstance().getMaxMemory();
+ }
+
+ @Override
+ public double getTimeSeriesCacheUsedMemoryProportion() {
+ return TimeSeriesMetadataCache.getInstance().getUsedMemoryProportion();
+ }
+
+ @Override
+ public long getTimeSeriesMetaDataCacheAverageSize() {
+ return TimeSeriesMetadataCache.getInstance().getAverageSize();
+ }
+
public static CacheHitRatioMonitor getInstance() {
return instance;
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
index 644374d..0514481 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
@@ -22,7 +22,34 @@ public interface CacheHitRatioMonitorMXBean {
double getChunkMetaDataHitRatio();
+ long getChunkMetaDataCacheUsedMemory();
+
+ long getChunkMetaDataCacheMaxMemory();
+
+ double getChunkMetaDataCacheUsedMemoryProportion();
+
+ long getChunkMetaDataCacheAverageSize();
+
+
double getChunkHitRatio();
+ long getChunkCacheUsedMemory();
+
+ long getChunkCacheMaxMemory();
+
+ double getChunkCacheUsedMemoryProportion();
+
+ long getChunkCacheAverageSize();
+
+
double getTimeSeriesMetadataHitRatio();
+
+ long getTimeSeriesMetadataCacheUsedMemory();
+
+ long getTimeSeriesMetadataCacheMaxMemory();
+
+ double getTimeSeriesCacheUsedMemoryProportion();
+
+ long getTimeSeriesMetaDataCacheAverageSize();
+
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java
index 7001f34..bd09dec 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java
@@ -56,9 +56,6 @@ public class ChunkCache {
logger.info("ChunkCache size = " + MEMORY_THRESHOLD_IN_CHUNK_CACHE);
lruCache = new LRULinkedHashMap<ChunkMetadata,
Chunk>(MEMORY_THRESHOLD_IN_CHUNK_CACHE, true) {
- int count = 0;
- long averageSize = 0;
-
@Override
protected long calEntrySize(ChunkMetadata key, Chunk value) {
if (count < 10) {
@@ -147,6 +144,22 @@ public class ChunkCache {
}
}
+ public long getUsedMemory() {
+ return lruCache.getUsedMemory();
+ }
+
+ public long getMaxMemory() {
+ return lruCache.getMaxMemory();
+ }
+
+ public double getUsedMemoryProportion() {
+ return lruCache.getUsedMemoryProportion();
+ }
+
+ public long getAverageSize() {
+ return lruCache.getAverageSize();
+ }
+
/**
* clear LRUCache.
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java
index b955f31..421f62b 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java
@@ -64,29 +64,25 @@ public class ChunkMetadataCache {
private ChunkMetadataCache(long memoryThreshold) {
logger.info("ChunkMetadataCache size = " + memoryThreshold);
lruCache = new LRULinkedHashMap<String,
List<ChunkMetadata>>(memoryThreshold, true) {
- int count = 0;
- long averageChunkMetadataSize = 0;
-
@Override
protected long calEntrySize(String key, List<ChunkMetadata> value) {
if (value.isEmpty()) {
- return key.getBytes().length + averageChunkMetadataSize *
value.size();
+ return key.getBytes().length + averageSize * value.size();
}
-
if (count < 10) {
long currentSize = RamUsageEstimator.shallowSizeOf(value.get(0)) +
RamUsageEstimator
.shallowSizeOf(value.get(0).getStatistics());
- averageChunkMetadataSize = ((averageChunkMetadataSize * count) +
currentSize) / (++count);
-
IoTDBConfigDynamicAdapter.setChunkMetadataSizeInByte(averageChunkMetadataSize);
+ averageSize = ((averageSize * count) + currentSize) / (++count);
+ IoTDBConfigDynamicAdapter.setChunkMetadataSizeInByte(averageSize);
return key.getBytes().length + currentSize * value.size();
} else if (count < 100000) {
count++;
- return key.getBytes().length + averageChunkMetadataSize *
value.size();
+ return key.getBytes().length + averageSize * value.size();
} else {
- averageChunkMetadataSize =
RamUsageEstimator.shallowSizeOf(value.get(0)) + RamUsageEstimator
+ averageSize = RamUsageEstimator.shallowSizeOf(value.get(0)) +
RamUsageEstimator
.shallowSizeOf(value.get(0).getStatistics());
count = 1;
- return key.getBytes().length + averageChunkMetadataSize *
value.size();
+ return key.getBytes().length + averageSize * value.size();
}
}
};
@@ -174,6 +170,22 @@ public class ChunkMetadataCache {
}
}
+ public long getUsedMemory() {
+ return lruCache.getUsedMemory();
+ }
+
+ public long getMaxMemory() {
+ return lruCache.getMaxMemory();
+ }
+
+ public double getUsedMemoryProportion() {
+ return lruCache.getUsedMemoryProportion();
+ }
+
+ public long getAverageSize() {
+ return lruCache.getAverageSize();
+ }
+
/**
* clear LRUCache.
*/
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/LRULinkedHashMap.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/LRULinkedHashMap.java
index c85d147..8172588 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/LRULinkedHashMap.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/cache/LRULinkedHashMap.java
@@ -33,21 +33,24 @@ public abstract class LRULinkedHashMap<K, V> extends
LinkedHashMap<K, V> {
/**
* maximum memory threshold.
*/
- private long maxMemInB;
+ private long maxMemory;
/**
* current used memory.
*/
- private long usedMemInB;
+ private long usedMemory;
- public LRULinkedHashMap(long maxMemInB, boolean isLru) {
+ protected int count = 0;
+ protected long averageSize = 0;
+
+ public LRULinkedHashMap(long maxMemory, boolean isLru) {
super(INITIAL_CAPACITY, LOAD_FACTOR_MAP, isLru);
- this.maxMemInB = maxMemInB;
+ this.maxMemory = maxMemory;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
- if (usedMemInB > maxMemInB) {
- usedMemInB -= calEntrySize(eldest.getKey(), eldest.getValue());
+ if (usedMemory > maxMemory) {
+ usedMemory -= calEntrySize(eldest.getKey(), eldest.getValue());
return true;
} else {
return false;
@@ -56,7 +59,7 @@ public abstract class LRULinkedHashMap<K, V> extends
LinkedHashMap<K, V> {
@Override
public V put(K key, V value) {
- usedMemInB += calEntrySize(key, value);
+ usedMemory += calEntrySize(key, value);
return super.put(key, value);
}
@@ -69,7 +72,19 @@ public abstract class LRULinkedHashMap<K, V> extends
LinkedHashMap<K, V> {
* calculate the proportion of used memory.
*/
public double getUsedMemoryProportion() {
- return usedMemInB * 1.0 / maxMemInB;
+ return usedMemory * 1.0 / maxMemory;
+ }
+
+ public long getUsedMemory() {
+ return usedMemory;
+ }
+
+ public long getMaxMemory() {
+ return maxMemory;
+ }
+
+ public long getAverageSize() {
+ return averageSize;
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
index ccd430f..22a29e8 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
@@ -61,8 +61,6 @@ public class TimeSeriesMetadataCache {
logger.info("TimeseriesMetadataCache size = " +
MEMORY_THRESHOLD_IN_TIME_SERIES_METADATA_CACHE);
lruCache = new LRULinkedHashMap<TimeSeriesMetadataCacheKey,
TimeseriesMetadata>(
MEMORY_THRESHOLD_IN_TIME_SERIES_METADATA_CACHE, true) {
- int count = 0;
- long averageSize = 0;
@Override
protected long calEntrySize(TimeSeriesMetadataCacheKey key,
TimeseriesMetadata value) {
@@ -162,6 +160,21 @@ public class TimeSeriesMetadataCache {
}
}
+ public long getUsedMemory() {
+ return lruCache.getUsedMemory();
+ }
+
+ public long getMaxMemory() {
+ return lruCache.getMaxMemory();
+ }
+
+ public double getUsedMemoryProportion() {
+ return lruCache.getUsedMemoryProportion();
+ }
+
+ public long getAverageSize() {
+ return lruCache.getAverageSize();
+ }
/**
* clear LRUCache.