This is the implementation repository of our VLDB'26 paper: CIDER: Boosting Memory-Disaggregated Key-Value Stores with Pessimistic Synchronization. This artifact provides the source code of CIDER and scripts to reproduce all the experiment results in our paper.
We strongly recommend you to run CIDER using the r650 instances on CloudLab as the code has been thoroughly tested there. We haven't done any test in other hardware environment.
Follow the steps below to create an experimental cluster with 8 r650 nodes on CloudLab:
-
Log into your own account.
-
Start an experiment with the link provided in
./script/cloudlab.profile.
Now you can log into all the CloudLab nodes. Using the following command to clone this github repo in the home directory (e.g., /users/TempUser) of all nodes:
git clone https://github.com/dmemsys/CIDER.gitYou have to install the necessary dependencies in order to build CIDER. Note that you should run the following steps on all nodes you have created.
-
Enter the CIDER directory.
cd CIDER -
Download traces.
git submodule update --init --recursive
-
Install Mellanox OFED.
sudo sh script/installMLNX.sh
-
Install the required libraries.
sudo sh script/installLibs.sh; -
Reboots.
reboot
You can reboot all nodes in the cluster via your experiment in CloudLab|-->List View|-->Reboot Selected
-
Hugepages setting on all nodes (This step should be re-execute every time you reboot the nodes).
cd CIDER sudo sh script/hugepage.sh -
Return to the root directory of CIDER and execute the following commands on all nodes to compile CIDER:
mkdir -p build; cd build; cmake -DSTATIC_MN_IP=on -DENABLE_CORO=OFF -DUSE_MCS_WCV=ON -DUSE_ST=ON -DDELAY_WRITE=ON ..; make -j
-
Execute the following command on one node to initialize the memcached:
sudo bash ../script/restartMemc.sh
-
Execute the following command on all nodes to conduct a zipfian evaluation on the pointer array:
./array_zipfian_test <CN_num> <read_ratio> <client_num_per_CN> <zipfian> 1
Example:
./array_zipfian_test 8 50 64 0.99 1
-
Results:
-
Throughput: the throughput of CIDER of the whole cluster will be shown in the terminal of the first node.
-
Latency: execute the following command on one node to calculate the latency results of the whole cluster:
python3 ../us_lat/cluster_latency.py <CN_num> <epoch_start> <epoch_num>
Example:
python3 ../us_lat/cluster_latency.py 8 2 4
-