| <?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>Block Disk Cache</title> |
| <author email="asmuts@apache.org">Aaron Smuts</author> |
| </properties> |
| |
| <body> |
| <section name="Block Disk Auxiliary Cache"> |
| <p> |
| The Block Disk Cache stores cached values on disk. Like |
| the Indexed Disk Cache, the Block Disk Cache keeps the |
| keys in memory. The Block Disk Cache stores the values |
| in a group of fixed size blocks, whereas the Indexed |
| Disk Cache writes items to disk in one chunk. |
| </p> |
| <p> |
| The Block Disk Cache has advantages over the normal |
| indexed model for regions where the size of the items |
| varies. Since all the blocks are the same size, the |
| recycle bin is very simple. It is just a list of block |
| numbers. Also, the Block Disk Cache will never need to |
| be optimized. Once the maximum number of keys is |
| reached, blocks will be reused. |
| </p> |
| |
| <section name="Size limitation"> |
| <p> |
| There are two ways to limit the cache size: using element |
| count and element size. When using element count, in disk |
| store there will be at most MaxKeySize elements (not disk |
| blocks). When using element size, there will be at most |
| KeySize kB of elements stored in the data file. As the Block |
| Disk Cache doesn't need optimization, the data file |
| will be not longer than specified. The limit does not |
| cover the key file size. The mode is chosen using DiskLimitType. |
| Allowed values are: COUNT and SIZE. |
| </p> |
| </section> |
| |
| <subsection name="Example cache.ccf"> |
| <source> |
| <![CDATA[ |
| ############################################################## |
| ##### DEFAULT REGION ######################################## |
| |
| jcs.default=blockDiskCache |
| jcs.default.cacheattributes=org.apache.commons.jcs3.engine.CompositeCacheAttributes |
| jcs.default.cacheattributes.MaxObjects=0 |
| jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs3.engine.memory.lru.LRUMemoryCache |
| |
| ############################################################## |
| ##### AUXILIARY CACHES ###################################### |
| |
| # Block Disk Cache |
| jcs.auxiliary.blockDiskCache=org.apache.commons.jcs3.auxiliary.disk.block.BlockDiskCacheFactory |
| jcs.auxiliary.blockDiskCache.attributes=org.apache.commons.jcs3.auxiliary.disk.block.BlockDiskCacheAttributes |
| jcs.auxiliary.blockDiskCache.attributes.DiskPath=target/test-sandbox/block-disk-cache-huge |
| jcs.auxiliary.blockDiskCache.attributes.MaxPurgatorySize=300000 |
| jcs.auxiliary.blockDiskCache.attributes.MaxKeySize=1000000 |
| jcs.auxiliary.blockDiskCache.attributes.blockSizeBytes=500 |
| jcs.auxiliary.blockDiskCache.attributes.EventQueueType=SINGLE |
| #jcs.auxiliary.blockDiskCache.attributes.EventQueuePoolName=disk_cache_event_queue |
| |
| ############################################################## |
| ################## THREAD POOL CONFIGURATION ################# |
| |
| # Default thread pool config |
| thread_pool.default.boundarySize=2000 |
| thread_pool.default.maximumPoolSize=150 |
| thread_pool.default.minimumPoolSize=4 |
| thread_pool.default.keepAliveTime=350000 |
| #RUN ABORT WAIT BLOCK DISCARDOLDEST |
| thread_pool.default.whenBlockedPolicy=RUN |
| thread_pool.default.startUpSize=4 |
| |
| # Disk Cache pool |
| thread_pool.disk_cache_event_queue.useBoundary=false |
| thread_pool.disk_cache_event_queue.minimumPoolSize=2 |
| thread_pool.disk_cache_event_queue.keepAliveTime=3500 |
| thread_pool.disk_cache_event_queue.startUpSize=10 |
| ]]> |
| </source> |
| </subsection> |
| </section> |
| </body> |
| </document> |