How do I improve Level DB performance?

Ryan Zezeski rzezeski at basho.com
Fri May 11 12:13:41 EDT 2012


On Thu, May 10, 2012 at 11:14 PM, Tim Haines <tmhaines at gmail.com> wrote:
>
>
>
> With the adjusted ring size and settings, and adjusted to only do puts (so
> no missed reads), my cluster is doing about 400 puts per second:
> http://twitpic.com/9jnhlm/full
>

Actually, every put (put from a riak API level) does a read on the backend
[1].  This is needed to merge contents from the two objects [2].

Like Dave already mentioned the key generation strategy along with
leveldb's degrading performance on not-found means your benchmark will just
get worse the longer it runs.

Are you testing an actual use case here?  Do you envision 100M objects
being written in a constant stream?  Will your objects have a median size
of 1000 bytes?  Basho bench also provides a pareto key generator which uses
a fraction of the key space most of the time.  I'm not sure it matches your
use case but thought I'd mention it is there.

-Z

[1]: https://github.com/basho/riak_kv/blob/1.1.2/src/riak_kv_vnode.erl#L669

[2]: https://github.com/basho/riak_kv/blob/1.1.2/src/riak_kv_vnode.erl#L686
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20120511/e6ac8ce9/attachment.html>


More information about the riak-users mailing list