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