jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Parvulescu (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JCR-3098) Add hit miss statistics and logging to caches
Date Fri, 07 Oct 2011 14:19:29 GMT

    [ https://issues.apache.org/jira/browse/JCR-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13122823#comment-13122823

Alex Parvulescu commented on JCR-3098:

Hi Bart,

> The following statement is not correct for the current implementation: "hitCount = accessCount
- hitCount". The access count is used for resizing the caches (in resizeAll) and reset every
second or so. I didn't want to mess with the resizing allogrithm which need this reset. What
is true is that the "total accessCount" is the hitCount plus the missCount ;-) 

You are right. The CacheManager does call reset on it. It is weird that this behaviour is
tied to a listener implementation. For example, on the patch, the AbstractBundlePersistenceManager
never calls reset.

What we could do is to only update the hitCount when the cache listeners are called, this
way we'll increase once every CacheAccessListener#ACCESS_INTERVAL (127) calls. 
The stats can be a bit behind, that should not be a problem.

About the element count: I feel we could leverage AbstractCache#recordSizeChange(), it appears
that when it is called with a pozitive value it's an add, otherwise it's a remove. 

> If there is such a need we should either allow for that or indeed create a CacheStats
object that can contain information about all the caches. It could be more "elegant" to defer
all stats to a separate CacheStats object

I wasn't talking about a dedicated CacheStats object either. I'm working on a dedicated PersistenceManagerStat
that also contains some cache info. I agree about being able to tune the logging for a dedicated
(I'm also looking to add average cache miss duration on the PM. This is also something to
watch out for.) 

>I don't see an easy way without creating some overhead to get the cache miss reason. 

I agree :( That is just a "nice to have" right now.

I'm also interested in having the 2 separated. In the beginning it wasn't very clear to me,
also a lack of community feedback didn't make the choice easier ;)
Now Stats and JMX are 2 different things, but the effort is combined on the branch I mentioned.

Given that we agree on the direction of the patch, we can apply it on the jmx branch, and
we can continue there the dev. 
This will also allow others to chime in with some feedback before we merge to trunk.

I don't think I have time today, but I have to push some code related to it soon, and I could
merge your changes beforehand.
What do you think?

> Add hit miss statistics and logging to caches
> ---------------------------------------------
>                 Key: JCR-3098
>                 URL: https://issues.apache.org/jira/browse/JCR-3098
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-core
>            Reporter: Bart van der Schans
>             Fix For: 2.2.10, 2.3.1
>         Attachments: cache-stats.patch
> The current caches (ConcurrentCache) doesn't maintain hit and miss statistics. This makes
it very hard to know if you need to increase the caches in a deployment. This functionality
does exist in the 1.5 and 1.6 branches, but is missing from the 2.x branches. The patch adds
these statistics and adds logging on info level. The frequency of the logging is by default
configured to maximal once a minute but can be configured with the system property "org.apache.jackrabbit.cacheLogStatsInterval"
(in ms). 
> The log lines look like:
> 07.10.2011 09:00:39 INFO  [org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.logCacheStats():737]
name=defaultBundleCache[ConcurrentCache@54fb02fd] num=21074 mem=34504k max=65536k hits=93352
miss=21074 puts=21135
> 07.10.2011 09:00:40 INFO  [org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.logCacheStats():737]
name=versionBundleCache[ConcurrentCache@47b1de1a] num=10637 mem=250k max=8192k hits=36352
miss=10637 puts=10637
> This patch will also make possible to later on expose these statistics over JMX when
the initial JMX work has been settled.  

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message