Skip to content

Commit 2fbc80e

Browse files
committed
Added the git workload
1 parent b607b6c commit 2fbc80e

File tree

8 files changed

+222
-11
lines changed

8 files changed

+222
-11
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ sqlite3-trace/.libs
1616
rsync/workload/
1717
rsync/rsync
1818
tar/workload/
19+
git/workload/
20+
linux-4.18.10.tar.gz
1921

2022
!ycsb/core
2123
!ycsb/tracerecorder

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ $ rm -rf /mnt/pmem_emul/*
8181
2. `dependencies/` contains packages and scripts to resolve dependencies
8282
3. `kernel/` contains the Linux 4.13.0 kernel
8383
4. `micro/` contains the microbenchmark
84-
4. `leveldb/` contains LevelDB source code
85-
5. `rsync/` contains the rsync source code
86-
6. `scripts/` contains scripts to compile and run workloads and kernel
87-
7. `splitfs-so/` contains the SplitFS-strict shared libraries for running different workloads
88-
8. `sqlite3-trace/` contains SQLite3 source code
89-
9. `tpcc-sqlite/` contains TPCC source code
90-
10. `ycsb/` contains YCSB source code
91-
11. `tar/` contains tar source code
84+
5. `leveldb/` contains LevelDB source code
85+
6. `rsync/` contains the rsync source code
86+
7. `scripts/` contains scripts to compile and run workloads and kernel
87+
8. `splitfs-so/` contains the SplitFS-strict shared libraries for running different workloads
88+
9. `sqlite3-trace/` contains SQLite3 source code
89+
10. `tpcc-sqlite/` contains TPCC source code
90+
11. `ycsb/` contains YCSB source code
91+
12. `tar/` contains tar source code
9292

9393
The [Experiments
9494
page](https://github.com/utsaslab/SplitFS/blob/master/experiments.md)

experiments.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ We evaluate and benchmark on SplitFS using different application benchmarks like
4545
5. TPCC: `cd scripts/tpcc; ./compile_tpcc.sh; cd ../..` -- This will compile TPCC workload
4646
6. rsync: `cd scripts/rsync; ./compile_rsync.sh; cd ../..` -- This will compile rsync
4747
7. tar: `cd scripts/tar; ./compile_tar.sh; cd ../..` -- This will compile tar
48+
8. git: Does not require any compilation
4849

4950
Note: The <num_threads> argument in the compilation scripts performs the compilation with the number of threads given as input to the script, to improve the speed of compilation.
5051

@@ -54,23 +55,25 @@ Note: The <num_threads> argument in the compilation scripts performs the compila
5455

5556
1. YCSB: `cd scripts/ycsb; ./gen_workloads.sh; cd ../..` -- This will generate the YCSB workload files to be run with LevelDB, because YCSB does not natively support LevelDB, and has been added to the benchmarks of LevelDB
5657
2. TPCC: `cd scripts/tpcc; ./gen_workload.sh; cd ../..` -- This will create an initial database on SQLite on which to run the TPCC workload
57-
3. rsync: `cd scripts/rsync/; sudo ./rsync_gen_workload.sh; cd ../..` -- This will create the rsync workload according to the backup data distribution as mentioned in the Paper
58+
3. rsync: `cd scripts/rsync/; sudo ./rsync_gen_workload.sh; cd ../..` -- This will create the rsync workload according to the backup data distribution as mentioned in the paper
5859
4. tar: `cd scripts/tar/; sudo ./gen_workload.sh; cd ../..` -- This will create the tar workload as mentioned in the paper
60+
5. git: `cd scripts/git/; sudo ./gen_workload.sh; cd ../..` -- This will create the git workload as mentioned in the paper
5961

6062
---
6163

6264
### Run Application Workloads
6365

64-
1. YCSB: `cd scripts/ycsb; ./run_ycsb.sh; cd ../..` -- This will run all the YCSB workloads on LevelDB (Load A, Run A-F, Load E, Run E) with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-strict`
66+
1. YCSB: `cd scripts/ycsb; ./run_ycsb.sh; cd ../..` -- This will run all the YCSB workloads on LevelDB (Load A, Run A-F, Load E, Run E) with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-strict`
6567
2. TPCC: `cd scripts/tpcc; ./run_tpcc.sh; cd ../..` -- This will run the TPCC workload on SQLite3 with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-POSIX`
6668
3. rsync: `cd scripts/rsync; ./run_rsync.sh; cd ../..` -- This will run the rsync workload with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-sync`
6769
4. tar: `cd scripts/tar; ./run_tar.sh; cd ../..` -- This will run the tar workload with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-POSIX, SplitFS-sync, SplitFS-strict`
70+
5. git: `cd scripts/git; ./run_git.sh; cd ../..` -- This will run the git workload with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-POSIX, SplitFS-sync, SplitFS-strict`
6871

6972
---
7073

7174
### Run Software Overhead Workloads
7275

73-
1. YCSB: `cd scripts/ycsb; ./run_ycsb_soft.sh; cd ../..` -- This will run all the YCSB workloads on LevelDB (Load A, Run A) with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-strict, SplitFS-sync, SplitFS-POSIX`
76+
1. YCSB: `cd scripts/ycsb; ./run_ycsb_soft.sh; cd ../..` -- This will run all the YCSB workloads on LevelDB (Load A, Run A) with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-strict, SplitFS-sync, SplitFS-POSIX`
7477
2. TPCC: `cd scripts/tpcc; ./run_tpcc_soft.sh; cd ../..` -- This will run the TPCC workload on SQLite3 with `ext4-DAX, NOVA strict, NOVA Relaxed, PMFS, SplitFS-strict, SplitFS-sync, SplitFS-POSIX`
7578

7679
---

scripts/git/Makefile

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Run tests for splitfs
2+
3+
# The current working directory
4+
CWD=$(shell pwd)
5+
# Root of the repo
6+
ROOT=$(CWD)/../..
7+
# SplitFS path
8+
SFS_PATH=/mnt/pmem_emul/
9+
10+
all: splitfs.posix splitfs.sync splitfs.strict
11+
12+
# Compile with posix specific flags
13+
splitfs.posix_compile:
14+
export LEDGER_DATAJ=0 && \
15+
export LEDGER_POSIX=1 && \
16+
export LEDGER_GIT=1 && \
17+
$(MAKE) -C ${ROOT}/splitfs clean && \
18+
$(MAKE) -e -C ${ROOT}/splitfs
19+
20+
# Compile with sync specific flags
21+
splitfs.sync_compile:
22+
export LEDGER_DATAJ=0 && \
23+
export LEDGER_POSIX=0 && \
24+
export LEDGER_GIT=1 && \
25+
$(MAKE) -C ${ROOT}/splitfs clean && \
26+
$(MAKE) -e -C ${ROOT}/splitfs
27+
28+
# Compile with strict specific flags
29+
splitfs.strict_compile:
30+
export LEDGER_DATAJ=1 && \
31+
export LEDGER_POSIX=0 && \
32+
export LEDGER_GIT=1 && \
33+
$(MAKE) -C ${ROOT}/splitfs clean && \
34+
$(MAKE) -e -C ${ROOT}/splitfs
35+
36+
splitfs.posix: splitfs.posix_compile
37+
38+
splitfs.sync: splitfs.sync_compile
39+
40+
splitfs.strict: splitfs.strict_compile

scripts/git/gen_workload.sh

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/bin/bash
2+
3+
set -x
4+
5+
cur_dir=$(pwd)
6+
root_dir=`readlink -f ../..`
7+
pmem_dir=/mnt/pmem_emul
8+
linux_tar=linux-4.18.10.tar.gz
9+
linux_dir=linux-4.18.10
10+
11+
cd $root_dir
12+
rm $linux_tar
13+
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.10.tar.gz
14+
15+
rm -rf $pmem_dir/repo
16+
mkdir -p $pmem_dir/repo
17+
cp $root_dir/$linux_tar $pmem_dir/repo
18+
cd $pmem_dir/repo
19+
20+
for i in {1..9}
21+
do
22+
mkdir folder$i
23+
done
24+
25+
tar -xf $linux_tar
26+
for i in {1..9}
27+
do
28+
cp -r $linux_dir folder$i/
29+
done
30+
31+
rm -rf $linux_dir
32+
rm $linux_tar
33+
34+
cd $cur_dir
35+
rm -rf $root_dir/git/workload/*
36+
mkdir -p $root_dir/git/workload
37+
cp -r $pmem_dir/repo $root_dir/git/workload/
38+

scripts/git/run_fs.sh

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/bin/bash
2+
3+
if [ "$#" -ne 2 ]; then
4+
echo "Usage: sudo ./run_fs.sh <fs> <run_id>"
5+
exit 1
6+
fi
7+
8+
set -x
9+
10+
workload=git
11+
fs=$1
12+
run_id=$2
13+
current_dir=$(pwd)
14+
git_dir=`readlink -f ../../git`
15+
workload_dir=$git_dir/workload
16+
pmem_dir=/mnt/pmem_emul
17+
boost_dir=`readlink -f ../../splitfs`
18+
result_dir=`readlink -f ../../results`
19+
fs_results=$result_dir/$fs/$workload
20+
21+
if [ "$fs" == "splitfs-posix" ]; then
22+
run_boost=1
23+
elif [ "$fs" == "splitfs-sync" ]; then
24+
run_boost=1
25+
elif [ "$fs" == "splitfs-strict" ]; then
26+
run_boost=1
27+
else
28+
run_boost=0
29+
fi
30+
31+
ulimit -c unlimited
32+
33+
echo Sleeping for 5 seconds . .
34+
sleep 5
35+
36+
run_workload()
37+
{
38+
39+
echo ----------------------- GIT WORKLOAD ---------------------------
40+
41+
mkdir -p $fs_results
42+
rm $fs_results/run$run_id
43+
44+
rm -rf $pmem_dir/*
45+
cp -r $workload_dir/repo $pmem_dir && sync
46+
sync && echo 3 > /proc/sys/vm/drop_caches && sync
47+
48+
cd $pmem_dir
49+
cd repo
50+
git init
51+
52+
sleep 5
53+
54+
date
55+
56+
if [ $run_boost -eq 1 ]; then
57+
time $boost_dir/run_boost.sh -p $boost_dir -t nvp_nvp.tree git add . 2>&1 | tee $fs_results/run$run_id
58+
else
59+
time git add . 2>&1 | tee $fs_results/run$run_id
60+
fi
61+
62+
date
63+
64+
cd $current_dir
65+
66+
echo Sleeping for 5 seconds . .
67+
sleep 5
68+
69+
}
70+
71+
72+
run_workload
73+
74+
cd $current_dir

scripts/git/run_git.sh

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/bash
2+
3+
current_dir=$(pwd)
4+
setup_dir=`readlink -f ../configs`
5+
pmem_dir=/mnt/pmem_emul
6+
7+
run_git()
8+
{
9+
fs=$1
10+
for run in 1 2 3
11+
do
12+
sudo rm -rf $pmem_dir/*
13+
sudo taskset -c 0-7 ./run_fs.sh $fs $run
14+
sleep 5
15+
done
16+
}
17+
18+
echo "-- ext4-DAX --"
19+
sudo $setup_dir/dax_config.sh
20+
run_git dax
21+
22+
echo "-- NOVA Relaxed --"
23+
cd $setup_dir
24+
sudo ./nova_relaxed_config.sh
25+
cd $current_dir
26+
run_git relaxed_nova
27+
28+
echo "-- PMFS --"
29+
cd $setup_dir
30+
sudo $setup_dir/pmfs_config.sh
31+
cd $current_dir
32+
run_git pmfs
33+
34+
echo "-- NOVA --"
35+
cd $setup_dir
36+
sudo ./nova_config.sh
37+
cd $current_dir
38+
run_git nova
39+
40+
echo "-- SplitFS Posix --"
41+
make splitfs.posix
42+
sudo $setup_dir/dax_config.sh
43+
run_git splitfs-posix
44+
45+
echo "-- SplitFS Sync --"
46+
make splitfs.sync
47+
sudo $setup_dir/dax_config.sh
48+
run_git splitfs-sync
49+
50+
echo "-- SplitFS Strict --"
51+
make splitfs.strict
52+
sudo $setup_dir/dax_config.sh
53+
run_git splitfs-strict

scripts/tar/gen_workload.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ cd $root_dir
1212
rm $linux_tar
1313
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.18.10.tar.gz
1414

15+
rm -rf $pmem_dir/repo
1516
mkdir -p $pmem_dir/repo
1617
cp $root_dir/$linux_tar $pmem_dir/repo
1718
cd $pmem_dir/repo

0 commit comments

Comments
 (0)