9
PYHST="/root/pyhst/pyhst.sh"
10
PYHST_DATA="/home/csa/data/bench"
12
FS_LIST="ext4 xfs ext2 jfs reiserfs btrfs"
16
END_START=`expr $WIDTH '*' 2 - 2`
17
END_END=`expr $WIDTH '*' 2`
19
echo $DEVICE | grep "/dev/md" &> /dev/null
20
if [ $? -eq 0 ]; then SUFFIX="p"; else SUFFIX=""; fi
23
umount -l /mnt/slow &> /dev/null
24
umount -l /mnt/fast &> /dev/null
27
parted $DEVICE --script mklabel gpt
28
parted $DEVICE --script rm 3 &> /dev/null
29
parted $DEVICE --script rm 2 &> /dev/null
30
parted $DEVICE --script rm 1 &> /dev/null
31
parted $DEVICE --script mkpart primary 1GB 2TB
32
parted $DEVICE --script mkpart primary ${END_START}TB ${END_END}TB
33
parted $DEVICE --script mkpart primary 2TB 3TB
36
function format_ext4 {
37
block=4 # in KB (4096)
38
stride=`expr $CHUNK / $block`
39
swidth=`expr $stride '*' $WIDTH`
40
mkfs.ext4 -b 4096 -E stride=${stride},stripe-width=${swidth} $1 > /dev/null
44
function format_ext2 {
45
block=4 # in KB (4096)
46
stride=`expr $CHUNK / $block`
47
swidth=`expr $stride '*' $WIDTH`
48
mkfs.ext2 -b 4096 -E stride=${stride},stripe-width=${swidth} $1 > /dev/null
53
mkfs.xfs -f -d su=${CHUNK}k,sw=${WIDTH} $1 > /dev/null
54
mount -o noatime,allocsize=1GiB,largeio,swalloc $1 $2
58
function format_xfsrt {
59
mkfs.xfs -f -d su=${CHUNK}k,sw=${WIDTH} -r rtdev=$1,extsize=1g ${DEVICE}${SUFFIX}3 > /dev/null
60
mount -o noatime,allocsize=1GiB,largeio,swalloc,rtdev=$1 ${DEVICE}${SUFFIX}3 $2
64
function format_btrfs {
65
sector=`expr $CHUNK '*' 1024`
66
# mkfs.btrfs -s $sector -l $sector -n $sector $1 > /dev/null
67
mkfs.btrfs $1 > /dev/null
72
mkfs.jfs -q $1 > /dev/null
76
function format_reiserfs {
77
mkfs.reiserfs -q $1 > /dev/null
83
res=`stdbuf -oL -eL ./fwbench.sh $1/testfile ${FILE_SIZE} $speed |tee /dev/stderr | tail -n 7 | sed -e ':a;N;$!ba;s/\n/@eol@/g'`
84
echo $res | sed -e 's/@eol@/\n/g'
85
res=`echo $res | sed -e 's/@eol@/\n/g' | tail -n 1 | cut -d ':' -f 2`
86
if [ $res -gt 0 ]; then
89
stdbuf -oL -eL taskset -c $NUMA_CPU ./seqreader $1 | tee /dev/stderr | tail -n 5
92
function bench_device {
94
res=`stdbuf -oL -eL ./fwbench.sh $1 ${FILE_SIZE} $speed |tee /dev/stderr | tail -n 7 | sed -e ':a;N;$!ba;s/\n/@eol@/g'`
95
echo $res | sed -e 's/@eol@/\n/g'
96
res=`echo $res | sed -e 's/@eol@/\n/g' | tail -n 1 | cut -d ':' -f 2`
97
if [ $res -gt 0 ]; then
100
stdbuf -oL -eL taskset -c $NUMA_CPU ./seqreader $1 ${FILE_SIZE} | tee /dev/stderr | tail -n 5
104
function bench_pyhst {
107
cat $PYHST_DATA/*.par | sed -e "s|@PATH@|$data|g" > $data/bench.par
108
cp -r $PYHST_DATA/out_phase $data/
109
echo 3 > /proc/sys/vm/drop_caches
110
eval stdbuf -oL -eL $PYHST $data/bench.par 2>&1 | tee /dev/stderr | grep "Input/Output"
114
speed=`expr $FAST_SPEED + 50`
116
eval $formater ${DEVICE}${SUFFIX}1 /mnt/fast
117
if [ $? -eq 0 ]; then
118
mount -o noatime ${DEVICE}${SUFFIX}1 /mnt/fast
120
echo "Testing $1 (fast partition)"
121
echo "=================================="
122
bench_path /mnt/fast $speed
125
echo "Testing $1 (PyHST)"
126
echo "=================================="
127
bench_pyhst /mnt/fast
133
eval $formater ${DEVICE}${SUFFIX}2 /mnt/slow
134
if [ $? -eq 0 ]; then
135
mount -o noatime ${DEVICE}${SUFFIX}2 /mnt/slow
137
echo "Testing $1 (slow partition)"
138
echo "=================================="
139
bench_path /mnt/slow $speed
146
function test_partition {
147
speed=`expr $FAST_SPEED + 50`
148
echo "Testing partition: $1"
149
echo "=================================="
150
bench_device $1 $speed
155
test_partition ${DEVICE}
156
test_partition ${DEVICE}${SUFFIX}2
158
for fs in $FS_LIST; do