Skip to content

Commit e9081f3

Browse files
author
tanabe takayuki
committed
cicada, tictoc, silo.
cicada : util.cc から remove_tree を消した.remove_tree の実装が消えていた. tictoc, silo : read phase に遅延を挟む実装をした. x 軸が thread のスクリプトを実装した.
1 parent e6d43f2 commit e9081f3

File tree

10 files changed

+566
-13
lines changed

10 files changed

+566
-13
lines changed

cicada/util.cc

-3
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,6 @@ void deleteDB() {
355355
for (auto &th : thv) th.join();
356356

357357
delete Table;
358-
#if MASSTREE_USE
359-
MT.remove_tree();
360-
#endif
361358
delete ThreadRtsArrayForGroup;
362359
delete ThreadWtsArray;
363360
delete ThreadRtsArray;

include/util.hh

+6
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,9 @@ inline void makeProcedure(std::vector<Procedure> &pro, Xoroshiro128Plus &rnd,
126126
#endif
127127
}
128128

129+
[[maybe_unused]] inline void sleepTics(size_t tics) {
130+
uint64_t start(rdtscp());
131+
while (rdtscp() - start < tics);
132+
}
133+
134+

silo/Makefile

+13-4
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,28 @@ REL := ../common/
77
include $(REL)Makefile
88
SILO_ALLSRC = $(SILO_SRCS1) $(SRCS2) $(wildcard include/*.hh)
99

10+
# start of initialization of some parameters.
1011
KEY_SIZE=8
1112
VAL_SIZE=4
13+
ADD_ANALYSIS=1
14+
MASSTREE_USE=1
15+
PARTITION_TABLE=0
16+
PROCEDURE_SORT=0
17+
18+
SLEEP_READ_PHASE=0 # # of tics
19+
# end of initialization
1220

1321
CC = g++
1422
CFLAGS = -c -pipe -g -O3 -std=c++17 -march=native \
1523
-Wall -Wextra -Wdangling-else -Wchkp -Winvalid-memory-model \
1624
-DKEY_SIZE=$(KEY_SIZE) -DVAL_SIZE=$(VAL_SIZE) \
1725
-D$(shell uname) \
1826
-D$(shell hostname) \
19-
-DADD_ANALYSIS=1 \
20-
-DMASSTREE_USE=1 \
21-
-DPARTITION_TABLE=0 \
22-
-DPROCEDURE_SORT=0 \
27+
-DADD_ANALYSIS=$(ADD_ANALYSIS) \
28+
-DMASSTREE_USE=$(MASSTREE_USE) \
29+
-DPARTITION_TABLE=$(PARTITION_TABLE) \
30+
-DPROCEDURE_SORT=$(PROCEDURE_SORT) \
31+
-DSLEEP_READ_PHASE=$(SLEEP_READ_PHASE) \
2332

2433
LDFLAGS = -L../third_party/mimalloc/out/release -L../third_party/mimalloc/out/debug
2534
LIBS = -lpthread -lmimalloc

silo/script/ycsb-xslprp.sh

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
#ycsb-xslprp.sh(silo)
2+
tuple=100000000
3+
maxope=10
4+
rratioary=(50)
5+
rmw=off
6+
skew=0.9
7+
ycsb=on
8+
epochtime=40
9+
extime=3
10+
epoch=3
11+
12+
host=`hostname`
13+
chris41="chris41.omni.hpcc.jp"
14+
dbs11="dbs11"
15+
16+
#basically
17+
thread=24
18+
if test $host = $dbs11 ; then
19+
thread=224
20+
fi
21+
22+
if test $host = $dbs11 ; then
23+
cpumhz=2100
24+
fi
25+
26+
if test $host = $chris41 ; then
27+
cpumhz=2400
28+
fi
29+
30+
for rratio in "${rratioary[@]}"
31+
do
32+
if test $rratio = 50; then
33+
result=result_silo_ycsbA_tuple100m_skew09_slprp0-1000.dat
34+
elif test $rratio = 95; then
35+
result=result_silo_ycsbB_tuple100m_skew09_val4-1k.dat
36+
elif test $rratio = 100; then
37+
result=result_silo_ycsbC_tuple100m_skew09_val4-1k.dat
38+
else
39+
echo "BUG"
40+
exit 1
41+
fi
42+
rm $result
43+
44+
echo "#tuple num, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result
45+
echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime" >> $result
46+
47+
for ((slpclks = 0; slpclks <= 1000; slpclks += 100))
48+
do
49+
cd ../
50+
make clean; make -j SLEEP_READ_PHASE=$slpclks VAL_SIZE=4
51+
cd script
52+
53+
echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime"
54+
55+
sumTH=0
56+
sumAR=0
57+
sumCA=0
58+
maxTH=0
59+
maxAR=0
60+
maxCA=0
61+
minTH=0
62+
minAR=0
63+
minCA=0
64+
sumRLR=0
65+
sumVLR=0
66+
sumER=0
67+
for ((i = 1; i <= epoch; ++i))
68+
do
69+
if test $host = $dbs11 ; then
70+
sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime > exp.txt
71+
fi
72+
if test $host = $chris41 ; then
73+
perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime > exp.txt
74+
fi
75+
76+
tmpTH=`grep throughput ./exp.txt | awk '{print $2}'`
77+
tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'`
78+
tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'`
79+
tmpER=`grep extra_reads ./exp.txt | awk '{print $2}'`
80+
tmpRLR=`grep read_latency_rate ./exp.txt | awk '{print $2}'`
81+
tmpVLR=`grep vali_latency_rate ./exp.txt | awk '{print $2}'`
82+
sumTH=`echo "$sumTH + $tmpTH" | bc`
83+
sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f`
84+
sumCA=`echo "$sumCA + $tmpCA" | bc`
85+
sumER=`echo "$sumER + $tmpER" | bc`
86+
sumRLR=`echo "scale=4; $sumRLR + $tmpRLR" | bc | xargs printf %.4f`
87+
sumVLR=`echo "scale=4; $sumVLR + $tmpVLR" | bc | xargs printf %.4f`
88+
echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA, tmpER: $tmpER, tmpRLR: $tmpRLR, tmpVLR: $tmpVLR"
89+
90+
if test $i -eq 1 ; then
91+
maxTH=$tmpTH
92+
maxAR=$tmpAR
93+
maxCA=$tmpCA
94+
minTH=$tmpTH
95+
minAR=$tmpAR
96+
minCA=$tmpCA
97+
fi
98+
99+
flag=`echo "$tmpTH > $maxTH" | bc`
100+
if test $flag -eq 1 ; then
101+
maxTH=$tmpTH
102+
fi
103+
flag=`echo "$tmpAR > $maxAR" | bc`
104+
if test $flag -eq 1 ; then
105+
maxAR=$tmpAR
106+
fi
107+
flag=`echo "$tmpCA > $maxCA" | bc`
108+
if test $flag -eq 1 ; then
109+
maxCA=$tmpCA
110+
fi
111+
112+
flag=`echo "$tmpTH < $minTH" | bc`
113+
if test $flag -eq 1 ; then
114+
minTH=$tmpTH
115+
fi
116+
flag=`echo "$tmpAR < $minAR" | bc`
117+
if test $flag -eq 1 ; then
118+
minAR=$tmpAR
119+
fi
120+
flag=`echo "$tmpCA < $minCA" | bc`
121+
if test $flag -eq 1 ; then
122+
minCA=$tmpCA
123+
fi
124+
125+
done
126+
avgTH=`echo "$sumTH / $epoch" | bc`
127+
avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f`
128+
avgCA=`echo "$sumCA / $epoch" | bc`
129+
avgER=`echo "$sumER / $epoch" | bc`
130+
avgRLR=`echo "scale=4; $sumRLR / $epoch" | bc | xargs printf %.4f`
131+
avgVLR=`echo "scale=4; $sumVLR / $epoch" | bc | xargs printf %.4f`
132+
echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA"
133+
echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA, avgER: $avgER, avgRLR: $avgRLR, avgVLR: $avgVLR"
134+
echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA"
135+
echo "minTH: $minTH, minAR: $minAR, minCA: $minCA"
136+
echo ""
137+
echo "$slpclks $avgTH $minTH $maxTH $avgAR $minAR $maxAR $avgCA $minCA $maxCA $avgER $avgRLR $avgVLR" >> $result
138+
done
139+
done

silo/script/ycsb-xth.sh

+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
#ycsb-xth.sh(silo)
2+
tuple=10000000
3+
maxope=16
4+
#rratioary=(50 95 100)
5+
rratioary=(50)
6+
rmw=off
7+
skew=0.9
8+
ycsb=on
9+
cpumhz=2100
10+
epochtime=40
11+
extime=3
12+
epoch=3
13+
14+
host=`hostname`
15+
chris41="chris41.omni.hpcc.jp"
16+
dbs11="dbs11"
17+
18+
#basically
19+
thread=24
20+
if test $host = $dbs11 ; then
21+
thread=224
22+
fi
23+
24+
cd ../
25+
make clean; make -j VAL_SIZE=1000
26+
cd script/
27+
28+
for rratio in "${rratioary[@]}"
29+
do
30+
if test $rratio = 50 ; then
31+
result=result_silo_ycsb_tuple10m_skew09.dat
32+
elif test $rratio = 90 ; then
33+
result=result_silo_ycsbA_tuple1k-100m_val1k_skew09.dat
34+
elif test $rratio = 95 ; then
35+
result=result_silo_ycsbB_tuple1k-100m_val1k_skew09.dat
36+
elif test $rratio = 100 ; then
37+
result=result_silo_ycsbC_tuple10m_ope2.dat
38+
else
39+
echo "BUG"
40+
exit 1
41+
fi
42+
rm $result
43+
44+
echo "#tuple num, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result
45+
echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime" >> $result
46+
47+
for ((thread=1; thread<=81; thread+=10))
48+
do
49+
echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime"
50+
51+
sumTH=0
52+
sumAR=0
53+
sumCA=0
54+
maxTH=0
55+
maxAR=0
56+
maxCA=0
57+
minTH=0
58+
minAR=0
59+
minCA=0
60+
for ((i = 1; i <= epoch; ++i))
61+
do
62+
if test $host = $dbs11 ; then
63+
sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime > exp.txt
64+
fi
65+
if test $host = $chris41 ; then
66+
perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../silo.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpumhz $epochtime $extime > exp.txt
67+
fi
68+
69+
tmpTH=`grep throughput ./exp.txt | awk '{print $2}'`
70+
tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'`
71+
tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'`
72+
sumTH=`echo "$sumTH + $tmpTH" | bc`
73+
sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f`
74+
sumCA=`echo "$sumCA + $tmpCA" | bc`
75+
echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA"
76+
77+
if test $i -eq 1 ; then
78+
maxTH=$tmpTH
79+
maxAR=$tmpAR
80+
maxCA=$tmpCA
81+
minTH=$tmpTH
82+
minAR=$tmpAR
83+
minCA=$tmpCA
84+
fi
85+
86+
flag=`echo "$tmpTH > $maxTH" | bc`
87+
if test $flag -eq 1 ; then
88+
maxTH=$tmpTH
89+
fi
90+
flag=`echo "$tmpAR > $maxAR" | bc`
91+
if test $flag -eq 1 ; then
92+
maxAR=$tmpAR
93+
fi
94+
flag=`echo "$tmpCA > $maxCA" | bc`
95+
if test $flag -eq 1 ; then
96+
maxCA=$tmpCA
97+
fi
98+
99+
flag=`echo "$tmpTH < $minTH" | bc`
100+
if test $flag -eq 1 ; then
101+
minTH=$tmpTH
102+
fi
103+
flag=`echo "$tmpAR < $minAR" | bc`
104+
if test $flag -eq 1 ; then
105+
minAR=$tmpAR
106+
fi
107+
flag=`echo "$tmpCA < $minCA" | bc`
108+
if test $flag -eq 1 ; then
109+
minCA=$tmpCA
110+
fi
111+
112+
done
113+
avgTH=`echo "$sumTH / $epoch" | bc`
114+
avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f`
115+
avgCA=`echo "$sumCA / $epoch" | bc`
116+
echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA"
117+
echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA"
118+
echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA"
119+
echo "minTH: $minTH, minAR: $minAR, minCA: $minCA"
120+
echo ""
121+
echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result
122+
done
123+
done

silo/transaction.cc

+7-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,13 @@ char *TxnExecutor::tread(uint64_t key) {
108108
}
109109

110110
read_set_.emplace_back(key, tuple, return_val_,
111-
expected); // emplace の方が性能が良い
111+
expected);
112+
// emplace is often better performance than push_back.
113+
114+
#if SLEEP_READ_PHASE
115+
sleepTics(SLEEP_READ_PHASE);
116+
#endif
117+
112118
#if ADD_ANALYSIS
113119
sres_->local_read_latency_ += rdtscp() - start;
114120
#endif

tictoc/Makefile

+14-5
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,29 @@ REL := ../common/
55
include $(REL)Makefile
66
TICTOC_ALLSRC = $(TICTOC_SRCS1) $(wildcard include/*.hh)
77

8+
# start of initialization of some parameters
89
KEY_SIZE=8
910
VAL_SIZE=4
11+
NO_WAIT_LOCKING_IN_VALIDATION=1
12+
PREEMPTIVE_ABORTS=1
13+
TIMESTAMP_HISTORY=1
14+
MASSTREE_USE=1
15+
ADD_ANALYSIS=1
16+
17+
SLEEP_READ_PHASE=0 # # of tics
18+
#end of initialization
1019

1120
CC = g++
1221
CFLAGS = -c -pipe -g -O3 -std=c++17 -march=native \
1322
-Wall -Wextra -Wdangling-else -Wchkp -Winvalid-memory-model \
1423
-D$(shell uname) \
1524
-D$(shell hostname) \
1625
-DKEY_SIZE=$(KEY_SIZE) -DVAL_SIZE=$(VAL_SIZE) \
17-
-DNO_WAIT_LOCKING_IN_VALIDATION=1 \
18-
-DPREEMPTIVE_ABORTS=1 \
19-
-DTIMESTAMP_HISTORY=1 \
20-
-DMASSTREE_USE=1 \
21-
-DADD_ANALYSIS=1 \
26+
-DADD_ANALYSIS=$(ADD_ANALYSIS) \
27+
-DMASSTREE_USE=$(MASSTREE_USE) \
28+
-DNO_WAIT_LOCKING_IN_VALIDATION=$(NO_WAIT_LOCKING_IN_VALIDATION) \
29+
-DPREEMPTIVE_ABORTS=$(PREEMPTIVE_ABORTS) \
30+
-DTIMESTAMP_HISTORY=$(SLEEP_READ_PHASE) \
2231

2332
LDFLAGS = -L../third_party/mimalloc/out/release
2433
LIBS = -lpthread -lmimalloc

0 commit comments

Comments
 (0)