Author: tedyu
Date: Mon Sep 19 20:29:40 2011
New Revision: 1172802

URL: http://svn.apache.org/viewvc?rev=1172802&view=rev
Log:
HBASE-4432  Enable/Disable off heap cache with config (Li Pi)

Modified:
    hbase/trunk/CHANGES.txt
    
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java

Modified: hbase/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1172802&r1=1172801&r2=1172802&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Mon Sep 19 20:29:40 2011
@@ -513,6 +513,7 @@ Release 0.91.0 - Unreleased
                (David Revell)
    HBASE-4424  Provide coprocessors access to createTable() via 
                MasterServices
+   HBASE-4432  Enable/Disable off heap cache with config (Li Pi)
 
   TASKS
    HBASE-3559  Move report of split to master OFF the heartbeat channel

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java?rev=1172802&r1=1172801&r2=1172802&view=diff
==============================================================================
--- 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java 
(original)
+++ 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java 
Mon Sep 19 20:29:40 2011
@@ -378,12 +378,18 @@ public class StoreFile {
     MemoryUsage mu = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
     long cacheSize = (long)(mu.getMax() * cachePercentage);
     int blockSize = conf.getInt("hbase.offheapcache.minblocksize", 
HFile.DEFAULT_BLOCKSIZE);
-    long offHeapCacheSize = (long) 
(conf.getFloat("hbase.offheapcache.percentage", (float) 0.95) * 
DirectMemoryUtils.getDirectMemorySize());
+    boolean enableOffHeapCache = conf.getBoolean("hbase.offheapcache.enable", 
false);
+    long offHeapCacheSize = enableOffHeapCache ?
+      (long) (conf.getFloat("hbase.offheapcache.percentage",
+          (float) 0.95) * DirectMemoryUtils.getDirectMemorySize()) :
+      0;
     LOG.info("Allocating LruBlockCache with maximum size " +
       StringUtils.humanReadableInt(cacheSize));
     if(offHeapCacheSize <= 0) {
       hfileBlockCache = new LruBlockCache(cacheSize, DEFAULT_BLOCKSIZE_SMALL);
     } else {
+      LOG.info("Allocating OffHeapCache with maximum size " +
+          StringUtils.humanReadableInt(offHeapCacheSize));
       hfileBlockCache = new DoubleBlockCache(cacheSize, offHeapCacheSize, 
DEFAULT_BLOCKSIZE_SMALL, blockSize, conf);
     }
     return hfileBlockCache;


Reply via email to