JMX
Read Cache
JMX bean name: com.orientechnologies.orient.core.storage.cache.local:type=O2QCacheMXBean
It has following members:
usedMemory
,usedMemoryInMB
,usedMemoryInGB
which is amount of direct memory consumed by read cache in different units of measurementscacheHits
is percent of cases when records will be downloaded not from disk but from read cacheclearCacheStatistics()
method may be called to clear cache hits statics so we always may start to gather cache hits statistic from any moment of timeamSize
,a1OutSize
,a1InSize
is the size of LRU queues are used in 2Q algorithm
Write Cache
JMX bean name: com.orientechnologies.orient.core.storage.cache.local:type=OWOWCacheMXBean,name=<storage name>,id=<storage id>
Write cache alike read cache is not JVM wide, it is storage wide, but one JVM may run several servers and each server may contain storage with the same name, that is why we need such complex name.
JMX bean of write cache has following members:
writeCacheSize
,writeCacheSizeInMB
,writeCacheSizeInGB
provides size of data in different units which should be flushed to disk in background threadexclusiveWriteCacheSize
,exclusiveWriteCacheSizeInMB
,exclusiveWriteCacheSizeInGB
provides size of data which should be flushed to disk but contained only in write cache
More about memory model and data flow
At first when we read page we load it from disk and put it in read cache. Then we change page and put it back to read cache and write cache, but we do not copy page from read to write cache we merely send pointer to the same memory to write cache. Write cache flushes "dirty write page" in background thread. That is what property "writeCachSize" shows us amount of data in dirty pages which should be flushed. But there are very rare situations when page which is rarely used still is not flushed on disk and read cache has not enough memory to keep it. In such case this page is removed from read cache , but pointer to this page still exists in write cache, that is what property "exclusiveWriteCacheSize" shows us. Please not that this value is more than 0 only during extremely high load.
The rest properties of write cache JMX bean are following:
lastFuzzyCheckpointDate
lastAmountOfFlushedPages
durationOfLastFlush