@@ -4,21 +4,52 @@ The HPDOS project is an attempt to optimise the storage stack in hyperconverged
Here we plan to take advantage of SmartNIC technologies more specifically SoC based NICs to speed up the storage stack.
## Getting started
The folder code contains the HPDOS server and client implementation. To use them clone this repo.
## Directory
```
├── code
│ ├── hpdos_client
│ ├── hpdos_server
│ └── README.md
├── code_p4_tryouts
│ ├── client
│ ├── controller
│ ├── generator
│ ├── INSTRUCTIONS.txt
│ ├── LICENSE
│ ├── LiteratureSurvey.md
│ ├── MeetingMinutes.md
│ ├── mininet
│ ├── nc_config.py
│ ├── p4src
│ ├── README.md
│ └── server
├── documentation
│ ├── designs
│ ├── dfs_report.pdf
│ ├── handover-material-rinku
│ ├── HPDOS-presentation.pdf
│ └── references
├── mtcp-dpdk
│ ├── dpdk-19.11.8.tar.xz
│ ├── mtcp-devel.tar.xz
│ └── README
├── RAMCloud Offload
│ ├── client.cpp
│ ├── master.cpp
│ ├── no_offload_master.cpp
│ └── offload.cpp
└── README.md
```
HPDOS uses `gRPC` system calls with `protocol buffers` as the data exchange standard. The project is managed using `Gradle` project manager. As a first step, install the system requirements listed at the end of this section.
### HPDOS NO_OFFLOAD/ FULL_OFFLOAD implementation
### Compile
To compile the codebase run `./gradlew build` separately from the client and server root directory. Gradle should take care of installing and managing any third party libraries used.
For details on the kernel stack based implementation on the NO_OFFLOAD or FULL_OFFLOAD HPDOS stack look into the code folder
- For implementations on client cache design use the client_cache branch
- For implementations using LSM tree metadata_lsmtree branch
### Execute
To execute the server and client run `./gradlew run` in separate terminals.
### MISC
### Clean
The project build generated files can be cleaned by running `./gradlew clean`
### System Requirements
- Java | OpenJDK 14.0+
- Gradle
- Protocol Buffer / Protobuf
\ No newline at end of file
- code_p4_tryouts contain a bunch of early experimental designs in P4 on caching for distributed KV stores based on Netcache design.
- For our efforts on RAMCloud offloading checkout shashank-* branches
- For documenation, references and bunch of early phase designs look into documentation directory.
- mtcp-dpdk contains Bluefield compatible binaries and installation instructions for mTCP and DPDK.
# High Performance Distributed Object Store [HPDOS]
## About
The HPDOS project is an attempt to optimise the storage stack in hyperconverged setups in recognition of recent advances in hardware technologies like SmartNICs, NVMe SSDs and persistent memories.
Here we plan to take advantage of SmartNIC technologies more specifically SoC based NICs to speed up the storage stack.
## Getting started
The folder code contains the HPDOS server and client implementation. To use them clone this repo.
HPDOS uses `gRPC` system calls with `protocol buffers` as the data exchange standard. The project is managed using `Gradle` project manager. As a first step, install the system requirements listed at the end of this section.
### Compile
To compile the codebase run `./gradlew build` separately from the client and server root directory. Gradle should take care of installing and managing any third party libraries used.
### Execute
To execute the server and client run `./gradlew run` in separate terminals.
### Clean
The project build generated files can be cleaned by running `./gradlew clean`