You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/10/11 04:18:46 UTC
svn commit: r1181547 - in
/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase:
io/hfile/LruBlockCache.java regionserver/HRegionServer.java
Author: nspiegelberg
Date: Tue Oct 11 02:18:46 2011
New Revision: 1181547
URL: http://svn.apache.org/viewvc?rev=1181547&view=rev
Log:
Make LRU Cache Hit Ratio Incremental
Summary:
While trying to understand how compaction policies affect
performance, I noticed that the block cache hit ratio was very steady.
That is because it averages since process start time. In practice, the
ratio varies widely based on the time. Change this stat to be
incremental so we can observe those changes
Test Plan:
- JMX
DiffCamp Revision:
Reviewed By: kannan
Reviewers: kannan, kranganathan
Commenters: jgray
CC: , nspiegelberg, jgray, kannan
Differential Revision: 257940
Modified:
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java?rev=1181547&r1=1181546&r2=1181547&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java Tue Oct 11 02:18:46 2011
@@ -587,6 +587,9 @@ public class LruBlockCache implements Bl
private final AtomicLong evictionCount = new AtomicLong(0);
private final AtomicLong evictedCount = new AtomicLong(0);
+ private long lastHitCount = 0;
+ private long lastRqCount = 0;
+
public void miss() {
missCount.incrementAndGet();
accessCount.incrementAndGet();
@@ -629,6 +632,19 @@ public class LruBlockCache implements Bl
return ((float)getHitCount()/(float)getRequestCount());
}
+ public synchronized double getIncrementalHitRatio() {
+ long curHitCount = getHitCount();
+ long curRqCount = getRequestCount();
+ double hitRatio = 0;
+ if (curRqCount >= lastRqCount) {
+ hitRatio = (double) (curHitCount - lastHitCount)
+ / (double) (curRqCount - lastRqCount);
+ }
+ lastHitCount = curHitCount;
+ lastRqCount = curRqCount;
+ return hitRatio;
+ }
+
public double getMissRatio() {
return ((float)getMissCount()/(float)getRequestCount());
}
Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1181547&r1=1181546&r2=1181547&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Tue Oct 11 02:18:46 2011
@@ -1009,7 +1009,8 @@ public class HRegionServer implements HR
this.metrics.blockCacheCount.set(lruBlockCache.size());
this.metrics.blockCacheFree.set(lruBlockCache.getFreeSize());
this.metrics.blockCacheSize.set(lruBlockCache.getCurrentSize());
- double ratio = lruBlockCache.getStats().getHitRatio();
+
+ double ratio = lruBlockCache.getStats().getIncrementalHitRatio();
int percent = (int) (ratio * 100);
this.metrics.blockCacheHitRatio.set(percent);
}