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]]