Howard Chu wrote:
There are two main problems being addressed by the mdb approach - eliminating multiple layers of cache copying, and eliminating multiple layers of locking.
Currently we have per-entry mutexes and also BDB locks for every cached item. The mutex overhead is ridiculous, 40-some bytes per mutex x 10 million entries is a lot of wasted storage. Especially since a single slapd can only actually lock 2-3 items per thread - i.e., we only need on the order of 100 locks, ever. The sane thing to do here is continue to use the BDB approach to locking, but with fewer options.
Note that we can use this locking approach in back-bdb too, but aside from the memory savings I don't see it giving any performance gain. The real gain comes from completely eliminating one layer of locks, not just from streamlining one layer but keeping both layers.