# pDPM **Repository Path**: smdsbz/pDPM ## Basic Information - **Project Name**: pDPM - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: truely-rdpma - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-13 - **Last Updated**: 2022-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

__Passive Disaggregated Persistent Memory (pDPM) at USENIX ATC 2020__ [**[USENIX ATC 2020 Paper]**](https://www.usenix.org/conference/atc20/presentation/tsai)   [**[Slide]**](./Documentation/ATC20-pDPM-slides.pdf)   [**[Slide-Short]**](./Documentation/ATC20-pDPM-slides-short.pdf)   [**[Talk]**](https://www.usenix.org/conference/atc20/presentation/tsai) ## 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](https://www.cloudlab.us/). 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](https://github.com/efficient/rdma_bench/tree/master/herd). For setup tutorials, please refer to the following documents: - [Clover](./Documentation/clover.md) - [Central](./Documentation/central.md) - [Direct](./Documentation/direct.md) **The entire code base was designed and implemented by [Dr. Shin-Yeh Tsai](https://www.cs.purdue.edu/homes/tsai46/) during his doctoral research at Purdue University.** ## Contact [Shin-Yeh Tsai](https://www.cs.purdue.edu/homes/tsai46/), [Yizhou Shan](http://lastweek.io), [Yiying Zhang](https://cseweb.ucsd.edu/~yiying/). For more disaggregation-related research, make sure to check out our publication list at [WukLab.io](http://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, } ```