HBASE-20672 Adding new Metrics readRequestRate and writeRequestRate Signed-off-by: tedyu <yuzhih...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/519236b4 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/519236b4 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/519236b4 Branch: refs/heads/HBASE-20331 Commit: 519236b4afa7325d482380e945faf0a7d4c97254 Parents: 30a052b Author: Ankit <jain.an...@salesforce.com> Authored: Thu Jun 7 15:03:03 2018 -0700 Committer: tedyu <yuzhih...@gmail.com> Committed: Fri Jun 8 13:48:33 2018 -0700 ---------------------------------------------------------------------- .../regionserver/MetricsRegionServerSource.java | 6 ++++ .../MetricsRegionServerWrapper.java | 10 +++++++ .../MetricsRegionServerSourceImpl.java | 6 +++- .../MetricsRegionServerWrapperImpl.java | 29 ++++++++++++++++++++ .../MetricsRegionServerWrapperStub.java | 10 +++++++ 5 files changed, 60 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/519236b4/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java ---------------------------------------------------------------------- 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 4636fe0..c02ca26 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 @@ -256,12 +256,18 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo String READ_REQUEST_COUNT = "readRequestCount"; String READ_REQUEST_COUNT_DESC = "Number of read requests with non-empty Results that this RegionServer has answered."; + String READ_REQUEST_RATE_PER_SECOND = "readRequestRatePerSecond"; + String READ_REQUEST_RATE_DESC = + "Rate of answering the read requests by this region server per second."; String FILTERED_READ_REQUEST_COUNT = "filteredReadRequestCount"; String FILTERED_READ_REQUEST_COUNT_DESC = "Number of filtered read requests this RegionServer has answered."; String WRITE_REQUEST_COUNT = "writeRequestCount"; String WRITE_REQUEST_COUNT_DESC = "Number of mutation requests this RegionServer has answered."; + String WRITE_REQUEST_RATE_PER_SECOND = "writeRequestRatePerSecond"; + String WRITE_REQUEST_RATE_DESC = + "Rate of answering the mutation requests by this region server per second."; String CHECK_MUTATE_FAILED_COUNT = "checkMutateFailedCount"; String CHECK_MUTATE_FAILED_COUNT_DESC = "Number of Check and Mutate calls that failed the checks."; http://git-wip-us.apache.org/repos/asf/hbase/blob/519236b4/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java ---------------------------------------------------------------------- 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 83a8339..13a5d84 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 @@ -136,6 +136,11 @@ public interface MetricsRegionServerWrapper { long getReadRequestsCount(); /** + * Get the rate of read requests per second to regions hosted on this region server. + */ + double getReadRequestsRatePerSecond(); + + /** * Get the number of filtered read requests to regions hosted on this region server. */ long getFilteredReadRequestsCount(); @@ -146,6 +151,11 @@ public interface MetricsRegionServerWrapper { long getWriteRequestsCount(); /** + * Get the rate of write requests per second to regions hosted on this region server. + */ + double getWriteRequestsRatePerSecond(); + + /** * Get the number of CAS operations that failed. */ long getCheckAndMutateChecksFailed(); http://git-wip-us.apache.org/repos/asf/hbase/blob/519236b4/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java ---------------------------------------------------------------------- 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 94b8389..88d9e06 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 @@ -544,7 +544,11 @@ public class MetricsRegionServerSourceImpl .addGauge(Interns.info(MOB_FILE_CACHE_COUNT, MOB_FILE_CACHE_COUNT_DESC), rsWrap.getMobFileCacheCount()) .addGauge(Interns.info(MOB_FILE_CACHE_HIT_PERCENT, MOB_FILE_CACHE_HIT_PERCENT_DESC), - rsWrap.getMobFileCacheHitPercent()); + rsWrap.getMobFileCacheHitPercent()) + .addGauge(Interns.info(READ_REQUEST_RATE_PER_SECOND, READ_REQUEST_RATE_DESC), + rsWrap.getReadRequestsRatePerSecond()) + .addGauge(Interns.info(WRITE_REQUEST_RATE_PER_SECOND, WRITE_REQUEST_RATE_DESC), + rsWrap.getWriteRequestsRatePerSecond()); } @Override http://git-wip-us.apache.org/repos/asf/hbase/blob/519236b4/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java ---------------------------------------------------------------------- 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 09929e1..371bdbc 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 @@ -74,8 +74,10 @@ class MetricsRegionServerWrapperImpl private volatile long numReferenceFiles = 0; private volatile double requestsPerSecond = 0.0; private volatile long readRequestsCount = 0; + private volatile double readRequestsRatePerSecond = 0; private volatile long filteredReadRequestsCount = 0; private volatile long writeRequestsCount = 0; + private volatile double writeRequestsRatePerSecond = 0; private volatile long checkAndMutateChecksFailed = 0; private volatile long checkAndMutateChecksPassed = 0; private volatile long storefileIndexSize = 0; @@ -519,6 +521,11 @@ class MetricsRegionServerWrapperImpl } @Override + public double getReadRequestsRatePerSecond() { + return readRequestsRatePerSecond; + } + + @Override public long getFilteredReadRequestsCount() { return filteredReadRequestsCount; } @@ -529,6 +536,11 @@ class MetricsRegionServerWrapperImpl } @Override + public double getWriteRequestsRatePerSecond() { + return writeRequestsRatePerSecond; + } + + @Override public long getRpcGetRequestsCount() { return regionServer.rpcServices.rpcGetRequestCount.sum(); } @@ -710,6 +722,8 @@ class MetricsRegionServerWrapperImpl private long lastRan = 0; private long lastRequestCount = 0; + private long lastReadRequestsCount = 0; + private long lastWriteRequestsCount = 0; @Override synchronized public void run() { @@ -845,6 +859,21 @@ class MetricsRegionServerWrapperImpl requestsPerSecond = (currentRequestCount - lastRequestCount) / ((currentTime - lastRan) / 1000.0); lastRequestCount = currentRequestCount; + + long intervalReadRequestsCount = tempReadRequestsCount - lastReadRequestsCount; + long intervalWriteRequestsCount = tempWriteRequestsCount - lastWriteRequestsCount; + + double readRequestsRatePerMilliSecond = ((double)intervalReadRequestsCount/ + (double)period); + double writeRequestsRatePerMilliSecond = ((double)intervalWriteRequestsCount/ + (double)period); + + readRequestsRatePerSecond = readRequestsRatePerMilliSecond * 1000.0; + writeRequestsRatePerSecond = writeRequestsRatePerMilliSecond * 1000.0; + + lastReadRequestsCount = tempReadRequestsCount; + lastWriteRequestsCount = tempWriteRequestsCount; + } lastRan = currentTime; http://git-wip-us.apache.org/repos/asf/hbase/blob/519236b4/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java ---------------------------------------------------------------------- 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 d56823e..d1162c9 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 @@ -101,6 +101,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe } @Override + public double getReadRequestsRatePerSecond() { + return 10.0; + } + + @Override public long getTotalRowActionRequestCount() { return getReadRequestsCount() + getWriteRequestsCount(); } @@ -121,6 +126,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe } @Override + public double getWriteRequestsRatePerSecond() { + return 10.0; + } + + @Override public long getRpcGetRequestsCount() { return 521; }