This repository contains the artifact for the OSDI'22 paper:
Xinwei Fu, Dongyoon Lee, and Changwoo Min, “Durinn: Adversarial Memory and Thread Interleaving for Detecting Durable Linearizability Bugs”, In Proceedings of the 16th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2022).
The artifact was tested in a machine with following specifications:
- 64-bit Fedora 29 OS
- two 16-core Intel Xeon Gold 5218 processors (2.30 Ghz)
- 192 GB DRAM
- 512 GB NVM
Here we assume we are using Fedora 29, so we use yum for package management.
Here we assume we are using bash.
- setup .bashrc
# vim ~/.bashrc and add following: export LLVM9_HOME=/home/usr/llvm/llvm-9.0.1.src export LLVM9_BIN=$LLVM9_HOME/build/bin export DURINN_HOME=/home/usr/durinn export PMEM_MMAP_HINT=600000000000 export PMEM_IS_PMEM_FORCE=1 export NDCTL_ENABLE=n ulimit -c unlimited
source ~/.bashrc
- setup /etc/sysctl.conf
# sudo vim /etc/sysctl.conf and add following: kernel.core_pattern=/tmp/%e-%p.core
sudo sysctl -p
- install llvm and clang 9.0.1
- get source
mkdir $LLVM9_HOME wget https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.1/llvm-9.0.1.src.tar.xz wget https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.1/clang-9.0.1.src.tar.xz wget https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.1/compiler-rt-9.0.1.src.tar.xz tar xvf llvm-9.0.1.src.tar.xz && rm -f llvm-9.0.1.src.tar.xz tar xvf clang-9.0.1.src.tar.xz && rm -f clang-9.0.1.src.tar.xz tar xvf compiler-rt-9.0.1.src.tar.xz && rm -f compiler-rt-9.0.1.src.tar.xz mv llvm-9.0.1.src $LLVM9_HOME mv clang-9.0.1.src $LLVM9_HOME/tools/clang mv compiler-rt-9.0.1.src $LLVM9_HOME/projects/compiler-rt
- make
mkdir -p $LLVM9_HOME/build cd $LLVM9_HOME/build cmake -DLLVM_ENABLE_RTTI=true .. make -j16
- update .bashrc
# vim ~/.bashrc and add following: export CC=$LLVM9_BIN/clang export CXX=$LLVM9_BIN/clang++
source ~/.bashrc
- get source
# boost and ...
sudo yum install gcc gcc-c++ vim make cmake tmux git boost-devel python3-pip \
tbb-devel libatomic autoconf libevent-devel automake psmisc gdb
git clone git@github.com:cosmoss-jigu/durinn.git
cd $DURINN_HOME/script
# build durinn
./build.sh
# instrument apps
python3 instrument.py
# reproduce table 3, figure 11 and figure 12 in the paper
python3 table-3.py
python3 fig-11.py
python3 fig-12.py
After the script finishes, you can find following table and figures in the $DURINN_HOME/script directory:
- table-2.csv
- fig-11.pdf
- fig-12.pdf