You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2015/11/13 17:05:24 UTC
ambari git commit: AMBARI-13705 Metrics Cache sizing test failing on
trunk (dsen)
Repository: ambari
Updated Branches:
refs/heads/trunk 9fae285c6 -> b6a3476c7
AMBARI-13705 Metrics Cache sizing test failing on trunk (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b6a3476c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b6a3476c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b6a3476c
Branch: refs/heads/trunk
Commit: b6a3476c78588ba6d3841f495ca9b87dbe4418a6
Parents: 9fae285
Author: Dmytro Sen <ds...@apache.org>
Authored: Fri Nov 13 18:05:14 2015 +0200
Committer: Dmytro Sen <ds...@apache.org>
Committed: Fri Nov 13 18:05:14 2015 +0200
----------------------------------------------------------------------
.../cache/TimelineMetricsCacheSizeOfEngine.java | 13 +++++++++++--
.../timeline/cache/TimelineMetricCacheSizingTest.java | 1 -
2 files changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b6a3476c/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricsCacheSizeOfEngine.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricsCacheSizeOfEngine.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricsCacheSizeOfEngine.java
index 56b67d3..2828a49 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricsCacheSizeOfEngine.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricsCacheSizeOfEngine.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
+import java.util.TreeMap;
/**
* Cache sizing engine that reduces reflective calls over the Object graph to
@@ -45,6 +46,7 @@ public class TimelineMetricsCacheSizeOfEngine implements SizeOfEngine {
private volatile long timelineMetricPrimitivesApproximation = 0;
private long sizeOfMapEntry;
+ private long sizeOfMapEntryOverhead;
private TimelineMetricsCacheSizeOfEngine(SizeOfEngine underlying) {
this.underlying = underlying;
@@ -56,6 +58,13 @@ public class TimelineMetricsCacheSizeOfEngine implements SizeOfEngine {
this.sizeOfMapEntry = reflectionSizeOf.sizeOf(new Long(1)) +
reflectionSizeOf.sizeOf(new Double(2.0));
+ //SizeOfMapEntryOverhead = SizeOfMapWithOneEntry - (SizeOfEmptyMap + SizeOfOneEntry)
+ TreeMap<Long,Double> map = new TreeMap<>();
+ long emptyMapSize = reflectionSizeOf.sizeOf(map);
+ map.put(new Long(1), new Double(2.0));
+ long sizeOfMapOneEntry = reflectionSizeOf.deepSizeOf(DEFAULT_MAX_DEPTH, DEFAULT_ABORT_WHEN_MAX_DEPTH_EXCEEDED, map).getCalculated();
+ this.sizeOfMapEntryOverhead = sizeOfMapOneEntry - (emptyMapSize + this.sizeOfMapEntry);
+
LOG.info("Creating custom sizeof engine for TimelineMetrics.");
}
@@ -119,8 +128,8 @@ public class TimelineMetricsCacheSizeOfEngine implements SizeOfEngine {
if (metricValues != null && !metricValues.isEmpty()) {
// Numeric wrapper: 12 bytes + 8 bytes Data type + 4 bytes alignment = 48 (Long, Double)
// Tree Map: 12 bytes for header + 20 bytes for 5 object fields : pointers + 1 byte for flag = 40
- LOG.debug("Size of metric value: " + (sizeOfMapEntry + 40) * metricValues.size());
- size += (sizeOfMapEntry + 40) * metricValues.size(); // Treemap size is O(1)
+ LOG.debug("Size of metric value: " + (sizeOfMapEntry + sizeOfMapEntryOverhead) * metricValues.size());
+ size += (sizeOfMapEntry + sizeOfMapEntryOverhead) * metricValues.size(); // Treemap size is O(1)
}
}
LOG.debug("Total Size of metric values in cache: " + size);
http://git-wip-us.apache.org/repos/asf/ambari/blob/b6a3476c/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheSizingTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheSizingTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheSizingTest.java
index 51f16ce..c87804d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheSizingTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheSizingTest.java
@@ -56,7 +56,6 @@ public class TimelineMetricCacheSizingTest {
return metric;
}
- @Ignore
@Test
public void testTimelineMetricCacheSizing() throws Exception {
Set<String> metricNames = new HashSet<>();