On 25/03/11 14:41, Daniel Friesen wrote:
For awhile I was thinking 'What if I give memcached on a machine of it's own a really large size and let it swap?'.
One problem you would likely run into is that the metadata is not localised at all, so you would end up loading a lot of pages to do a simple thing like serving a cache miss.
Another is that apps that aren't designed to be swapped out tend to do silly things like iterate through linked lists that snake their way all over the whole address space.
What others did you look at? From a quick look I see redis, Ehcache, JCS, and OSCache.
Redis is in-memory only. Membase, MemcacheDB, MySQL, Riak and HBase lacked basic caching features, like a limit on storage space and an eviction feature which removes items when the storage limit is exceeded.
I didn't look at JCS. It seems suspiciously similar to Ehcache, sharing its major pros and cons. The disk size limit is specified as an object count instead of in bytes, and you only get persistence when the cache is properly shut down. We really want a large proportion of the objects to be preserved even if the power goes off.
I didn't look at OSCache. It seems to be aimed at small local installations. It lacks a network-accessible get/set interface. The disk cache size can't be configured properly:
"cache.unlimited.disk
"Indicates whether the disk cache should be treated as unlimited or not. The default value is false. In this case, the disk cache capacity will be equal to the memory cache capacity set by cache.capacity."
-- Tim Starling