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

zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new cd66d8c  HBASE-24994 Add hedgedReadOpsInCurThread metric (#2367)
cd66d8c is described below

commit cd66d8cba56fef0b869454ec553a5e1214be10a8
Author: Javier Akira Luca de Tena <[email protected]>
AuthorDate: Fri Sep 11 14:49:11 2020 +0900

    HBASE-24994 Add hedgedReadOpsInCurThread metric (#2367)
    
    Signed-off-by: Duo Zhang <[email protected]>
---
 .../apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java  | 3 +++
 .../apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java | 5 +++++
 .../hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java     | 2 ++
 .../hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java    | 5 +++++
 .../hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java    | 5 +++++
 src/main/asciidoc/_chapters/performance.adoc                         | 2 ++
 6 files changed, 22 insertions(+)

diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
index ce9319e..d3707df 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
@@ -480,6 +480,9 @@ public interface MetricsRegionServerSource extends 
BaseSource, JvmPauseMonitorSo
   String HEDGED_READ_WINS = "hedgedReadWins";
   String HEDGED_READ_WINS_DESC =
       "The number of times we started a hedged read and a hedged read won";
+  String HEDGED_READ_IN_CUR_THREAD = "hedgedReadOpsInCurThread";
+  String HEDGED_READ_IN_CUR_THREAD_DESC =
+    "The number of times we execute a hedged read in current thread as a 
fallback for task rejection";
 
   String TOTAL_BYTES_READ = "totalBytesRead";
   String TOTAL_BYTES_READ_DESC = "The total number of bytes read from HDFS";
diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java
index 2ed6ab4..1b5fc48 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java
@@ -443,6 +443,11 @@ public interface MetricsRegionServerWrapper {
   long getHedgedReadWins();
 
   /**
+   * @return Count of times a hedged read executes in current thread
+   */
+  long getHedgedReadOpsInCurThread();
+
+  /**
    * @return Number of total bytes read from HDFS.
    */
   long getTotalBytesRead();
diff --git 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java
 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java
index e8d7f36..fed4889 100644
--- 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java
+++ 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java
@@ -456,6 +456,8 @@ public class MetricsRegionServerSourceImpl
               .addCounter(Interns.info(HEDGED_READS, HEDGED_READS_DESC), 
rsWrap.getHedgedReadOps())
               .addCounter(Interns.info(HEDGED_READ_WINS, 
HEDGED_READ_WINS_DESC),
                       rsWrap.getHedgedReadWins())
+              .addCounter(Interns.info(HEDGED_READ_IN_CUR_THREAD, 
HEDGED_READ_IN_CUR_THREAD_DESC),
+                      rsWrap.getHedgedReadOpsInCurThread())
               .addCounter(Interns.info(BLOCKED_REQUESTS_COUNT, 
BLOCKED_REQUESTS_COUNT_DESC),
                       rsWrap.getBlockedRequestsCount())
               .tag(Interns.info(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC),
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java
index 5e1431c..6425193 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java
@@ -907,6 +907,11 @@ class MetricsRegionServerWrapperImpl
   }
 
   @Override
+  public long getHedgedReadOpsInCurThread() {
+    return this.dfsHedgedReadMetrics == null ? 0 : 
this.dfsHedgedReadMetrics.getHedgedReadOpsInCurThread();
+  }
+
+  @Override
   public long getTotalBytesRead() {
     return FSDataInputStreamWrapper.getTotalBytesRead();
   }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java
index 6402b4e..9076921 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java
@@ -411,6 +411,11 @@ public class MetricsRegionServerWrapperStub implements 
MetricsRegionServerWrappe
   }
 
   @Override
+  public long getHedgedReadOpsInCurThread() {
+    return 5;
+  }
+
+  @Override
   public long getTotalBytesRead() {
     return 0;
   }
diff --git a/src/main/asciidoc/_chapters/performance.adoc 
b/src/main/asciidoc/_chapters/performance.adoc
index ad6572d..6d3f8e4 100644
--- a/src/main/asciidoc/_chapters/performance.adoc
+++ b/src/main/asciidoc/_chapters/performance.adoc
@@ -801,6 +801,8 @@ See <<hbase_metrics>>  for more information.
   This could indicate that read requests are often slow, or that hedged reads 
are triggered too quickly.
 * hedgeReadOpsWin - the number of times the hedged read thread was faster than 
the original thread.
   This could indicate that a given RegionServer is having trouble servicing 
requests.
+* hedgedReadOpsInCurThread - the number of times hedged read was rejected from 
executor and needed to fallback to be executed in current thread.
+  This could indicate that current hedged read thread pool size is not 
appropriate.
 
 
 [[perf.deleting]]

Reply via email to