Table of Contents

Direct KV

Participants

Project Goals

  Direct KV store

Notes on Performance

Evaluation Results

Using NVMKV own benchmarking tool we obtained the following results. This tools generates a randomized workload in which every operation is performed on a different key.

Raw data can be found here cache_data_nolocks.pdf

Write Amplification

YCSB

Modification to the workloads

Core Properties: https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties

Workloads Descriptions: https://github.com/brianfrankcooper/YCSB/wiki/Core-Workloads

Workload RunTime(ms) Throughput(ops/sec) AvgLat(us) MinLat(us) MaxLat(us) Cache Size Cache Stats (ios, hits, evic)
a 314016.0 3184.55 333.48 105 22067 0 n/a
b 242333.0 4126.55 306.52 113 3220 0 n/a
c 227708.0 4391.58 215.16 80 46375 0 n/a
d 273213.0 3660.14 152.77 43 3190 0 n/a
e 10148.0 98541.58 103.17 55 3014 0 n/a
f 430920.0 2320.61 295.07 105 4478 0 n/a
-
a 227685.0 4392.03 372.39 109 17372 256 501047, 501047,236809
b 64438.0 15518.79 403.26 131 3305 256 950246, 950245, 0
c 14111.0 70866.69 11.51 10 29745 256 1000000, 999999, 0
d 18858.0 91591.86 111.72 58 3103 256 950258, 950257, 0
e 10918.0 53027.89 70.06 41 1358 256 0,0,0
f 254522.0 3928.93 367.99 107 23322 256 1000000, 999999, 237210

Raw data can be found here: http://gladiator.cs.fiu.edu/ycsb_workloads/

LevelDB

LevelDB Options File: https://code.google.com/p/leveldb/source/browse/include/leveldb/options.h

Official information about LevelDB http://leveldb.googlecode.com/svn/trunk/doc/index.html

General information about LevelDB as well and tips and tricks about tuning http://docs.basho.com/riak/latest/ops/advanced/backends/leveldb/

YCSB/Mapkeeper: https://github.com/m1ch1/mapkeeper/tree/master/leveldb

According to these benchmarks ran with Mapkeeper, WiredTiger outperforms LevelDB in every test. Details here https://github.com/wiredtiger/wiredtiger/wiki/YCSB-Mapkeeper-benchmark

Issues

  Error, atomic write failed: 22
  The output of ''dmesg'' shows the following 
  ...
  [962679.776274] <6>fioinf Fusion-io 825GB ioScale2 0000:05:00.0: Attach succeeded.
  [962680.107683] <6>fioinf Fusion-io 825GB ioScale2 0000:05:00.0: atomic write too large, nr_pages = 4224 max 1088)
  diff --git a/helper/src/main/fio_kv_helper.cpp b/helper/src/main/fio_kv_helper.cpp
  index 7cb7a5d..56ca52f 100644
  --- a/helper/src/main/fio_kv_helper.cpp
  +++ b/helper/src/main/fio_kv_helper.cpp
  @@ -127,6 +127,8 @@ void fio_kv_close(fio_kv_store_t *store)
          assert(store != NULL);
          assert(store->kv > 0);
   
  +       nvm_kv_close(store->kv);
  +
          if (store->fd) {
                  fsync(store->fd);
                  close(store->fd);

Meetings