]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
kv: implement value_as_ptr() and use it in .get()
authorPiotr Dałek <piotr.dalek@ts.fujitsu.com>
Fri, 4 Dec 2015 13:49:40 +0000 (14:49 +0100)
committerPiotr Dałek <piotr.dalek@ts.fujitsu.com>
Thu, 24 Dec 2015 13:21:08 +0000 (14:21 +0100)
commit4efa2145cbc2adddcd00f29aeeeecb12c74ea487
treeb95cd33cfee4d020c0a71ba0679e52ab6348e635
parentc485d29a53f6a2c1a3b561c54632dbac1c4e9473
kv: implement value_as_ptr() and use it in .get()

Current .get() methods return values as bufferlists, which are replacing
bufferlists provided by caller. This is particularly inefficient with
MonitorDBStore, because its get() method uses its own temporary bufferlist
which is then appended to bufferlist provided by MonitorDBStore user.
This changeset:
 - adds value_as_ptr() which returns just a bufferptr
 - modifies *DBStore.get() methods to append returned bufferptr to provided
   bufferlist instead of replacing it
 - modifies mondbstore to pass provided bufferlist as target for underlying
   .get() method, instead of providing its own and appending it to one given
   by caller.

This reduces CPU usage of *DBStore.get() methods by up to 5% (particularly
visible with MonitorDBStore, which doesn't use two temporary bufferlists
anymore).

Signed-off-by: Piotr Dałek <piotr.dalek@ts.fujitsu.com>
src/kv/KeyValueDB.h
src/kv/LevelDBStore.cc
src/kv/LevelDBStore.h
src/kv/RocksDBStore.cc
src/kv/RocksDBStore.h
src/mon/MonitorDBStore.h