From 3d7bcd020e03ca89dccab18dd87cde453beeeafa Mon Sep 17 00:00:00 2001 From: chenheng Date: Wed, 17 Aug 2016 11:06:34 +0800 Subject: [PATCH] HBASE-15635 Mean age of Blocks in cache (seconds) on webUI should be greater than zero Signed-off-by: stack --- .../hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon | 6 +----- .../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java | 6 +++++- .../java/org/apache/hadoop/hbase/io/hfile/CacheStats.java | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon index 49a1e1bef8b..daa5d76877e 100644 --- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon +++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon @@ -177,7 +177,6 @@ org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix; <%java> AgeSnapshot ageAtEvictionSnapshot = bc.getStats().getAgeAtEvictionSnapshot(); // Only show if non-zero mean and stddev as is the case in combinedblockcache - double mean = ageAtEvictionSnapshot.getMean(); Evicted @@ -189,13 +188,11 @@ org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix; <% String.format("%,d", bc.getStats().getEvictionCount()) %> The total number of times an eviction has occurred -<%if mean > 0 %> Mean - <% String.format("%,d", (long)(ageAtEvictionSnapshot.getMean()/(1000000 * 1000))) %> + <% String.format("%,d", (long)ageAtEvictionSnapshot.getMean()) %> Mean age of Blocks at eviction time (seconds) - <%def hits_tmpl> @@ -288,7 +285,6 @@ are combined counts. Request count is sum of hits and misses.

boolean evictions; <%java> - final long nanosPerSecond = 1000000000; String bcUrl = "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html"; String bcName = bc.getClass().getSimpleName(); org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile cbsbf = diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java index 89f73eb1367..d868a1af42f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java @@ -38,6 +38,10 @@ import org.codehaus.jackson.map.SerializationConfig; */ @InterfaceAudience.Private public class BlockCacheUtil { + + + public static final long NANOS_PER_SECOND = 1000000000; + /** * Needed generating JSON. */ @@ -223,7 +227,7 @@ public class BlockCacheUtil { this.dataBlockCount++; this.dataSize += cb.getSize(); } - long age = this.now - cb.getCachedTime(); + long age = (this.now - cb.getCachedTime())/NANOS_PER_SECOND; this.hist.add(age, 1); return false; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java index 298dcf7cde9..f38ec70eec0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java @@ -247,7 +247,9 @@ public class CacheStats { } public void evicted(final long t, boolean primary) { - if (t > this.startTime) this.ageAtEviction.add(t - this.startTime,1); + if (t > this.startTime) { + this.ageAtEviction.add((t - this.startTime) / BlockCacheUtil.NANOS_PER_SECOND, 1); + } this.evictedBlockCount.increment(); if (primary) { primaryEvictedBlockCount.increment();