Skip to content

Funlxy/SPFresh

This branch is 4 commits ahead of SPFresh/SPFresh:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5b3366d · Jan 14, 2024
Jan 14, 2024
Jan 14, 2024
Dec 12, 2023
Mar 16, 2023
Mar 23, 2023
Jan 19, 2023
Jan 14, 2024
Jan 19, 2023
Jan 18, 2023
Mar 10, 2023
Jan 19, 2023
Jan 14, 2024
Jan 19, 2023
Jan 19, 2023
Jan 18, 2023
Jan 19, 2023
Aug 10, 2023
Jan 19, 2023
Jan 18, 2023
Jan 19, 2023
Jan 18, 2023
Jan 19, 2023
Jan 19, 2023

Repository files navigation

Supported Platform

We strongly recommend you to run SPFresh using the Standard_L16s_v3 instances on Azure as the code has been thoroughly tested there.

Important tips for creating Lsv3 VM

Since we use SPDK to build our storage, we need to disabled Secure boot option before creating Lsv3 VM, since:

1. Secure boot by default enables kernel lockdown
2. Kernel lockdown forbids PCI direct access from userspace
3. SPDK requires PCI direct access from userspace to run the NVMe driver

Source Code (Artifacts Available)

Clone the repository and submodules

git clone [email protected]:SPFresh/SPFresh.git
git submodule update --init --recursive

Getting Started (Artifacts Functional)

SPFresh

Dependency

install dependency

sudo apt install cmake
sudo apt install libjemalloc-dev libsnappy-dev libgflags-dev
sudo apt install pkg-config
sudo apt install swig libboost-all-dev
sudo apt install libtbb-dev
sudo apt install libisal-dev

We have modified rocksdb as an option of storage

git clone [email protected]:PtilopsisL/rocksdb.git

Compile SPDK

cd ThirdParty/spdk
./scripts/pkgdep.sh
CC=gcc-9 ./configure
CC=gcc-9 make -j

Remember to use higher version of gcc to do both configure and compile.

Compile isal-l_crypto

cd ThirdParty/isal-l_crypto
./autogen.sh
./configure
make -j

Build RocksDB

mkdir build && cd build
cmake -DUSE_RTTI=1 -DWITH_JEMALLOC=1 -DWITH_SNAPPY=1 -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-fPIC" ..
make -j
sudo make install

Build SPFresh

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j

Usage of build and search

The detailed usage can be found in Get started, and some of those variables definition can be found in ParameterDefinitionList.h.

Source Code of Baselines

For most figures, there are three lines: SPFresh, SPANN+, and DiskANN. SPFresh stands for our system. and SPANN+ is the base system of SPFresh without LIRE protocol, DiskANN is a recent system published in NIPS'19 and the streaming version is uploaded in 2022, we use it as a baseline to show the performance bottleneck of out-of-place update. We have modified DiskANN to fit our reproduction scripts. Use the following command to clone the Forked DiskANN and build the baseline systems

DiskANN

Install

clone DiskANN

git clone -b diskv2 https://github.com/Yuming-Xu/DiskANN_Baseline.git

install the dependency of DiskANN

sudo apt install libgoogle-perftools-dev clang-format
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18487/l_BaseKit_p_2022.1.2.146_offline.sh

Build

build then dependency of DiskANN

sudo sh ./l_BaseKit_p_2022.1.2.146_offline.sh

following commands shows how to configure MKL

Accepet & Customize Install --> Intel® oneAPI Math Kernel Library(only select this) --> Skip Eclipse* IDE Configuration --> Begin Installation --> Close

build DiskANN

mkdir build && cd build && cmake .. && make -j

if liomp5 can not be found, the following command could be useful

sudo ln -s /opt/intel/oneapi/compiler/latest/linux/compiler/lib/intel64_lin/libiomp5.so /usr/lib/x86_64-linux-gnu/libiomp5.so

Reproduce All Experiment Results(Result Reproduced)

We provide scripts in ./Script_AE folder for reproducing our experiments. For more details, see ./Script_AE/README.md.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 89.9%
  • Python 5.6%
  • CMake 1.7%
  • Gnuplot 0.9%
  • SWIG 0.7%
  • Shell 0.6%
  • Other 0.6%