[33/50] [abbrv] hbase git commit: HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect
HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3aadc675 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3aadc675 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3aadc675 Branch: refs/heads/hbase-12439 Commit: 3aadc675b0f02c3c13be625b40d72fbf6a844964 Parents: d7ddc79 Author: CHIA-PING TSAI Authored: Tue Apr 11 16:31:20 2017 +0800 Committer: Chia-Ping Tsai Committed: Wed Apr 12 11:26:43 2017 +0800 -- .../java/org/apache/hadoop/hbase/util/ClassSize.java | 7 +++ .../apache/hadoop/hbase/regionserver/Segment.java| 7 --- .../org/apache/hadoop/hbase/io/TestHeapSize.java | 15 +-- 3 files changed, 20 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java -- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java index 465bd9c..e1690c0 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.util; +import com.google.common.annotations.VisibleForTesting; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.concurrent.ConcurrentHashMap; @@ -235,6 +236,12 @@ public class ClassSize { } private static final MemoryLayout memoryLayout = getMemoryLayout(); + private static final boolean USE_UNSAFE_LAYOUT = (memoryLayout instanceof UnsafeLayout); + + @VisibleForTesting + public static boolean useUnsafeLayout() { +return USE_UNSAFE_LAYOUT; + } /** * Method for reading the arc settings and setting overheads according http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java index 6f431c9..8f43fa8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java @@ -48,12 +48,13 @@ import com.google.common.annotations.VisibleForTesting; @InterfaceAudience.Private public abstract class Segment { - final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT - + 5 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, size, timeRangeTracker + public final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT + + 6 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, dataSize, +// heapSize, and timeRangeTracker + Bytes.SIZEOF_LONG // minSequenceId + Bytes.SIZEOF_BOOLEAN); // tagsPresent public final static long DEEP_OVERHEAD = FIXED_OVERHEAD + ClassSize.ATOMIC_REFERENCE - + ClassSize.CELL_SET + ClassSize.ATOMIC_LONG + ClassSize.TIMERANGE_TRACKER; + + ClassSize.CELL_SET + 2 * ClassSize.ATOMIC_LONG + ClassSize.TIMERANGE_TRACKER; private AtomicReference cellSet= new AtomicReference<>(); private final CellComparator comparator; http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java -- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java index 6b943a7..bf74a9e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java @@ -344,7 +344,7 @@ public class TestHeapSize { cl = Segment.class; actual = Segment.DEEP_OVERHEAD; expected = ClassSize.estimateBase(cl, false); -expected += ClassSize.estimateBase(AtomicLong.class, false); +expected += 2 * ClassSize.estimateBase(AtomicLong.class, false); expected += ClassSize.estimateBase(AtomicReference.class, false); expected += ClassSize.estimateBase(CellSet.class, false); expected += ClassSize.estimateBase(TimeRangeTracker.class, false); @@ -361,7 +361,7 @@ public class TestHeapSize { cl = MutableSegment.class; actual = MutableSegment.DEEP_OVERHEAD; expected = ClassSize.estimateBase(cl, false); -expected += ClassSize.estimateBase(AtomicLong.class, false); +
hbase git commit: HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect
Repository: hbase Updated Branches: refs/heads/master d7ddc7919 -> 3aadc675b HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3aadc675 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3aadc675 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3aadc675 Branch: refs/heads/master Commit: 3aadc675b0f02c3c13be625b40d72fbf6a844964 Parents: d7ddc79 Author: CHIA-PING TSAI Authored: Tue Apr 11 16:31:20 2017 +0800 Committer: Chia-Ping Tsai Committed: Wed Apr 12 11:26:43 2017 +0800 -- .../java/org/apache/hadoop/hbase/util/ClassSize.java | 7 +++ .../apache/hadoop/hbase/regionserver/Segment.java| 7 --- .../org/apache/hadoop/hbase/io/TestHeapSize.java | 15 +-- 3 files changed, 20 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java -- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java index 465bd9c..e1690c0 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.util; +import com.google.common.annotations.VisibleForTesting; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.concurrent.ConcurrentHashMap; @@ -235,6 +236,12 @@ public class ClassSize { } private static final MemoryLayout memoryLayout = getMemoryLayout(); + private static final boolean USE_UNSAFE_LAYOUT = (memoryLayout instanceof UnsafeLayout); + + @VisibleForTesting + public static boolean useUnsafeLayout() { +return USE_UNSAFE_LAYOUT; + } /** * Method for reading the arc settings and setting overheads according http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java -- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java index 6f431c9..8f43fa8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java @@ -48,12 +48,13 @@ import com.google.common.annotations.VisibleForTesting; @InterfaceAudience.Private public abstract class Segment { - final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT - + 5 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, size, timeRangeTracker + public final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT + + 6 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, dataSize, +// heapSize, and timeRangeTracker + Bytes.SIZEOF_LONG // minSequenceId + Bytes.SIZEOF_BOOLEAN); // tagsPresent public final static long DEEP_OVERHEAD = FIXED_OVERHEAD + ClassSize.ATOMIC_REFERENCE - + ClassSize.CELL_SET + ClassSize.ATOMIC_LONG + ClassSize.TIMERANGE_TRACKER; + + ClassSize.CELL_SET + 2 * ClassSize.ATOMIC_LONG + ClassSize.TIMERANGE_TRACKER; private AtomicReference cellSet= new AtomicReference<>(); private final CellComparator comparator; http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java -- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java index 6b943a7..bf74a9e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java @@ -344,7 +344,7 @@ public class TestHeapSize { cl = Segment.class; actual = Segment.DEEP_OVERHEAD; expected = ClassSize.estimateBase(cl, false); -expected += ClassSize.estimateBase(AtomicLong.class, false); +expected += 2 * ClassSize.estimateBase(AtomicLong.class, false); expected += ClassSize.estimateBase(AtomicReference.class, false); expected += ClassSize.estimateBase(CellSet.class, false); expected += ClassSize.estimateBase(TimeRangeTracker.class, false); @@ -361,7 +361,7 @@ public class TestHeapSize { cl = MutableSegment.class; actual = MutableSegment.DEEP_OVERHEAD; expected = ClassSize.estimateBase(cl,