Reverbrain wiki

Site Tools


eblob:eblob:rwlocks

Background

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.

Details

In our pursuit for performance we recently replaced mutexes on in-memory indexes with reader-writer locks aka rwlocks.

Test setup and Graphs

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.

mutextes: 0_d1092_27d0306b_orig

rwlocks: 0_d1091_adee686f_orig

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.

Availability

rwlocks are turned on by default since eblob 0.18.3

PS

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 =)

eblob/eblob/rwlocks.txt · Last modified: 2013/03/31 00:40 by savetherbtz