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

kturner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new 0a0d519912 adds new metrics for cache evictions (#4549)
0a0d519912 is described below

commit 0a0d5199123260afe778ba1c573b0edd02a235ec
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Fri May 10 18:17:50 2024 -0400

    adds new metrics for cache evictions (#4549)
---
 .../java/org/apache/accumulo/core/client/rfile/RFileScanner.java  | 5 +++++
 .../accumulo/core/file/blockfile/cache/lru/LruBlockCache.java     | 5 +++++
 .../core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java      | 5 +++++
 .../java/org/apache/accumulo/core/metrics/MetricsProducer.java    | 4 ++++
 .../main/java/org/apache/accumulo/core/spi/cache/BlockCache.java  | 7 +++++++
 .../main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java  | 8 ++++++++
 6 files changed, 34 insertions(+)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java 
b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java
index 79ea0bddfd..b62fc84a3c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileScanner.java
@@ -141,6 +141,11 @@ class RFileScanner extends ScannerOptions implements 
Scanner {
         public long requestCount() {
           return 0L;
         }
+
+        @Override
+        public long evictionCount() {
+          return 0L;
+        }
       };
     }
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java
 
b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java
index 2167fdcfb1..a373823e20 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/lru/LruBlockCache.java
@@ -633,6 +633,11 @@ public class LruBlockCache extends 
SynchronousLoadingBlockCache implements Block
       return accessCount.get();
     }
 
+    @Override
+    public long evictionCount() {
+      return getEvictedCount();
+    }
+
     public long getMissCount() {
       return missCount.get();
     }
diff --git 
a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java
 
b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java
index 46a07682bd..ca3a61372f 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/file/blockfile/cache/tinylfu/TinyLfuBlockCache.java
@@ -113,6 +113,11 @@ public final class TinyLfuBlockCache implements BlockCache 
{
       public long requestCount() {
         return stats.requestCount();
       }
+
+      @Override
+      public long evictionCount() {
+        return stats.evictionCount();
+      }
     };
   }
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java 
b/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
index abfdfc9b5a..56ef2cdfbf 100644
--- a/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
+++ b/core/src/main/java/org/apache/accumulo/core/metrics/MetricsProducer.java
@@ -655,11 +655,15 @@ public interface MetricsProducer {
   String METRICS_BLOCKCACHE_PREFIX = "accumulo.blockcache.";
   String METRICS_BLOCKCACHE_INDEX_HITCOUNT = METRICS_BLOCKCACHE_PREFIX + 
"index.hitcount";
   String METRICS_BLOCKCACHE_INDEX_REQUESTCOUNT = METRICS_BLOCKCACHE_PREFIX + 
"index.requestcount";
+  String METRICS_BLOCKCACHE_INDEX_EVICTIONCOUNT = METRICS_BLOCKCACHE_PREFIX + 
"index.evictioncount";
   String METRICS_BLOCKCACHE_DATA_HITCOUNT = METRICS_BLOCKCACHE_PREFIX + 
"data.hitcount";
   String METRICS_BLOCKCACHE_DATA_REQUESTCOUNT = METRICS_BLOCKCACHE_PREFIX + 
"data.requestcount";
+  String METRICS_BLOCKCACHE_DATA_EVICTIONCOUNT = METRICS_BLOCKCACHE_PREFIX + 
"data.evictioncount";
   String METRICS_BLOCKCACHE_SUMMARY_HITCOUNT = METRICS_BLOCKCACHE_PREFIX + 
"summary.hitcount";
   String METRICS_BLOCKCACHE_SUMMARY_REQUESTCOUNT =
       METRICS_BLOCKCACHE_PREFIX + "summary.requestcount";
+  String METRICS_BLOCKCACHE_SUMMARY_EVICTIONCOUNT =
+      METRICS_BLOCKCACHE_PREFIX + "summary.evictioncount";
 
   /**
    * Build Micrometer Meter objects and register them with the registry
diff --git 
a/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java 
b/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java
index d9001490cf..9ebe3fc962 100644
--- a/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java
+++ b/core/src/main/java/org/apache/accumulo/core/spi/cache/BlockCache.java
@@ -111,5 +111,12 @@ public interface BlockCache {
      * @return the number of lookups
      */
     long requestCount();
+
+    /**
+     * @return The number of entries evicted from the cache.
+     *
+     * @since 3.1.0
+     */
+    long evictionCount();
   }
 }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java
index ca3fc6c72f..6444e74ac2 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/BlockCacheMetrics.java
@@ -42,20 +42,28 @@ public class BlockCacheMetrics implements MetricsProducer {
   public void registerMetrics(MeterRegistry registry) {
     ToDoubleFunction<BlockCache> getHitCount = cache -> 
cache.getStats().hitCount();
     ToDoubleFunction<BlockCache> getRequestCount = cache -> 
cache.getStats().requestCount();
+    ToDoubleFunction<BlockCache> getEvictionCount = cache -> 
cache.getStats().evictionCount();
 
     FunctionCounter.builder(METRICS_BLOCKCACHE_INDEX_HITCOUNT, indexCache, 
getHitCount)
         .description("Index block cache hit count").register(registry);
     FunctionCounter.builder(METRICS_BLOCKCACHE_INDEX_REQUESTCOUNT, indexCache, 
getRequestCount)
         .description("Index block cache request count").register(registry);
+    FunctionCounter.builder(METRICS_BLOCKCACHE_INDEX_EVICTIONCOUNT, 
indexCache, getEvictionCount)
+        .description("Index block cache eviction count").register(registry);
 
     FunctionCounter.builder(METRICS_BLOCKCACHE_DATA_HITCOUNT, dataCache, 
getHitCount)
         .description("Data block cache hit count").register(registry);
     FunctionCounter.builder(METRICS_BLOCKCACHE_DATA_REQUESTCOUNT, dataCache, 
getRequestCount)
         .description("Data block cache request count").register(registry);
+    FunctionCounter.builder(METRICS_BLOCKCACHE_DATA_EVICTIONCOUNT, dataCache, 
getEvictionCount)
+        .description("Data block cache eviction count").register(registry);
 
     FunctionCounter.builder(METRICS_BLOCKCACHE_SUMMARY_HITCOUNT, summaryCache, 
getHitCount)
         .description("Summary block cache hit count").register(registry);
     FunctionCounter.builder(METRICS_BLOCKCACHE_SUMMARY_REQUESTCOUNT, 
summaryCache, getRequestCount)
         .description("Summary block cache request count").register(registry);
+    FunctionCounter
+        .builder(METRICS_BLOCKCACHE_SUMMARY_EVICTIONCOUNT, summaryCache, 
getEvictionCount)
+        .description("Summary block cache eviction count").register(registry);
   }
 }

Reply via email to