This is an automated email from the ASF dual-hosted git repository.
wchevreuil 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 a371282154d HBASE-29731 Add L1 and L2 cache hit/miss caching metrics
(#7494)
a371282154d is described below
commit a371282154d08e25fd765dd663a07283ae1c5ad0
Author: Jaehui Lee <[email protected]>
AuthorDate: Tue Dec 2 23:38:56 2025 +0900
HBASE-29731 Add L1 and L2 cache hit/miss caching metrics (#7494)
Signed-off-by: Wellington Chevreuil <[email protected]>
Reviewed-by: Liu Xiao <[email protected]>
---
.../regionserver/MetricsRegionServerSource.java | 20 +++++++++++
.../regionserver/MetricsRegionServerWrapper.java | 40 ++++++++++++++++++++++
.../MetricsRegionServerSourceImpl.java | 16 +++++++++
.../MetricsRegionServerWrapperImpl.java | 40 ++++++++++++++++++++++
.../MetricsRegionServerWrapperStub.java | 40 ++++++++++++++++++++++
.../regionserver/TestMetricsRegionServer.java | 8 +++++
6 files changed, 164 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 c68809a1fdd..d6419b14ac2 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
@@ -401,12 +401,22 @@ public interface MetricsRegionServerSource extends
BaseSource, JvmPauseMonitorSo
String L1_CACHE_HIT_COUNT = "l1CacheHitCount";
String L1_CACHE_HIT_COUNT_DESC = "L1 cache hit count.";
+ String L1_CACHE_HIT_CAGHING_COUNT = "l1CacheHitCachingCount";
+ String L1_CACHE_HIT_CAGHING_COUNT_DESC =
+ "Count of the hit on the L1 cache, for cacheable requests";
String L1_CACHE_MISS_COUNT = "l1CacheMissCount";
String L1_CACHE_MISS_COUNT_DESC = "L1 cache miss count.";
+ String L1_CACHE_MISS_CACHING_COUNT = "l1CacheMissCachingCount";
+ String L1_CACHE_MISS_CACHING_COUNT_DESC =
+ "Count of the misses on the L1 cache, for cacheable requests";
String L1_CACHE_HIT_RATIO = "l1CacheHitRatio";
String L1_CACHE_HIT_RATIO_DESC = "L1 cache hit ratio.";
+ String L1_CACHE_HIT_CACHING_RATIO = "l1CacheHitCachingRatio";
+ String L1_CACHE_HIT_CACHING_RATIO_DESC = "Hit Caching ratio of L1 cache";
String L1_CACHE_MISS_RATIO = "l1CacheMissRatio";
String L1_CACHE_MISS_RATIO_DESC = "L1 cache miss ratio.";
+ String L1_CACHE_MISS_CACHING_RATIO = "l1CacheMissCachingRatio";
+ String L1_CACHE_MISS_CACHING_RATIO_DESC = "Miss Caching ratio of L1 cache";
String L2_CACHE_FREE_SIZE = "l2CacheFreeSize";
String L2_CACHE_FREE_SIZE_DESC = "Amount of free bytes in the L2 cache";
String L2_CACHE_SIZE = "l2CacheSize";
@@ -417,12 +427,22 @@ public interface MetricsRegionServerSource extends
BaseSource, JvmPauseMonitorSo
String L2_CACHE_EVICTION_COUNT_DESC = "Count of blocks evicted from the L2
cache";
String L2_CACHE_HIT_COUNT = "l2CacheHitCount";
String L2_CACHE_HIT_COUNT_DESC = "L2 cache hit count.";
+ String L2_CACHE_HIT_CACHING_COUNT = "l2CacheHitCachingCount";
+ String L2_CACHE_HIT_CACHING_COUNT_DESC =
+ "Count of the hit on the L2 cache, for cacheable requests";
String L2_CACHE_MISS_COUNT = "l2CacheMissCount";
String L2_CACHE_MISS_COUNT_DESC = "L2 cache miss count.";
+ String L2_CACHE_MISS_CACHING_COUNT = "l2CacheMissCachingCount";
+ String L2_CACHE_MISS_CACHING_COUNT_DESC =
+ "Count of the misses on the L2 cache, for cacheable requests";
String L2_CACHE_HIT_RATIO = "l2CacheHitRatio";
String L2_CACHE_HIT_RATIO_DESC = "L2 cache hit ratio.";
+ String L2_CACHE_HIT_CACHING_RATIO = "l2CacheHitCachingRatio";
+ String L2_CACHE_HIT_CACHING_RATIO_DESC = "Hit Caching ratio of L2 cache";
String L2_CACHE_MISS_RATIO = "l2CacheMissRatio";
String L2_CACHE_MISS_RATIO_DESC = "L2 cache miss ratio.";
+ String L2_CACHE_MISS_CACHING_RATIO = "l2CacheMissCachingRatio";
+ String L2_CACHE_MISS_CACHING_RATIO_DESC = "Miss Caching ratio of L2 cache";
String RS_START_TIME_NAME = "regionServerStartTime";
String ZOOKEEPER_QUORUM_NAME = "zookeeperQuorum";
String SERVER_NAME_NAME = "serverName";
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 10e71d091f5..34ad4b4e759 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
@@ -364,21 +364,41 @@ public interface MetricsRegionServerWrapper {
*/
long getL1CacheHitCount();
+ /**
+ * Hit Caching count of L1 cache, for cacheable requests only.
+ */
+ long getL1CacheHitCachingCount();
+
/**
* Miss count of L1 cache.
*/
long getL1CacheMissCount();
+ /**
+ * Miss Caching count of L1 cache, for cacheable requests only.
+ */
+ long getL1CacheMissCachingCount();
+
/**
* Hit ratio of L1 cache.
*/
double getL1CacheHitRatio();
+ /**
+ * Hit Caching ratio of L1 cache.
+ */
+ double getL1CacheHitCachingRatio();
+
/**
* Miss ratio of L1 cache.
*/
double getL1CacheMissRatio();
+ /**
+ * Miss Caching ratio of L1 cache.
+ */
+ double getL1CacheMissCachingRatio();
+
/**
* Cache size (bytes) of L2 cache
*/
@@ -404,21 +424,41 @@ public interface MetricsRegionServerWrapper {
*/
long getL2CacheHitCount();
+ /**
+ * Hit Caching count of L2 cache, for cacheable requests only.
+ */
+ long getL2CacheHitCachingCount();
+
/**
* Miss count of L2 cache.
*/
long getL2CacheMissCount();
+ /**
+ * Miss Caching count of L2 cache, for cacheable requests only.
+ */
+ long getL2CacheMissCachingCount();
+
/**
* Hit ratio of L2 cache.
*/
double getL2CacheHitRatio();
+ /**
+ * Hit Caching ratio of L2 cache.
+ */
+ double getL2CacheHitCachingRatio();
+
/**
* Miss ratio of L2 cache.
*/
double getL2CacheMissRatio();
+ /**
+ * Miss Caching ratio of L2 cache.
+ */
+ double getL2CacheMissCachingRatio();
+
/**
* Force a re-computation of the metrics.
*/
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 e0429cfb55d..86b2f02b6a6 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
@@ -593,12 +593,20 @@ public class MetricsRegionServerSourceImpl extends
BaseSourceImpl
rsWrap.getL1CacheEvictedCount())
.addGauge(Interns.info(L1_CACHE_HIT_COUNT, L1_CACHE_HIT_COUNT_DESC),
rsWrap.getL1CacheHitCount())
+ .addGauge(Interns.info(L1_CACHE_HIT_CAGHING_COUNT,
L1_CACHE_HIT_CAGHING_COUNT_DESC),
+ rsWrap.getL1CacheHitCachingCount())
.addGauge(Interns.info(L1_CACHE_MISS_COUNT, L1_CACHE_MISS_COUNT_DESC),
rsWrap.getL1CacheMissCount())
+ .addGauge(Interns.info(L1_CACHE_MISS_CACHING_COUNT,
L1_CACHE_MISS_CACHING_COUNT_DESC),
+ rsWrap.getL1CacheMissCachingCount())
.addGauge(Interns.info(L1_CACHE_HIT_RATIO, L1_CACHE_HIT_RATIO_DESC),
rsWrap.getL1CacheHitRatio())
+ .addGauge(Interns.info(L1_CACHE_HIT_CACHING_RATIO,
L1_CACHE_HIT_CACHING_RATIO_DESC),
+ rsWrap.getL1CacheHitCachingRatio())
.addGauge(Interns.info(L1_CACHE_MISS_RATIO, L1_CACHE_MISS_RATIO_DESC),
rsWrap.getL1CacheMissRatio())
+ .addGauge(Interns.info(L1_CACHE_MISS_CACHING_RATIO,
L1_CACHE_MISS_CACHING_RATIO_DESC),
+ rsWrap.getL1CacheMissCachingRatio())
.addGauge(Interns.info(L2_CACHE_SIZE, L2_CACHE_SIZE_DESC),
rsWrap.getL2CacheSize())
.addGauge(Interns.info(L2_CACHE_FREE_SIZE, L2_CACHE_FREE_SIZE_DESC),
rsWrap.getL2CacheFreeSize())
@@ -607,12 +615,20 @@ public class MetricsRegionServerSourceImpl extends
BaseSourceImpl
rsWrap.getL2CacheEvictedCount())
.addGauge(Interns.info(L2_CACHE_HIT_COUNT, L2_CACHE_HIT_COUNT_DESC),
rsWrap.getL2CacheHitCount())
+ .addGauge(Interns.info(L2_CACHE_HIT_CACHING_COUNT,
L2_CACHE_HIT_CACHING_COUNT_DESC),
+ rsWrap.getL2CacheHitCachingCount())
.addGauge(Interns.info(L2_CACHE_MISS_COUNT, L2_CACHE_MISS_COUNT_DESC),
rsWrap.getL2CacheMissCount())
+ .addGauge(Interns.info(L2_CACHE_MISS_CACHING_COUNT,
L2_CACHE_MISS_CACHING_COUNT_DESC),
+ rsWrap.getL2CacheMissCachingCount())
.addGauge(Interns.info(L2_CACHE_HIT_RATIO, L2_CACHE_HIT_RATIO_DESC),
rsWrap.getL2CacheHitRatio())
+ .addGauge(Interns.info(L2_CACHE_HIT_CACHING_RATIO,
L2_CACHE_HIT_CACHING_RATIO_DESC),
+ rsWrap.getL2CacheHitCachingRatio())
.addGauge(Interns.info(L2_CACHE_MISS_RATIO, L2_CACHE_MISS_RATIO_DESC),
rsWrap.getL2CacheMissRatio())
+ .addGauge(Interns.info(L2_CACHE_MISS_CACHING_RATIO,
L2_CACHE_MISS_CACHING_RATIO_DESC),
+ rsWrap.getL2CacheMissCachingRatio())
.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),
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 d52509e0808..f16a876419c 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
@@ -373,41 +373,81 @@ class MetricsRegionServerWrapperImpl implements
MetricsRegionServerWrapper {
return this.l1Stats != null ? this.l1Stats.getHitCount() : 0L;
}
+ @Override
+ public long getL1CacheHitCachingCount() {
+ return this.l1Stats != null ? this.l1Stats.getHitCachingCount() : 0L;
+ }
+
@Override
public long getL1CacheMissCount() {
return this.l1Stats != null ? this.l1Stats.getMissCount() : 0L;
}
+ @Override
+ public long getL1CacheMissCachingCount() {
+ return this.l1Stats != null ? this.l1Stats.getMissCachingCount() : 0L;
+ }
+
@Override
public double getL1CacheHitRatio() {
return this.l1Stats != null ? this.l1Stats.getHitRatio() : 0.0;
}
+ @Override
+ public double getL1CacheHitCachingRatio() {
+ return this.l1Stats != null ? this.l1Stats.getHitCachingRatio() : 0.0;
+ }
+
@Override
public double getL1CacheMissRatio() {
return this.l1Stats != null ? this.l1Stats.getMissRatio() : 0.0;
}
+ @Override
+ public double getL1CacheMissCachingRatio() {
+ return this.l1Stats != null ? this.l1Stats.getMissCachingRatio() : 0.0;
+ }
+
@Override
public long getL2CacheHitCount() {
return this.l2Stats != null ? this.l2Stats.getHitCount() : 0L;
}
+ @Override
+ public long getL2CacheHitCachingCount() {
+ return this.l2Stats != null ? this.l2Stats.getHitCachingCount() : 0L;
+ }
+
@Override
public long getL2CacheMissCount() {
return this.l2Stats != null ? this.l2Stats.getMissCount() : 0L;
}
+ @Override
+ public long getL2CacheMissCachingCount() {
+ return this.l2Stats != null ? this.l2Stats.getMissCachingCount() : 0L;
+ }
+
@Override
public double getL2CacheHitRatio() {
return this.l2Stats != null ? this.l2Stats.getHitRatio() : 0.0;
}
+ @Override
+ public double getL2CacheHitCachingRatio() {
+ return this.l2Stats != null ? this.l2Stats.getHitCachingRatio() : 0.0;
+ }
+
@Override
public double getL2CacheMissRatio() {
return this.l2Stats != null ? this.l2Stats.getMissRatio() : 0.0;
}
+ @Override
+ public double getL2CacheMissCachingRatio() {
+ return this.l2Stats != null ? this.l2Stats.getMissCachingRatio() : 0.0;
+ }
+
@Override
public void forceRecompute() {
this.runnable.run();
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 0e77ae89fef..811582c537b 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
@@ -397,21 +397,41 @@ public class MetricsRegionServerWrapperStub implements
MetricsRegionServerWrappe
return 200;
}
+ @Override
+ public long getL1CacheHitCachingCount() {
+ return 200;
+ }
+
@Override
public long getL1CacheMissCount() {
return 100;
}
+ @Override
+ public long getL1CacheMissCachingCount() {
+ return 100;
+ }
+
@Override
public double getL1CacheHitRatio() {
return 80;
}
+ @Override
+ public double getL1CacheHitCachingRatio() {
+ return 80;
+ }
+
@Override
public double getL1CacheMissRatio() {
return 20;
}
+ @Override
+ public double getL1CacheMissCachingRatio() {
+ return 20;
+ }
+
@Override
public long getL2CacheSize() {
return 456;
@@ -437,21 +457,41 @@ public class MetricsRegionServerWrapperStub implements
MetricsRegionServerWrappe
return 800;
}
+ @Override
+ public long getL2CacheHitCachingCount() {
+ return 800;
+ }
+
@Override
public long getL2CacheMissCount() {
return 200;
}
+ @Override
+ public long getL2CacheMissCachingCount() {
+ return 200;
+ }
+
@Override
public double getL2CacheHitRatio() {
return 90;
}
+ @Override
+ public double getL2CacheHitCachingRatio() {
+ return 90;
+ }
+
@Override
public double getL2CacheMissRatio() {
return 10;
}
+ @Override
+ public double getL2CacheMissCachingRatio() {
+ return 10;
+ }
+
@Override
public long getUpdatesBlockedTime() {
return 419;
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java
index ce78aa40ab7..f7ada213d98 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java
@@ -136,17 +136,25 @@ public class TestMetricsRegionServer {
HELPER.assertGauge("l1CacheCount", 50, serverSource);
HELPER.assertCounter("l1CacheEvictionCount", 1000, serverSource);
HELPER.assertGauge("l1CacheHitCount", 200, serverSource);
+ HELPER.assertGauge("l1CacheHitCachingCount", 200, serverSource);
HELPER.assertGauge("l1CacheMissCount", 100, serverSource);
+ HELPER.assertGauge("l1CacheMissCachingCount", 100, serverSource);
HELPER.assertGauge("l1CacheHitRatio", 80, serverSource);
+ HELPER.assertGauge("l1CacheHitCachingRatio", 80, serverSource);
HELPER.assertGauge("l1CacheMissRatio", 20, serverSource);
+ HELPER.assertGauge("l1CacheMissCachingRatio", 20, serverSource);
HELPER.assertGauge("l2CacheFreeSize", 200, serverSource);
HELPER.assertGauge("l2CacheSize", 456, serverSource);
HELPER.assertGauge("l2CacheCount", 75, serverSource);
HELPER.assertCounter("l2CacheEvictionCount", 2000, serverSource);
HELPER.assertGauge("l2CacheHitCount", 800, serverSource);
+ HELPER.assertGauge("l2CacheHitCachingCount", 800, serverSource);
HELPER.assertGauge("l2CacheMissCount", 200, serverSource);
+ HELPER.assertGauge("l2CacheMissCachingCount", 200, serverSource);
HELPER.assertGauge("l2CacheHitRatio", 90, serverSource);
+ HELPER.assertGauge("l2CacheHitCachingRatio", 90, serverSource);
HELPER.assertGauge("l2CacheMissRatio", 10, serverSource);
+ HELPER.assertGauge("l2CacheMissCachingRatio", 10, serverSource);
HELPER.assertCounter("updatesBlockedTime", 419, serverSource);
}