HBASE-20672 New metrics ReadRequestRate and WriteRequestRate Signed-off-by: Andrew Purtell <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e66a6603 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e66a6603 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e66a6603 Branch: refs/heads/HBASE-20749 Commit: e66a6603e36ecd67237ca16acd5e2de03f0d372d Parents: b4eacda Author: Ankit <[email protected]> Authored: Thu Jun 7 15:03:03 2018 -0700 Committer: Andrew Purtell <[email protected]> Committed: Thu Jul 19 15:33:09 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/e66a6603/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 2ae26e1..77367e7 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,6 +256,9 @@ 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 CP_REQUEST_COUNT = "cpRequestCount"; String CP_REQUEST_COUNT_DESC = "Number of coprocessor service requests this region server has answered."; @@ -265,6 +268,9 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo 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/e66a6603/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 02c78c7..b3a8dac 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 @@ -141,6 +141,11 @@ public interface MetricsRegionServerWrapper { long getCpRequestsCount(); /** + * 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(); @@ -151,6 +156,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/e66a6603/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 e6f2e93..7bed36c 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 @@ -546,7 +546,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/e66a6603/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 c1c8f07..04a32c8 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,9 +74,11 @@ 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 cpRequestsCount = 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; @@ -525,6 +527,11 @@ class MetricsRegionServerWrapperImpl } @Override + public double getReadRequestsRatePerSecond() { + return readRequestsRatePerSecond; + } + + @Override public long getFilteredReadRequestsCount() { return filteredReadRequestsCount; } @@ -535,6 +542,11 @@ class MetricsRegionServerWrapperImpl } @Override + public double getWriteRequestsRatePerSecond() { + return writeRequestsRatePerSecond; + } + + @Override public long getRpcGetRequestsCount() { return regionServer.rpcServices.rpcGetRequestCount.sum(); } @@ -716,6 +728,8 @@ class MetricsRegionServerWrapperImpl private long lastRan = 0; private long lastRequestCount = 0; + private long lastReadRequestsCount = 0; + private long lastWriteRequestsCount = 0; @Override synchronized public void run() { @@ -852,6 +866,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/e66a6603/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 6537ec3..314d69c 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(); } @@ -126,6 +131,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe } @Override + public double getWriteRequestsRatePerSecond() { + return 10.0; + } + + @Override public long getRpcGetRequestsCount() { return 521; }
