Filesystem性能比較 4
各種ファイルシステムにおけるfilebenchの値を比較
概要
BtrFS, Ext2, Ext4, JFS, XFSにおけるfilebech web serverの性能を測定しました.
BtfFSが遅いです.
filebench
ファイルアクセス性能のベンチマークです.詳細はこちら.
実験
各ファイルシステムで web server.f を 600秒で2回実行.
/dev/sdb と /dev/sdc で実行
実験設定詳細は本記事の末尾
環境
実験結果
btrfsのみ遅いです.
データサイズは非常に小さく,ほぼ全てメモリで処理されているはずです.
実験詳細
webserver.f
#
(略)
#
set $dir=/tmp
set $nfiles=1000
set $meandirwidth=20
set $meanfilesize=16k
set $nthreads=100
set $iosize=1m
set $meanappendsize=16k
define fileset name=bigfileset,path=$dir,size=$meanfilesize,entries=$nfiles,dirwidth=$meandirwidth,prealloc=100,reuse
define fileset name=logfiles,path=$dir,size=$meanfilesize,entries=1,dirwidth=$meandirwidth,prealloc,reuse
define process name=filereader,instances=1
{
thread name=filereaderthread,memsize=10m,instances=$nthreads
{
flowop openfile name=openfile1,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile1,fd=1,iosize=$iosize
flowop closefile name=closefile1,fd=1
flowop openfile name=openfile2,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile2,fd=1,iosize=$iosize
flowop closefile name=closefile2,fd=1
flowop openfile name=openfile3,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile3,fd=1,iosize=$iosize
flowop closefile name=closefile3,fd=1
flowop openfile name=openfile4,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile4,fd=1,iosize=$iosize
flowop closefile name=closefile4,fd=1
flowop openfile name=openfile5,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile5,fd=1,iosize=$iosize
flowop closefile name=closefile5,fd=1
flowop openfile name=openfile6,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile6,fd=1,iosize=$iosize
flowop closefile name=closefile6,fd=1
flowop openfile name=openfile7,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile7,fd=1,iosize=$iosize
flowop closefile name=closefile7,fd=1
flowop openfile name=openfile8,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile8,fd=1,iosize=$iosize
flowop closefile name=closefile8,fd=1
flowop openfile name=openfile9,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile9,fd=1,iosize=$iosize
flowop closefile name=closefile9,fd=1
flowop openfile name=openfile10,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile10,fd=1,iosize=$iosize
flowop closefile name=closefile10,fd=1
flowop appendfilerand name=appendlog,filesetname=logfiles,iosize=$meanappendsize,fd=2
}
}
echo "Web-server Version 3.0 personality successfully loaded"
(略)
usage " run runtime (e.g. run 60)"
set $dir=/mnt
run 600
おまけ (連続実験 shell script)
for fs in btrfs ext2 ext4 jfs xfs
do
echo ${fs}
for dev in sdb sdc
do
if [ ${fs} = "xfs" -o ${fs} = "btrfs" ]
then
mkfs.${fs} -f /dev/${dev}
else
echo y | mkfs.${fs} /dev/${dev}
fi
mount /dev/${dev} /mnt
mount | grep ${dev} > result.${fs}.${dev}.txt
for i in `seq 0 1`
do
echo ${fs}.${dev}.${i}
/opt/filebench-1.4.9.1/bin/filebench -f webserver.f > result.${fs}.${dev}.${i}.txt
done
umount /mnt/
done
done
おまけ (集計 shell script)
grep Summary result.* | sed 's/result\./result. /' | sed 's/\.sd/ .sd/' | sed -r 's/.sd(.)/. sd\1 /' > all.txt