Table of Contents
Direct KV
Participants
- Leonardo Marmol
- Swaminathan Sundararaman
- Nisha Talagala
Project Goals
Direct KV store
Notes on Performance
- Writes must have a latency of at least 20 ms
- Reads must have a latency of at most 55 ms
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
- fieldcount = 1 (default 10)
- fieldlength = 1024 (default 100)
- recordcount = 1000000 (default 1000)
- operationcount = 1000000 (default 1000)
- Total Data Size = 976.56 MB
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
- When running YCSB, for every workload I get the following error message. This was solved by applying a patch.
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)
- The cache is not printing stats at the end of a run. This was caused by the helper library not calling
nvm_kv_close
. It was fixed with the following change
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
- 05/05/15: Final version comments discussion with Swami / Nisha
- 04/24/15: ATC Comments and plans for final version / shepherding
- 03/20/15: NVMKV bug & Future directions for NVM research
- 03/03/15: Parallelism bug with NVMKV
- 02/06/15: Parallelism bug with NVMKV
- 01/30/15: TBD
- 01/27/15: TBD
- 12/16/14: Next steps with ioDrive2 and paper writing
- 12/16/14: Next steps with ioDrive2 and paper writing
- 12/09/14: New machine data (needs more validation); plans for updating testbed with ioDrive2
- 12/02/14: New machine data (doesn't look right)
- 10/30/14: Writing tasks
- 10/14/14: Eval/writing next steps
- 10/07/14: Plans moving forward without Eurosys submission
- 10/03/14: Paper submission plans and writing tasks for Eurosys'15
- 09/17/14: Reviewing the current outline and paper writeup; next steps for writing
- 09/16/14: Outline/data discussion
- 09/10/14: Writing plans
- 09/05/14: Evaluation plans; writing plans
- 09/02/14: Plans for paper
- 08/28/14: Two papers instead of one?
- 08/19/14: Trade-offs detailed discussion and new plans for selling FAST paper
- 08/12/14: Selling FAST'15 paper as a trade-offs paper
- 08/05/14: FAST'15 paper writing: new direction to include memory/flash hybrid KV tradeoffs for cost/performance/energy
- 06/24/14: Feedback for FAST submission and plans
- 05/06/14: HotStorage'14 camera-ready final touches
- 04/29/14: HotStorage'14 camera-ready and FAST submission summer plan
- 04/15/14: HotStorage'14 reviewer feedback discussion
- 04/08/14: Initial multi-threading data for YCSB
- 04/01/14: FAST paper brainstorming
- 03/25/14: FAST paper – initial thoughts
- 03/11/14: HotStorage evaluation data and Writing
- 03/04/14: Plans for HotStorage submission
- 02/25/14: ext2/ext4 do *worse* with LevelDB; HotStorage submission discussion
- 02/11/14: Updates on level-db write amplification experiments
- 01/14/14: Time-series plots
- 01/06/14: Next steps in data collection
- 12/23/13: Analyzing new LevelDB and DirectKV-with-cache data; and plans for submission
- 11/15/13: Directkv / driver issues; Leveldb cache design discussion
- 11/04/13: Initial cache numbers
- 10/28/13: Updates and next steps for cache implementation
- 10/21/13: DirectKV vs. LevelDB evaluation configurations, implementing write-through caching in DirectKV
- 10/14/13: DirectKV vs. LevelDB (initial data), Alternative comparison setups, Importance of Write-back caching,