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 <[email protected]>
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);
}
}