adds new metrics for cache evictions (#4549)
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 79ea0bd..b62fc84 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 @@
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 2167fdc..a373823 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 @@
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 46a0768..ca3a613 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 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 abfdfc9..56ef2cd 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 @@
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 d900149..9ebe3fc 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 @@
* @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 ca3fc6c..6444e74 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 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);
}
}