| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <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>OptimizeOnShutdown</td> |
| <td> |
| By default the Indexed Disk Cache will |
| optimize on shutdown if the free data size |
| is greater than 0. If you want to prevent |
| this behavior, you can set this parameter to |
| false. |
| </td> |
| <td>N</td> |
| <td>true</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.OptimizeOnShutdown=true |
| 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.OptimizeOnShutdown=true |
| 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 |
| thread_pool.disk_cache_event_queue.whenBlockedPolicy=RUN |
| ]]> |
| </source> |
| </subsection> |
| |
| |
| </section> |
| </body> |
| </document> |