Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
/ DFlush Public

DFlush: DPU-Offloaded Flush for Disaggregated LSM-based Key-Value Stores

License

GPL-2.0 and 2 other licenses found

Licenses found

GPL-2.0
COPYING
Apache-2.0
LICENSE.Apache
Unknown
LICENSE.leveldb
Notifications You must be signed in to change notification settings

PDS-Lab/DFlush

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

DFlush: DPU-offloaded Flush for Disaggregated LSM-based Key-Value Stores

Brief Introduction

DFlush is a novel solution that uses DPUs to offload background flush operations to reduce its CPU cost. DPUs are an appealing choice for this goal due to their cost-effectiveness, ease of programming, and widespread deployment. To fully harness the DPU’s capabilities, DFlush decomposes a flush job into fine-grained steps, mapped them to DPU hardware units, and accelerates them through pipeline, data, and channel parallelism, ensuring data-plane efficiency. DFlush also introduces an adaptive control plane that dynamically schedules flush jobs from different LSM-KVS instances based on their priority, reducing write stall and tail latency.

DFlush is implemented based on RocksDB v8.3.0 and NVIDIA BlueField-3 DPU.

Dependencies

  • Hardware
    • At least one compute machine with NVIDIA BlueField-3 DPU
    • At least one storage machine employed HDFS with SSD
  • Software
    • Operating System: Ubuntu 22.04 LTS
    • Programming Language: C++ 17
    • Compiler: gcc 13.1.0
    • Libraries: ibverbs doca-common doca-dpa doca-dma
    • Other: install hadoop and grpc in all machines

Build

  • Configuring CMakeLists.txt's grpc path and update .bashrc
  • Modify plugin/hdfs/setup.h's HADOOP_HOME
  • Modify include/rocksdb/options.h's csa_address and pro_cp_address
  • Modify test_sh/test_single.sh's db path and wal_dir path
  • Modify file open's path in db/compaction/remote_compaction/utils.h'
  • Compile
mkdir build
./cmake_configure.sh
./cmake_build.sh db_bench csa_server procp_server dpu_server
  • Run in storage machine
./procp_server
./csa_server
  • Run in DPU
./dpu_server
  • Run in compute machine
./test_single.sh

WorkLoads and comparison objects

WorkLoads

Modify test_single.sh to replace different WorkLoads.

  • value_array: different value size
  • rw_array: different read/write ratio
  • t_array: different dowrite threads
  • f_array: different flush threads
  • benchmarks: different write mode(include ycsb/fillrandom/fillseq/mixgraph)

Comparison Objects

  • Pure Rocksdb with HDFS (no CaaS and no DFlush)

Modify allow_remote_compaction to false in test_single.sh Modify -DWITH_DFLUSH to false in cmake_configure.sh and recompile

  • Rocksdb with CaaS

Modify allow_remote_compaction to true in test_single.sh

  • Rocksdb with DFlush

Modify -DWITH_DFLUSH to true in cmake_configure.sh and recompile

About

DFlush: DPU-Offloaded Flush for Disaggregated LSM-based Key-Value Stores

Resources

License

GPL-2.0 and 2 other licenses found

Licenses found

GPL-2.0
COPYING
Apache-2.0
LICENSE.Apache
Unknown
LICENSE.leveldb

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.