projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix double free of zone cache data
[fio.git]
/
tools
/
genfio
diff --git
a/tools/genfio
b/tools/genfio
index 6d3220daf1a4d93568a20f5950272a8f1198ac37..286d814de71506c0c187dd4a6b530b446b54e9b7 100755
(executable)
--- a/
tools/genfio
+++ b/
tools/genfio
@@
-1,4
+1,4
@@
-#!/bin/bash
+#!/
usr/
bin/bash
#
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
# Author: Erwan Velu <erwan@enovance.com>
#
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
# Author: Erwan Velu <erwan@enovance.com>
@@
-17,7
+17,7
@@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 5
9 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# Foundation, Inc., 5
1 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
BLK_SIZE=
BLOCK_SIZE=4k
BLK_SIZE=
BLOCK_SIZE=4k
@@
-25,6
+25,7
@@
SEQ=-1
TEMPLATE=/tmp/template.fio
OUTFILE=
DISKS=
TEMPLATE=/tmp/template.fio
OUTFILE=
DISKS=
+PRINTABLE_DISKS=
RUNTIME=300
ETA=0
MODES="write,randwrite,read,randread"
RUNTIME=300
ETA=0
MODES="write,randwrite,read,randread"
@@
-50,25
+51,28
@@
show_help() {
one test after anoter but all disks at the same time
Enabled by default
-D iodepth : Run with the specified iodepth
one test after anoter but all disks at the same time
Enabled by default
-D iodepth : Run with the specified iodepth
- Default is
32
+ Default is
$IODEPTH
-d disk1[,disk2,disk3,..] : Run the tests on the selected disks
Separated each disk with a comma
-d disk1[,disk2,disk3,..] : Run the tests on the selected disks
Separated each disk with a comma
- Disk name shall be "sdxx", /dev/ shall NOT be used here
+-z filesize : Specify the working file size, if you are passing filepaths to -d
+ Disabled by default
-r seconds : Time in seconds per benchmark
0 means till the end of the device
-r seconds : Time in seconds per benchmark
0 means till the end of the device
- Default is
300
seconds
+ Default is
$RUNTIME
seconds
-b blocksize[,blocksize1, ...] : The blocksizes to test under fio format (4k, 1m, ...)
Separated each blocksize with a comma
-b blocksize[,blocksize1, ...] : The blocksizes to test under fio format (4k, 1m, ...)
Separated each blocksize with a comma
- Default is
4k
+ Default is
$BLOCK_SIZE
-m mode1,[mode2,mode3, ...] : Define the fio IO profile to use like read, write, randread, randwrite
-m mode1,[mode2,mode3, ...] : Define the fio IO profile to use like read, write, randread, randwrite
- Default is "
write,randwrite,read,randread
"
+ Default is "
$MODES
"
-x prefix : Add a prefix to the fio filename
Useful to let a context associated with the file
If the prefix features a / (slash), prefix will be considered as a directory
-x prefix : Add a prefix to the fio filename
Useful to let a context associated with the file
If the prefix features a / (slash), prefix will be considered as a directory
+-A cmd_to_run : System command to run after each job (exec_postrun in fio)
+-B cmd_to_run : System command to run before each job (exec_prerun in fio)
Example:
Example:
-$PROG -d
sdb,sdc,sdd,
sde -a -b 4k,128k,1m -r 100 -a -x dellr720-day2/
+$PROG -d
/dev/sdb,/dev/sdc,/dev/sdd,/dev/
sde -a -b 4k,128k,1m -r 100 -a -x dellr720-day2/
Will generate an fio file that will run
- a sequential bench on /dev/sdb /dev/sdc /dev/sdd /dev/sde for block size = 4k with write,randwrite,read,randread tests
Will generate an fio file that will run
- a sequential bench on /dev/sdb /dev/sdc /dev/sdd /dev/sde for block size = 4k with write,randwrite,read,randread tests
@@
-89,40
+93,55
@@
Estimated Time = 6000 seconds : 1 hour 40 minutes
EOF
}
EOF
}
-gen_template() {
-cat >$TEMPLATE << EOF
-[global]
-ioengine=libaio
-iodepth=$IODEPTH
-invalidate=1
-ramp_time=5
-EOF
+finish_template() {
+echo "iodepth=$IODEPTH" >> $TEMPLATE
if [ "$RUNTIME" != "0" ]; then
if [ "$RUNTIME" != "0" ]; then
-cat >>$TEMPLATE << EOF
-runtime=$RUNTIME
-time_based
-EOF
+ echo "runtime=$RUNTIME" >> $TEMPLATE
+ echo "time_based" >> $TEMPLATE
fi
if [ "$CACHED_IO" = "FALSE" ]; then
fi
if [ "$CACHED_IO" = "FALSE" ]; then
-cat >>$TEMPLATE << EOF
-direct=1
-EOF
+ echo "direct=1" >> $TEMPLATE
fi
fi
+}
+
+
+diskname_to_printable() {
+COUNT=0
+for disk in $(echo $@ | tr "," " "); do
+ R=$(basename $disk | sed 's|/|_|g')
+ COUNT=$(($COUNT + 1))
+ if [ $COUNT -eq 1 ]; then
+ P="$R"
+ else
+ P="$P,$R"
+ fi
+done
+echo $P
+}
+gen_template() {
+cat >$TEMPLATE << EOF
+[global]
+ioengine=libaio
+invalidate=1
+ramp_time=5
+EOF
}
gen_seq_suite() {
TYPE=$1
}
gen_seq_suite() {
TYPE=$1
+disk=$2
+PRINTABLE_DISK=$(diskname_to_printable $disk)
cat >> $OUTFILE << EOF
cat >> $OUTFILE << EOF
-[$TYPE-$
disk
-$BLK_SIZE-seq]
+[$TYPE-$
PRINTABLE_DISK
-$BLK_SIZE-seq]
stonewall
bs=$BLK_SIZE
stonewall
bs=$BLK_SIZE
-filename=
/dev/
$disk
+filename=$disk
rw=$TYPE
rw=$TYPE
-write_bw_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
disk
-$TYPE-seq.results
-write_iops_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
disk
-$TYPE-seq.results
+write_bw_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
PRINTABLE_DISK
-$TYPE-seq.results
+write_iops_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
PRINTABLE_DISK
-$TYPE-seq.results
EOF
ETA=$(($ETA + $RUNTIME))
}
EOF
ETA=$(($ETA + $RUNTIME))
}
@@
-130,7
+149,7
@@
ETA=$(($ETA + $RUNTIME))
gen_seq_fio() {
for disk in $(echo $DISKS | tr "," " "); do
for mode in $(echo $MODES | tr "," " "); do
gen_seq_fio() {
for disk in $(echo $DISKS | tr "," " "); do
for mode in $(echo $MODES | tr "," " "); do
- gen_seq_suite "$mode"
+ gen_seq_suite "$mode"
"$disk"
done
done
}
done
done
}
@@
-141,8
+160,9
@@
TYPE=$1
NEED_WALL=$2
D=0
for disk in $(echo $DISKS | tr "," " "); do
NEED_WALL=$2
D=0
for disk in $(echo $DISKS | tr "," " "); do
+ PRINTABLE_DISK=$(diskname_to_printable $disk)
cat >> $OUTFILE << EOF
cat >> $OUTFILE << EOF
-[$TYPE-$
disk
-$BLK_SIZE-para]
+[$TYPE-$
PRINTABLE_DISK
-$BLK_SIZE-para]
bs=$BLK_SIZE
EOF
bs=$BLK_SIZE
EOF
@@
-152,10
+172,10
@@
if [ "$D" = 0 ]; then
fi
cat >> $OUTFILE << EOF
fi
cat >> $OUTFILE << EOF
-filename=
/dev/
$disk
+filename=$disk
rw=$TYPE
rw=$TYPE
-write_bw_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
disk
-$TYPE-para.results
-write_iops_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
disk
-$TYPE-para.results
+write_bw_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
PRINTABLE_DISK
-$TYPE-para.results
+write_iops_log=${PREFIX_FILENAME}$SHORT_HOSTNAME-$BLK_SIZE-$
PRINTABLE_DISK
-$TYPE-para.results
EOF
done
EOF
done
@@
-185,7
+205,7
@@
esac
}
parse_cmdline() {
}
parse_cmdline() {
-while getopts "hacpsd:b:r:m:x:
D
:" opt; do
+while getopts "hacpsd:b:r:m:x:
z:D:A:B
:" opt; do
case $opt in
h)
show_help
case $opt in
h)
show_help
@@
-228,6
+248,7
@@
while getopts "hacpsd:b:r:m:x:D:" opt; do
;;
d)
DISKS=$OPTARG
;;
d)
DISKS=$OPTARG
+ PRINTABLE_DISKS=$(diskname_to_printable "$DISKS")
;;
D)
IODEPTH=$OPTARG
;;
D)
IODEPTH=$OPTARG
@@
-235,6
+256,16
@@
while getopts "hacpsd:b:r:m:x:D:" opt; do
a)
SEQ=2
;;
a)
SEQ=2
;;
+ B)
+ echo "exec_prerun=$OPTARG" >> $TEMPLATE
+ ;;
+ A)
+ echo "exec_postrun=$OPTARG" >> $TEMPLATE
+ ;;
+ z)
+ FSIZE=$OPTARG
+ echo "size=$FSIZE" >> $TEMPLATE
+ ;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
@@
-248,14
+279,14
@@
fi
SHORT_HOSTNAME=$(hostname -s)
case $SEQ in
2)
SHORT_HOSTNAME=$(hostname -s)
case $SEQ in
2)
- OUTFILE=${PREFIX}$SHORT_HOSTNAME-$BLOCK_SIZE-all-$MODES-$DISKS.fio
+ OUTFILE=${PREFIX}$SHORT_HOSTNAME-$BLOCK_SIZE-all-$MODES-$
PRINTABLE_
DISKS.fio
;;
1)
;;
1)
- OUTFILE=${PREFIX}$SHORT_HOSTNAME-$BLOCK_SIZE-sequential-$MODES-$DISKS.fio
+ OUTFILE=${PREFIX}$SHORT_HOSTNAME-$BLOCK_SIZE-sequential-$MODES-$
PRINTABLE_
DISKS.fio
;;
0)
;;
0)
- OUTFILE=${PREFIX}$SHORT_HOSTNAME-$BLOCK_SIZE-parallel-$MODES-$DISKS.fio
+ OUTFILE=${PREFIX}$SHORT_HOSTNAME-$BLOCK_SIZE-parallel-$MODES-$
PRINTABLE_
DISKS.fio
;;
esac
;;
esac
@@
-303,9
+334,10
@@
done
########## MAIN
########## MAIN
-parse_cmdline $@
-check_mode_order
gen_template
gen_template
+parse_cmdline "$@"
+finish_template
+check_mode_order
echo "Generating $OUTFILE"
cp -f $TEMPLATE $OUTFILE
echo "Generating $OUTFILE"
cp -f $TEMPLATE $OUTFILE