Just wanted to add an extra thought that I forgot to include in the previous post.
 
One important aspect missing from my tests is the actual concurrency testing. In most real world programs, multiple applications will be reading from/writing to the cache at the same time. Depending on the cache synchronisation scheme, you'll get varying levels of performance degradation:
 
1 being worst, 3 being the best.
 
1. Lock entire cache for a request (Cache::SharedMemoryCache, MySQL normal - table locks?)
2. Lock some part of cache for a request (Cache::Mmap buckets, MLDBM pages?)
3. Lock only the key/value for a request (Cache::FileCache, MySQL InnoDB - row locks?)
 
Uggg, to do a complete test you really need to generate an entire modelling system:
1. Number of concurrent processes
2. Average reads/writes to cache per second
3. Ratio of reused/new entries
etc
 
Rob
 

Reply via email to