Direct KV store
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
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 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
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)
nvm_kv_close
. It was fixed with the following changediff --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);