Return-Path: X-Original-To: apmail-hbase-commits-archive@www.apache.org Delivered-To: apmail-hbase-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B676118E91 for ; Thu, 21 Apr 2016 01:45:55 +0000 (UTC) Received: (qmail 11394 invoked by uid 500); 21 Apr 2016 01:45:55 -0000 Delivered-To: apmail-hbase-commits-archive@hbase.apache.org Received: (qmail 11224 invoked by uid 500); 21 Apr 2016 01:45:55 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 11150 invoked by uid 99); 21 Apr 2016 01:45:55 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Apr 2016 01:45:55 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 50171DFFF9; Thu, 21 Apr 2016 01:45:55 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: apurtell@apache.org To: commits@hbase.apache.org Date: Thu, 21 Apr 2016 01:45:56 -0000 Message-Id: <62ffdabef1a24e079b890b4c5cd4dd5e@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [02/10] hbase git commit: HBASE-15661 Hook up JvmPauseMonitor metrics in Master HBASE-15661 Hook up JvmPauseMonitor metrics in Master Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/d2702204 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/d2702204 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/d2702204 Branch: refs/heads/0.98 Commit: d27022049ed818e3798c691d1a20e4b4e1bcd6c1 Parents: 482fe97 Author: Andrew Purtell Authored: Mon Apr 18 15:06:35 2016 -0700 Committer: Andrew Purtell Committed: Wed Apr 20 15:14:10 2016 -0700 ---------------------------------------------------------------------- .../hbase/master/MetricsMasterSource.java | 3 +- .../hbase/master/MetricsMasterSourceImpl.java | 33 ++++++++++++++++++++ .../hbase/master/MetricsMasterSourceImpl.java | 33 ++++++++++++++++++++ .../org/apache/hadoop/hbase/master/HMaster.java | 7 +++-- 4 files changed, 72 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/d2702204/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java index 8d54190..435fca7 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java @@ -19,11 +19,12 @@ package org.apache.hadoop.hbase.master; import org.apache.hadoop.hbase.metrics.BaseSource; +import org.apache.hadoop.hbase.metrics.JvmPauseMonitorSource; /** * Interface that classes that expose metrics about the master will implement. */ -public interface MetricsMasterSource extends BaseSource { +public interface MetricsMasterSource extends BaseSource, JvmPauseMonitorSource { /** * The name of the metrics http://git-wip-us.apache.org/repos/asf/hbase/blob/d2702204/hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java b/hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java index ff751ad..750240f 100644 --- a/hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java +++ b/hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.master; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.metrics.BaseSourceImpl; +import org.apache.hadoop.metrics2.MetricHistogram; import org.apache.hadoop.metrics2.MetricsBuilder; import org.apache.hadoop.metrics2.MetricsRecordBuilder; import org.apache.hadoop.metrics2.lib.MetricMutableCounterLong; @@ -36,6 +37,11 @@ public class MetricsMasterSourceImpl private final MetricsMasterWrapper masterWrapper; private MetricMutableCounterLong clusterRequestsCounter; + // pause monitor metrics + private final MetricMutableCounterLong infoPauseThresholdExceeded; + private final MetricMutableCounterLong warnPauseThresholdExceeded; + private final MetricHistogram pausesWithGc; + private final MetricHistogram pausesWithoutGc; public MetricsMasterSourceImpl(MetricsMasterWrapper masterWrapper) { this(METRICS_NAME, METRICS_DESCRIPTION, METRICS_CONTEXT, METRICS_JMX_CONTEXT, masterWrapper); @@ -48,6 +54,14 @@ public class MetricsMasterSourceImpl MetricsMasterWrapper masterWrapper) { super(metricsName, metricsDescription, metricsContext, metricsJmxContext); this.masterWrapper = masterWrapper; + + // pause monitor metrics + infoPauseThresholdExceeded = getMetricsRegistry().newCounter(INFO_THRESHOLD_COUNT_KEY, + INFO_THRESHOLD_COUNT_DESC, 0L); + warnPauseThresholdExceeded = getMetricsRegistry().newCounter(WARN_THRESHOLD_COUNT_KEY, + WARN_THRESHOLD_COUNT_DESC, 0L); + pausesWithGc = getMetricsRegistry().newTimeHistogram(PAUSE_TIME_WITH_GC_KEY); + pausesWithoutGc = getMetricsRegistry().newTimeHistogram(PAUSE_TIME_WITHOUT_GC_KEY); } @Override @@ -99,4 +113,23 @@ public class MetricsMasterSourceImpl metricsRegistry.snapshot(metricsRecordBuilder, all); } + @Override + public void incInfoThresholdExceeded(int count) { + infoPauseThresholdExceeded.incr(count); + } + + @Override + public void incWarnThresholdExceeded(int count) { + warnPauseThresholdExceeded.incr(count); + } + + @Override + public void updatePauseTimeWithGc(long t) { + pausesWithGc.add(t); + } + + @Override + public void updatePauseTimeWithoutGc(long t) { + pausesWithoutGc.add(t); + } } http://git-wip-us.apache.org/repos/asf/hbase/blob/d2702204/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java index 4e2d836..017f861 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.master; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.metrics.BaseSourceImpl; +import org.apache.hadoop.metrics2.MetricHistogram; import org.apache.hadoop.metrics2.MetricsCollector; import org.apache.hadoop.metrics2.MetricsRecordBuilder; import org.apache.hadoop.metrics2.lib.Interns; @@ -37,6 +38,12 @@ public class MetricsMasterSourceImpl private final MetricsMasterWrapper masterWrapper; private MutableCounterLong clusterRequestsCounter; + // pause monitor metrics + private final MutableCounterLong infoPauseThresholdExceeded; + private final MutableCounterLong warnPauseThresholdExceeded; + private final MetricHistogram pausesWithGc; + private final MetricHistogram pausesWithoutGc; + public MetricsMasterSourceImpl(MetricsMasterWrapper masterWrapper) { this(METRICS_NAME, METRICS_DESCRIPTION, @@ -53,6 +60,13 @@ public class MetricsMasterSourceImpl super(metricsName, metricsDescription, metricsContext, metricsJmxContext); this.masterWrapper = masterWrapper; + // pause monitor metrics + infoPauseThresholdExceeded = getMetricsRegistry().newCounter(INFO_THRESHOLD_COUNT_KEY, + INFO_THRESHOLD_COUNT_DESC, 0L); + warnPauseThresholdExceeded = getMetricsRegistry().newCounter(WARN_THRESHOLD_COUNT_KEY, + WARN_THRESHOLD_COUNT_DESC, 0L); + pausesWithGc = getMetricsRegistry().newTimeHistogram(PAUSE_TIME_WITH_GC_KEY); + pausesWithoutGc = getMetricsRegistry().newTimeHistogram(PAUSE_TIME_WITHOUT_GC_KEY); } @Override @@ -100,4 +114,23 @@ public class MetricsMasterSourceImpl metricsRegistry.snapshot(metricsRecordBuilder, all); } + @Override + public void incInfoThresholdExceeded(int count) { + infoPauseThresholdExceeded.incr(count); + } + + @Override + public void incWarnThresholdExceeded(int count) { + warnPauseThresholdExceeded.incr(count); + } + + @Override + public void updatePauseTimeWithGc(long t) { + pausesWithGc.add(t); + } + + @Override + public void updatePauseTimeWithoutGc(long t) { + pausesWithoutGc.add(t); + } } http://git-wip-us.apache.org/repos/asf/hbase/blob/d2702204/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 071104b..cbecdb5 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -371,7 +371,6 @@ MasterServices, Server { // RPC server for the HMaster private final RpcServerInterface rpcServer; - private JvmPauseMonitor pauseMonitor; // Set after we've called HBaseServer#openServer and ready to receive RPCs. // Set back to false after we stop rpcServer. Used by tests. private volatile boolean rpcServerOpen = false; @@ -386,6 +385,8 @@ MasterServices, Server { // Metrics for the HMaster private final MetricsMaster metricsMaster; + // Pause monitor + private final JvmPauseMonitor pauseMonitor; // file system manager for the master FS operations private MasterFileSystem fileSystemManager; @@ -553,8 +554,6 @@ MasterServices, Server { this.zooKeeper = new ZooKeeperWatcher(conf, MASTER + ":" + isa.getPort(), this, true); this.rpcServer.startThreads(); - this.pauseMonitor = new JvmPauseMonitor(conf); - this.pauseMonitor.start(); // metrics interval: using the same property as region server. this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000); @@ -566,6 +565,8 @@ MasterServices, Server { this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true); this.metricsMaster = new MetricsMaster( new MetricsMasterWrapperImpl(this)); + this.pauseMonitor = new JvmPauseMonitor(conf, metricsMaster.getMetricsSource()); + this.pauseMonitor.start(); // preload table descriptor at startup this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);