wzharies / MatrixKV

MatrixKV

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MatrixKV

1 Introduction

This is the implementation of the paper "MatrixKV: Reducing Write Stalls and Write Amplification in LSM-tree Based KV Stores with a Matrix Container in NVM" appeared in ATC 2020. We implement MatrixKV based on RocksDB and evaluate it on a hybrid DRAM/NVM/SSD system using Intel's latest 3D Xpoint NVM device Optane DC PMM.

2 Compilation and Run

2.1 Tools

MatrixKV acesses NVM via PMDK. To run MatrixKV, please install PMDK first.

2.2 Compilation

We only support Makefile instead of cmake currently.

> make -j64   

2.3 Run

To run MatrixKV, please modify the configuration in include/rocksdb/option.h.

std::shared_ptr<NvmSetup> nvm_setup = nullptr;

To learn more about NvmSetup, please refer to include/rocksdb/nvm_option.h.

To test with db_bench, please refer to the test script test_sh/matrixkv_test_4value.sh and follow the next two steps:

> ./tesh_sh/matrixkv_test_4value.sh
> nohup ./tesh_sh/matrixkv_test_4value.sh >out.out 2>&1 &     ##Run in the background

3 MatrixKV's differences with RocksDB

MatrixKV is implemented based on RocksDB Version v5.18.3. If you want to have RocksDB under the same version, do:

> git checkout 641fae60f63619ed5d0c9d9e4c4ea5a0ffa3e253

To check the difference between RocksDB and MatrixKV, please do:

> git reset --mixed 641fae60f63619ed5d0c9d9e4c4ea5a0ffa3e253

4 Acknowledgement

We appreciate PingCap and Intel for the hardware support and maintenance.

5 Contributors

About

MatrixKV

License:GNU General Public License v2.0


Languages

Language:C++ 81.4%Language:Java 10.6%Language:Perl 1.8%Language:Python 1.6%Language:Shell 1.6%Language:C 1.4%Language:Makefile 0.8%Language:CMake 0.4%Language:Ruby 0.1%Language:PowerShell 0.1%Language:Assembly 0.1%Language:PHP 0.1%Language:JavaScript 0.0%Language:Dockerfile 0.0%