projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.dk/fio into steady-state
[fio.git]
/
tools
/
genfio
diff --git
a/tools/genfio
b/tools/genfio
index 49cbd5032b7a51773fc1ff8ed65953cd65fb54dc..68004520a164cd0db7f22c70ca412550888a4f0a 100755
(executable)
--- a/
tools/genfio
+++ b/
tools/genfio
@@
-1,4
+1,4
@@
-#!/
bin/
bash
+#!/
usr/bin/env
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>
@@
-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,18
+51,19
@@
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
@@
-70,7
+72,7
@@
show_help() {
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
@@
-92,24
+94,33
@@
EOF
}
finish_template() {
}
finish_template() {
-cat >>$TEMPLATE <<EOF
-iodepth=$IODEPTH
-EOF
+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]
gen_template() {
cat >$TEMPLATE << EOF
[global]
@@
-121,14
+132,16
@@
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))
}
@@
-136,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
}
@@
-147,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
@@
-158,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
@@
-191,7
+205,7
@@
esac
}
parse_cmdline() {
}
parse_cmdline() {
-while getopts "hacpsd:b:r:m:x:D:A:B:" 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
@@
-234,6
+248,7
@@
while getopts "hacpsd:b:r:m:x:D:A:B:" opt; do
;;
d)
DISKS=$OPTARG
;;
d)
DISKS=$OPTARG
+ PRINTABLE_DISKS=$(diskname_to_printable "$DISKS")
;;
D)
IODEPTH=$OPTARG
;;
D)
IODEPTH=$OPTARG
@@
-247,6
+262,10
@@
while getopts "hacpsd:b:r:m:x:D:A:B:" opt; do
A)
echo "exec_postrun=$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
;;
@@
-260,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
@@
-316,7
+335,7
@@
done
########## MAIN
gen_template
########## MAIN
gen_template
-parse_cmdline
$@
+parse_cmdline
"$@"
finish_template
check_mode_order
finish_template
check_mode_order