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

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


The following commit(s) were added to refs/heads/branch-2.6 by this push:
     new dd74ba2d739 HBASE-29731 Add L1 and L2 cache hit/miss caching metrics 
(#7494)
dd74ba2d739 is described below

commit dd74ba2d73978e0e8048fc5d14e4040f1a6e23ef
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);
   }
 

Reply via email to