Repository: hbase
Updated Branches:
  refs/heads/branch-2 bc3ab8172 -> 83c871add


HBASE-21107 add a metrics for netty direct memory


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/83c871ad
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/83c871ad
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/83c871ad

Branch: refs/heads/branch-2
Commit: 83c871add8eb1fc8359defe5779436169f57ca95
Parents: bc3ab81
Author: Huaxiang Sun <huaxiang...@apache.org>
Authored: Wed Sep 5 16:03:07 2018 -0700
Committer: Huaxiang Sun <h...@cloudera.com>
Committed: Wed Sep 5 16:10:17 2018 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/ipc/MetricsHBaseServerSource.java    |  5 +++++
 .../hadoop/hbase/ipc/MetricsHBaseServerWrapper.java   |  2 ++
 .../hbase/ipc/MetricsHBaseServerSourceImpl.java       |  4 +++-
 .../hbase/ipc/MetricsHBaseServerWrapperImpl.java      | 10 ++++++++++
 .../apache/hadoop/hbase/util/DirectMemoryUtils.java   | 14 ++++++++++++++
 .../hbase/ipc/MetricsHBaseServerWrapperStub.java      |  5 +++++
 6 files changed, 39 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/83c871ad/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java
----------------------------------------------------------------------
diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java
index d98837f..3877aae 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java
@@ -95,6 +95,11 @@ public interface MetricsHBaseServerSource extends 
ExceptionTrackingSource {
   String NUM_LIFO_MODE_SWITCHES_NAME = "numLifoModeSwitches";
   String NUM_LIFO_MODE_SWITCHES_DESC = "Total number of calls in general queue 
which " +
     "were served from the tail of the queue";
+  // Direct Memory Usage metrics
+  String NETTY_DM_USAGE_NAME = "nettyDirectMemoryUsage";
+
+  String NETTY_DM_USAGE_DESC = "Current Netty direct memory usage.";
+
 
   void authorizationSuccess();
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/83c871ad/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java
----------------------------------------------------------------------
diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java
index c66ec59..9e5a549 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapper.java
@@ -56,4 +56,6 @@ public interface MetricsHBaseServerWrapper {
   int getActiveReadRpcHandlerCount();
 
   int getActiveScanRpcHandlerCount();
+
+  long getNettyDmUsage();
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/83c871ad/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java
 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java
index 45f60c4..88673ce 100644
--- 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java
+++ 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java
@@ -179,7 +179,9 @@ public class MetricsHBaseServerSourceImpl extends 
ExceptionTrackingSourceImpl
           .addGauge(Interns.info(NUM_ACTIVE_READ_HANDLER_NAME, 
NUM_ACTIVE_READ_HANDLER_DESC),
             wrapper.getActiveReadRpcHandlerCount())
           .addGauge(Interns.info(NUM_ACTIVE_SCAN_HANDLER_NAME, 
NUM_ACTIVE_SCAN_HANDLER_DESC),
-            wrapper.getActiveScanRpcHandlerCount());
+            wrapper.getActiveScanRpcHandlerCount())
+          .addGauge(Interns.info(NETTY_DM_USAGE_NAME, NETTY_DM_USAGE_DESC),
+            wrapper.getNettyDmUsage());
     }
 
     metricsRegistry.snapshot(mrb, all);

http://git-wip-us.apache.org/repos/asf/hbase/blob/83c871ad/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java
index e7341c5..c855b94 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperImpl.java
@@ -19,6 +19,7 @@
 
 package org.apache.hadoop.hbase.ipc;
 
+import org.apache.hadoop.hbase.util.DirectMemoryUtils;
 import org.apache.yetus.audience.InterfaceAudience;
 
 @InterfaceAudience.Private
@@ -169,4 +170,13 @@ public class MetricsHBaseServerWrapperImpl implements 
MetricsHBaseServerWrapper
     }
     return server.getScheduler().getActiveScanRpcHandlerCount();
   }
+
+  @Override
+  public long getNettyDmUsage() {
+    if (!isServerStarted() || this.server.getScheduler() == null) {
+      return 0L;
+    }
+
+    return DirectMemoryUtils.getNettyDirectMemoryUsage();
+  }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/83c871ad/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DirectMemoryUtils.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DirectMemoryUtils.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DirectMemoryUtils.java
index 607efe1..aba421d 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DirectMemoryUtils.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DirectMemoryUtils.java
@@ -37,6 +37,10 @@ import org.apache.yetus.audience.InterfaceStability;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;
+import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocatorMetric;
+import 
org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocatorMetricProvider;
+import org.apache.hbase.thirdparty.io.netty.buffer.PooledByteBufAllocator;
+
 
 /**
  * Utilities for interacting with and monitoring DirectByteBuffer allocations.
@@ -125,6 +129,16 @@ public class DirectMemoryUtils {
   }
 
   /**
+   * @return the current amount of direct memory used by netty module.
+   */
+  public static long getNettyDirectMemoryUsage() {
+
+    ByteBufAllocatorMetric metric = ((ByteBufAllocatorMetricProvider)
+        PooledByteBufAllocator.DEFAULT).metric();
+    return metric.usedDirectMemory();
+  }
+
+  /**
    * DirectByteBuffers are garbage collected by using a phantom reference and a
    * reference queue. Every once a while, the JVM checks the reference queue 
and
    * cleans the DirectByteBuffers. However, as this doesn't happen

http://git-wip-us.apache.org/repos/asf/hbase/blob/83c871ad/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java
index 748ee3d..5679324 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerWrapperStub.java
@@ -103,4 +103,9 @@ public class MetricsHBaseServerWrapperStub implements 
MetricsHBaseServerWrapper{
   public int getActiveScanRpcHandlerCount() {
     return 6;
   }
+
+  @Override
+  public long getNettyDmUsage() {
+    return 100L;
+  }
 }

Reply via email to