[ https://issues.apache.org/jira/browse/HBASE-27159?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Manning updated HBASE-27159: ---------------------------------- Description: [https://github.com/apache/hbase/blob/d447fa01ba36a11d57927b78cce1bbca361b1d52/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java#L346-L400] {code:java} public double getHitCachingRatio() { double requestCachingCount = getRequestCachingCount(); if (requestCachingCount == 0) { return 0; } return getHitCachingCount() / requestCachingCount; } {code} This code is responsible for the metric {{{}BlockCacheExpressHitPercent{}}}. The metric represents the percentage of requests which were cacheable, but not found in the cache. Unfortunately, since the counters are process-level counters, the ratio is for the lifetime of the process. This makes it less useful for looking at cache behavior during a smaller time period. The underlying counters are {{hitCachingCount}} and {{{}missCachingCount{}}}. Having access to the underlying counters allows for offline computation of the same metric for any given time period. But these counters are not emitted today from {{{}MetricsRegionServerWrapperImpl.java{}}}. Compare this to {{hitCount}} and {{missCount}} which are emitted as metrics {{blockCacheHitCount}} and {{{}blockCacheMissCount{}}}. But these are raw counts for the cache, which include requests that are not cacheable. The cacheable metrics are more interesting, since it can be common to miss on a request which is not cacheable. Interestingly, these metrics are emitted regularly as part of a log line in {{{}StatisticsThread.logStats{}}}. We should emit blockCache{{{}HitCachingCount{}}} and {{blockCacheMissCachingCount}} along with the current metrics. was: [https://github.com/apache/hbase/blob/d447fa01ba36a11d57927b78cce1bbca361b1d52/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java#L346-L400] {code:java} public double getHitCachingRatio() { double requestCachingCount = getRequestCachingCount(); if (requestCachingCount == 0) { return 0; } return getHitCachingCount() / requestCachingCount; } {code} This code is responsible for the metric {{{}BlockCacheExpressHitPercent{}}}. The metric represents the percentage of requests which were cacheable, but not found in the cache. Unfortunately, since the counters are process-level counters, the ratio is for the lifetime of the process. This makes it less useful for looking at cache behavior during a smaller time period. The underlying counters are {{hitCachingCount}} and {{{}missCachingCount{}}}. Having access to the underlying counters allows for offline computation of the same metric for any given time period. But these counters are not emitted today from {{{}MetricsRegionServerWrapperImpl.java{}}}. Compare this to {{hitCount}} and {{missCount}} which are emitted as metrics {{blockCacheHitCount}} and {{{}blockCacheMissCount{}}}. But these are raw counts for the cache, which include requests that are not cacheable. The cacheable metrics are more interesting, since it can be common to miss on a request which is not cacheable. We should emit blockCache{{{}HitCachingCount{}}} and {{blockCacheMissCachingCount}} along with the current metrics. > Emit source metrics for BlockCacheExpressHitPercent, blockCache counts of > hits and misses for cacheable requests > ---------------------------------------------------------------------------------------------------------------- > > Key: HBASE-27159 > URL: https://issues.apache.org/jira/browse/HBASE-27159 > Project: HBase > Issue Type: Improvement > Components: BlockCache, metrics > Affects Versions: 3.0.0-alpha-1, 2.0.0 > Reporter: David Manning > Priority: Minor > > [https://github.com/apache/hbase/blob/d447fa01ba36a11d57927b78cce1bbca361b1d52/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheStats.java#L346-L400] > {code:java} > public double getHitCachingRatio() { > double requestCachingCount = getRequestCachingCount(); > if (requestCachingCount == 0) { > return 0; > } > return getHitCachingCount() / requestCachingCount; > } {code} > This code is responsible for the metric {{{}BlockCacheExpressHitPercent{}}}. > The metric represents the percentage of requests which were cacheable, but > not found in the cache. Unfortunately, since the counters are process-level > counters, the ratio is for the lifetime of the process. This makes it less > useful for looking at cache behavior during a smaller time period. > The underlying counters are {{hitCachingCount}} and {{{}missCachingCount{}}}. > Having access to the underlying counters allows for offline computation of > the same metric for any given time period. But these counters are not emitted > today from {{{}MetricsRegionServerWrapperImpl.java{}}}. > Compare this to {{hitCount}} and {{missCount}} which are emitted as metrics > {{blockCacheHitCount}} and {{{}blockCacheMissCount{}}}. But these are raw > counts for the cache, which include requests that are not cacheable. The > cacheable metrics are more interesting, since it can be common to miss on a > request which is not cacheable. > Interestingly, these metrics are emitted regularly as part of a log line in > {{{}StatisticsThread.logStats{}}}. > We should emit blockCache{{{}HitCachingCount{}}} and > {{blockCacheMissCachingCount}} along with the current metrics. -- This message was sent by Atlassian Jira (v8.20.7#820007)