blob: fae0a15bdc01bb2eab75ef408c06cb8299080132 [file] [log] [blame]
<?xml version="1.0"?>
<document>
<properties>
<title>Indexed Disk Cache Configuration</title>
<author email="ASmuts@apache.org">Aaron Smuts</author>
</properties>
<body>
<section name="Indexed Disk Auxiliary Cache Configuration">
<p>
The following properties apply to the Indexed Disk Cache plugin.
</p>
<subsection name="Indexed Disk Configuration Properties">
<table>
<tr>
<th>Property</th>
<th>Description</th>
<th>Required</th>
<th>Default Value</th>
</tr>
<tr>
<td>DiskPath</td>
<td>
The directory where the disk cache should write its files.
</td>
<td>Y</td>
<td>n/a</td>
</tr>
<tr>
<td>MaxPurgatorySize</td>
<td>
The maximum number of items allowed in the queue of items to
be written to disk.
</td>
<td>N</td>
<td>5000</td>
</tr>
<tr>
<td>MaxKeySize</td>
<td>
The maximum number of keys that the indexed disk cache can have.
Since the keys are stored in memory, you may want to limit
this number to something reasonable. The default is a bit small.
</td>
<td>N</td>
<td>5000</td>
</tr>
<tr>
<td>OptimizeAtRemoveCount</td>
<td>
At how many removes should the cache try to defragment the
data file. Since we recycle empty spots, defragmentation
is usually not needed. To prevent the cache from defragmenting
the data file, you can set this to -1. This is the default value.
</td>
<td>N</td>
<td>-1</td>
</tr>
<tr>
<td>MaxRecycleBinSize</td>
<td>
The maximum number of empty spots the cache will keep
track of. The smallest are removed when the maximum size
is reached. Keeping track of empty spots on disk allows us
to reuse spots, thereby keeping the file from growing unncessarily.
</td>
<td>N</td>
<td>5000</td>
</tr>
</table>
</subsection>
<subsection name="Example Configuration">
<source><![CDATA[
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=target/test-sandbox/indexed-disk-cache
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DC.attributes.MaxKeySize=10000
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500
]]></source>
</subsection>
<subsection name="Indexed Disk Event Queue Configuration">
<table>
<tr>
<th>Property</th>
<th>Description</th>
<th>Required</th>
<th>Default Value</th>
</tr>
<tr>
<td>EventQueueType</td>
<td>
This should be either SINGLE or POOLED. By default the single
style pool is used. The single style pool uses a single thread
per event queue. That thread is killed whenever the queue is inactive
for 30 seconds. Since the disk cache uses an event queue for every region,
if you have many regions and they are all active, you will be using many threads.
To limit the number of threads, you can configure the disk cache to
use the pooled event queue. Using more threads than regions will not
add any benefit for the indexed disk cache, since only one thread can read or
write at a time for a single region.
</td>
<td>N</td>
<td>SINGLE</td>
</tr>
<tr>
<td>EventQueuePoolName</td>
<td>
This is the name of the pool to use. It is required if you
choose the POOLED event queue type, otherwise it is ignored.
</td>
<td>Y</td>
<td>n/a</td>
</tr>
</table>
</subsection>
<subsection name="Example Configuration Using Thread Pool">
<source><![CDATA[
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=target/test-sandbox/indexed-disk-cache
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DC.attributes.MaxKeySize=10000
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500
jcs.auxiliary.DC.attributes.EventQueueType=POOLED
jcs.auxiliary.DC.attributes.EventQueuePoolName=disk_cache_event_queue
# Disk Cache pool
thread_pool.disk_cache_event_queue.boundarySize=50
thread_pool.disk_cache_event_queue.useBoundary=true
thread_pool.disk_cache_event_queue.maximumPoolSize=15
thread_pool.disk_cache_event_queue.minimumPoolSize=1
thread_pool.disk_cache_event_queue.keepAliveTime=3500
thread_pool.disk_cache_event_queue.startUpSize=1
]]></source>
</subsection>
</section>
</body>
</document>