You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by sy...@apache.org on 2020/06/08 12:40:07 UTC

[zookeeper] branch branch-3.6 updated: ZOOKEEPER-3845: Add metric JVM_PAUSE_TIME

This is an automated email from the ASF dual-hosted git repository.

symat pushed a commit to branch branch-3.6
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/branch-3.6 by this push:
     new cf131e7  ZOOKEEPER-3845: Add metric JVM_PAUSE_TIME
cf131e7 is described below

commit cf131e797c32ae11f0435ac889a490372470c2e5
Author: Jie Huang <ji...@fb.com>
AuthorDate: Mon Jun 8 12:33:03 2020 +0000

    ZOOKEEPER-3845: Add metric JVM_PAUSE_TIME
    
    Author: Jie Huang <ji...@fb.com>
    
    Reviewers: Michael Han <ha...@apache.org>, Andor Molnar <an...@apache.org>, Enrico Olivelli <eo...@apache.org>, Mate Szalay-Beko <sy...@apache.org>
    
    Closes #1365 from jhuan31/ZOOKEEPER-3845
    
    (cherry picked from commit db99959ef338783102f8755b4d10c1443f709425)
    Signed-off-by: Mate Szalay-Beko <sy...@apache.org>
---
 .../src/main/java/org/apache/zookeeper/server/ServerMetrics.java     | 4 ++++
 .../main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java  | 5 ++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java
index 5cd4abe..4a10978 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ServerMetrics.java
@@ -230,6 +230,8 @@ public final class ServerMetrics {
 
         DIGEST_MISMATCHES_COUNT = metricsContext.getCounter("digest_mismatches_count");
         TLS_HANDSHAKE_EXCEEDED = metricsContext.getCounter("tls_handshake_exceeded");
+
+        JVM_PAUSE_TIME = metricsContext.getSummary("jvm_pause_time_ms", DetailLevel.ADVANCED);
     }
 
     /**
@@ -444,6 +446,8 @@ public final class ServerMetrics {
 
     public final Counter TLS_HANDSHAKE_EXCEEDED;
 
+    public final Summary JVM_PAUSE_TIME;
+
     private final MetricsProvider metricsProvider;
 
     public void resetAll() {
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java
index 0a50c16..cdefb5d 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.zookeeper.server.ServerConfig;
+import org.apache.zookeeper.server.ServerMetrics;
 import org.apache.zookeeper.server.quorum.QuorumPeerConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -191,8 +192,10 @@ public class JvmPauseMonitor {
                 }
                 long endTime = Instant.now().toEpochMilli();
                 long extraSleepTime = (endTime - startTime) - sleepTimeMs;
+                if (extraSleepTime >= 0) {
+                    ServerMetrics.getMetrics().JVM_PAUSE_TIME.add(extraSleepTime);
+                }
                 Map<String, GcTimes> gcTimesAfterSleep = getGcTimes();
-
                 if (extraSleepTime > warnThresholdMs) {
                     ++numGcWarnThresholdExceeded;
                     LOG.warn(formatMessage(extraSleepTime, gcTimesAfterSleep, gcTimesBeforeSleep));