All Projects → WukLab → pDPM

WukLab / pDPM

Licence: other
Passive Disaggregated Persistent Memory at USENIX ATC 2020.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to pDPM

Gemello
No description or website provided.
Stars: ✭ 18 (-52.63%)
Mutual labels:  disaggregation
ksmbd
ksmbd kernel server(SMB/CIFS server)
Stars: ✭ 98 (+157.89%)
Mutual labels:  rdma
Validate-DCB
Validator for RDMA Configuration and Best Practices
Stars: ✭ 34 (-10.53%)
Mutual labels:  rdma
k8s-rdma-sriov-dev-plugin
Kubernetes Rdma SRIOV device plugin
Stars: ✭ 92 (+142.11%)
Mutual labels:  rdma
scst
No description or website provided.
Stars: ✭ 61 (+60.53%)
Mutual labels:  rdma
blog
blog entries
Stars: ✭ 39 (+2.63%)
Mutual labels:  rdma
Cubdb
Elixir embedded key/value database
Stars: ✭ 235 (+518.42%)
Mutual labels:  key-value-store
llpl
Low Level Persistence Library
Stars: ✭ 95 (+150%)
Mutual labels:  persistent-memory
rlib
RLib is a header-only library for easier usage of RDMA.
Stars: ✭ 17 (-55.26%)
Mutual labels:  rdma
avl array
High performance templated AVL tree using a fixed size array. Extensive test suite passing.
Stars: ✭ 33 (-13.16%)
Mutual labels:  key-value-store
darpc
DaRPC: Data Center Remote Procedure Call
Stars: ✭ 49 (+28.95%)
Mutual labels:  rdma
sparkucx
A high-performance, scalable and efficient ShuffleManager plugin for Apache Spark, utilizing UCX communication layer
Stars: ✭ 32 (-15.79%)
Mutual labels:  rdma
mnemosyne-gcc
GCC port of TM system Mnemosyne
Stars: ✭ 28 (-26.32%)
Mutual labels:  persistent-memory
Clio
Clio, ASPLOS'22.
Stars: ✭ 37 (-2.63%)
Mutual labels:  disaggregation
Coyote
Framework providing operating system abstractions and a range of shared networking (RDMA, TCP/IP) and memory services to common modern heterogeneous platforms.
Stars: ✭ 80 (+110.53%)
Mutual labels:  rdma
Konserve
A clojuresque key-value/document store protocol with core.async.
Stars: ✭ 240 (+531.58%)
Mutual labels:  key-value-store
Spark-PMoF
Spark Shuffle Optimization with RDMA+AEP
Stars: ✭ 28 (-26.32%)
Mutual labels:  rdma
meteora
Distributed key-value store.
Stars: ✭ 23 (-39.47%)
Mutual labels:  key-value-store
ksmbd
ksmbd kernel server(SMB/CIFS server)
Stars: ✭ 181 (+376.32%)
Mutual labels:  rdma
metall
Persistent memory allocator for data-centric analytics
Stars: ✭ 46 (+21.05%)
Mutual labels:  persistent-memory

Passive Disaggregated Persistent Memory (pDPM) at USENIX ATC 2020

[USENIX ATC 2020 Paper]   [Slide]   [Slide-Short]   [Talk]

pDPM Model

We explore an alternative approach of building Disaggregated Persistent Memory (DPM) by treating storage nodes as passive parties that do not perform any data processing or data management tasks, a model we call Passive Disaggregated Persistent Memory, or pDPM.

pDPM lowers owning and energy cost, also avoids storage node being the processing scalability bottleneck. pDPM is an instance of passive disaggregation approach and has largely been overlooked in the past. Our work does a thorough exploration of this area.

pDPM-based Key-Value Stores

Based on where to process and manage data, we build three pDPM-based key-value stores: pDPM-Direct, pDPM-Cental, and Clover. All of them provide GET/PUT interfaces and have been tested against YCSB workload.

Classification

pDPM is an architecture, which could support many types of usages and applications. The KVS is just one way of utilizing pDPM architecture. It is also possible to build a system on top of pDPM architecture that simply exposes memory interface, it is also possible build a more complex system exposing, e.g., SQL interface.

Tutorial

All systems in this repository are userspace programs, hence no special kernel modifications are necessary. All of them run on top of any popular Linux distributions with the following dependencies:

  • libibverbs
  • memcached
  • numactl
  • C++ boost coroutine

For hardware, each machine should have a RDMA NIC card (e.g., Mellanox ConnectX-5) and connected via a Infiniband or Ethernet switch. All systems are able to run on both RoCE and Infiniband mode. If you do not have such testbed, consider using CloudLab.

The testing flow of all systems is almost the same: a) start a server instance, b) start a set of simulated passive memory instances, and c) start a set of compute instances. All systems use memcached as a centralized metadata store to exchange QP number and RKEY information.

Clover is a vanilla development effort. pDPM-Central and pDPM-Direct are built on top of a high-performance two-sided KVS called HERD. For setup tutorials, please refer to the following documents:

The entire code base was designed and implemented by Dr. Shin-Yeh Tsai during his doctoral research at Purdue University.

Contact

Shin-Yeh Tsai, Yizhou Shan, Yiying Zhang.

For more disaggregation-related research, make sure to check out our publication list at WukLab.io.

Cite

To cite our pDPM paper, please consider using the following bibtex:

@inproceedings {ATC20-pDPM,
title = {{Disaggregating Persistent Memory and Controlling Them Remotely: An Exploration of Passive Disaggregated Key-Value Stores}},
author = {Shin-Yeh Tsai and Yizhou Shan and Yiying Zhang},
booktitle = {2020 {USENIX} Annual Technical Conference ({USENIX} {ATC} 20)},
year = {2020},
url = {https://www.usenix.org/conference/atc20/presentation/tsai},
publisher = {{USENIX} Association},
month = jul,
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].