Historically in-memory and on-disk indexes in eblob were protected by mutexes. They worked well for us, especially considering that eblob is usually IO bound.
In our pursuit for performance we recently replaced mutexes on in-memory indexes with reader-writer locks aka
We tested this rwlock version of eblob vs mutex version on data set with many small records that fully fit in RAM, so we could measure latencies of in-memory caches.
You can ignore periodic spikes (~5min interval) on graphs that were caused by scheduled jobs running on test nodes. As you can see rwlock version has less “spiky” latency graph.
rwlocks are turned on by default since eblob
There was fun part while we were doing performance tests of blob code – no matter how hard we've tried we could not bring down eblob in read-from-memory benchmark. I guess we already need 10Gbit load generators