Jaime Medrano wrote:
Hi.
I've rewritten the locking in order to remove the problematic global
cache_lock mutex.
I have splitted the lock in several locks:
- assoc_locks: access to hash table
- maintenance_lock: signaling a hash table expansion
- lru_locks: access to lru list
- refcount_locks: access to the reference count of an item
- delta_lock: increment/decrement operations
Some of them are actually an array of N locks instead of a single lock
in order to decrease contention. A mask applied to the hash value of the
key determines wich lock is used.
The LRU list has also been splitted in several lists for the same
reason.
Locking contention has been reduced a lot.
Do you have any performance numbers?
Maybe I'm a little late for 1.4.0. When do you plan to release it?
I would say it is too late for 1.4.0
Trond