ZFS Benchmark - 環境構成編
Posted on 2011/11/04(Fri) 21:26 in technical
OpenIndiana 151a/FreeBSD 9.0-RC1で動かすZFSストレージの性能変動をfioを用いて測定する。
- http://openindiana.org/
- http://wiki.openindiana.org/oi/OpenIndiana+Wiki+Home
- http://www.freebsd.org/
- http://www.freebsd.org/ja/
- http://freshmeat.net/projects/fio
まずは、環境構成の整理と設定について簡単にまとめる。
この構成は基本的に両OSで同じものを使用する。
OS
- OpenIndiana 151a
- FreeBSD 9.0-RC1
設定
- OpenIndiana : インストール後IPとSSH設定をした程度
- FreeBSD 9.0-RC1 : インストール後IPとSSH設定をした程度(/boot/loader.confにはノータッチ)
機器構成
- GT110b(G1101, 12G(4G*3) ECC Mem)
- IBM ServeRAID-BR10i
- HTS545050B9A300(OpenIndiana 151a)
- HTS547550A9E384(FreeBSD 9.0-RC1)
測定HDD
- Hitachi HTS72505 * 8
fio測定スクリプト(両OSで完全に同一のものを使用。ただし非同期I/O、32スレッドI/OはFreeBSDではhungした)
- 512KiBのSequential Write/Read
- 512KiBのRandom Write/Read
- 4KiBのRandom Write/Read
- 4KiBのRandom Async Write/Read(OpenIndianaのみ)
- 4KiBの32 multiple Random Write/Read(OpenIndianaのみ)
#!/bin/sh
# ------ General parameter define. ------
FIO=/root/fio-1.58/fio
NAME=zfs-bench
OUTPUT=$1
SIZE=18G
BS=512k
JOBS=1
RW=randwrite
# ------ single I/O ------
$FIO -filename=$OUTPUT -rw=write -bs=$BS -size=$SIZE -numjobs=$JOBS -startdelay=5 -name=$NAME
$FIO -filename=$OUTPUT -rw=read -bs=$BS -size=$SIZE -numjobs=$JOBS -startdelay=5 -name=$NAME
# ------ Random 512K Read,Write. ------
$FIO -filename=$OUTPUT -rw=randwrite -bs=$BS -size=$SIZE -numjobs=$JOBS -startdelay=5 -name=$NAME
$FIO -filename=$OUTPUT -rw=randread -bs=$BS -size=$SIZE -numjobs=$JOBS -startdelay=5 -name=$NAME
# ------ Random 4KiB Read,Write. ------
BS=4096
RUNTIME=600
$FIO -filename=$OUTPUT -rw=randwrite -bs=$BS -size=$SIZE -numjobs=$JOBS -runtime=$RUNTIME -startdelay=5 -name=$NAME
$FIO -filename=$OUTPUT -rw=randread -bs=$BS -size=$SIZE -numjobs=$JOBS -runtime=$RUNTIME -startdelay=5 -name=$NAME
# ------ Random 4KiB Read,Write. ------
IO=posixaio
QUEUE=32
$FIO -filename=$OUTPUT -rw=randwrite -ioengine=$IO -iodepth=$QUEUE -bs=$BS -size=$SIZE -numjobs=$JOBS -runtime=$RUNTIME -startdelay=5 -name=$NAME
$FIO -filename=$OUTPUT -rw=randread -ioengine=$IO -iodepth=$QUEUE -bs=$BS -size=$SIZE -numjobs=$JOBS -runtime=$RUNTIME -startdelay=5 -unlink=1 -name=$NAME
# ------ 32 multiple I/O ------
$FIO -filename=$OUTPUT -rw=write -bs=$BS -size=589824k -numjobs=32 -runtime=$RUNTIME -startdelay=5 -name=$NAME
$FIO -filename=$OUTPUT -rw=read -bs=$BS -size=589824k -numjobs=32 -runtime=$RUNTIME -startdelay=5 -name=$NAME
zpool生成とfio測定スクリプトの実行スクリプト
※多少ディスク名やシステム情報取得の差分はあるが、基本的にはこれ。iostatとvmstatの結果については取得してるけど、単なる参考でほとんど見てませんごめんなさい。
#!/bin/sh
init_log() {
date >> zfs-bench_$1.txt
uname -a >> zfs-bench_$1.txt
dmesg >> zfs-bench_$1.txt
camcontrol devlist >> zfs-bench_$1.txt
sysctl -a grep zfs >> zfs-bench_$1.txt
zfs upgrade -v >> zfs-bench_$1.txt
zpool upgrade -v >> zfs-bench_$1.txt
}
zpool_log() {
df -h >> zfs-bench_$1.txt
zpool status $1 >> zfs-bench_$1.txt
zpool list >> zfs-bench_$1.txt
zpool get all $1 >> zfs-bench_$1.txt
zfs list -o space >> zfs-bench_$1.txt
zfs get all $1 >> zfs-bench_$1.txt
}
bench() {
init_log $1
#-----------------------------------------
# 1.Create zpool
#-----------------------------------------
zpool create $@
zpool_log $1
iostat -x 5 > zfs-bench_$1_iostat.txt &
vmstat 5 > zfs-bench_$1_vmstat.txt &
#-----------------------------------------
# 2.fio start
#-----------------------------------------
echo "goto bench"
/root/benchmark/fio/zfs-bench.sh /$1/fio >> zfs-bench_$1.txt
#-----------------------------------------
# 3.End
#-----------------------------------------
sleep 10
zpool_log $1
sleep 10
zpool destroy $1
pkill iostat
pkill vmstat
init_log $1
}
bench fio-single-1 da0
bench fio-single-2 da1
bench fio-single-3 da2
bench fio-single-4 da3
bench fio-single-5 da4
bench fio-single-6 da5
bench fio-single-7 da6
bench fio-single-8 da7
bench fio-raid0-2 da0 da1
bench fio-raid0-3 da0 da1 da2
bench fio-raid0-4 da0 da1 da2 da3
bench fio-raid0-5 da0 da1 da2 da3 da4
bench fio-raid0-6 da0 da1 da2 da3 da4 da5
bench fio-raid0-7 da0 da1 da2 da3 da4 da5 da6
bench fio-raid0-8 da0 da1 da2 da3 da4 da5 da6 da7
bench fio-raid1-2 mirror da0 da1
bench fio-raid1-3 mirror da0 da1 da2
bench fio-raid1-4 mirror da0 da1 da2 da3
bench fio-raid1-5 mirror da0 da1 da2 da3 da4
bench fio-raid1-6 mirror da0 da1 da2 da3 da4 da5
bench fio-raid1-7 mirror da0 da1 da2 da3 da4 da5 da6
bench fio-raid1-8 mirror da0 da1 da2 da3 da4 da5 da6 da7
bench fio-raidz-2 raidz da0 da1
bench fio-raidz-3 raidz da0 da1 da2
bench fio-raidz-4 raidz da0 da1 da2 da3
bench fio-raidz-5 raidz da0 da1 da2 da3 da4
bench fio-raidz-6 raidz da0 da1 da2 da3 da4 da5
bench fio-raidz-7 raidz da0 da1 da2 da3 da4 da5 da6
bench fio-raidz-8 raidz da0 da1 da2 da3 da4 da5 da6 da7
bench fio-raidz2-3 raidz2 da0 da1 da2
bench fio-raidz2-4 raidz2 da0 da1 da2 da3
bench fio-raidz2-5 raidz2 da0 da1 da2 da3 da4
bench fio-raidz2-6 raidz2 da0 da1 da2 da3 da4 da5
bench fio-raidz2-7 raidz2 da0 da1 da2 da3 da4 da5 da6
bench fio-raidz2-8 raidz2 da0 da1 da2 da3 da4 da5 da6 da7
bench fio-raidz3-4 raidz3 da0 da1 da2 da3
bench fio-raidz3-5 raidz3 da0 da1 da2 da3 da4
bench fio-raidz3-6 raidz3 da0 da1 da2 da3 da4 da5
bench fio-raidz3-7 raidz3 da0 da1 da2 da3 da4 da5 da6
bench fio-raidz3-8 raidz3 da0 da1 da2 da3 da4 da5 da6 da7
bench fio-raid10-2-2 mirror da0 da1 mirror da2 da3
bench fio-raid10-2-3 mirror da0 da1 mirror da2 da3 mirror da4 da5
bench fio-raid10-2-4 mirror da0 da1 mirror da2 da3 mirror da4 da5 mirror da6 da7
bench fio-raidz0-2-2 raidz da0 da1 raidz da2 da3
bench fio-raidz0-2-3 raidz da0 da1 raidz da2 da3 raidz da4 da5
bench fio-raidz0-2-4 raidz da0 da1 raidz da2 da3 raidz da4 da5 raidz da6 da7
bench fio-raidz0-3-2 raidz da0 da1 da2 raidz da3 da4 da5
bench fio-raidz0-4-2 raidz da0 da1 da2 da3 raidz da4 da5 da6 da7
bench fio-raidz20-3-2 raidz2 da0 da1 da2 raidz2 da3 da4 da5
bench fio-raidz20-4-2 raidz2 da0 da1 da2 da3 raidz2 da4 da5 da6 da7
bench fio-raidz30-4-2 raidz3 da0 da1 da2 da3 raidz3 da4 da5 da6 da7