FIOによるディスクパフォーマンス確認
HDDも以前と比較して選択肢が増えて、必要に応じてSATA,SAS,SSD,Fusion-IO等を選択し、
用件、コスト、パフォーマンス、可用性に応じて全体的なバランスからシステムを選択する必要がある。
ディスク、CPU、メモリー、ネットワークのパフォーマンスを必要に応じて確認する必要があるが、
今回はI/Oの確認の為にディスクベンチマークをFIOで行う方法の再確認。
fio
FIOの取得
[root@HOME001 tools]# wget http://brick.kernel.dk/snaps/fio-2.0.12.1.tar.bz2
--2012-12-30 15:57:22-- http://brick.kernel.dk/snaps/fio-2.0.12.1.tar.bz2
brick.kernel.dk をDNSに問いあわせています... 87.104.106.3
brick.kernel.dk|87.104.106.3|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 244365 (239K) [application/x-bzip]
`fio-2.0.12.1.tar.bz2' に保存中
100%[==============================================>] 244,365 209K/s 時間 1.1s
2012-12-30 15:57:25 (209 KB/s) - `fio-2.0.12.1.tar.bz2' へ保存完了 [244365/244365]
[root@HOME001 tools]#
FIOの展開
[root@HOME001 tools]# tar -jxf fio-2.0.12.1.tar.bz2
[root@HOME001 tools]# ls -l
合計 704
drwxrwxr-x. 11 root root 4096 12月 19 03:55 2012 fio-2.0.12.1
-rw-r--r--. 1 root root 244365 12月 19 03:56 2012 fio-2.0.12.1.tar.bz2
drwxrwxrwx. 6 mysql users 4096 12月 30 13:10 2012 htop-0.8.3
-rw-r--r--. 1 root root 428061 6月 23 23:05 2009 htop-0.8.3.tar.gz
drwxr-xr-x. 5 root root 4096 12月 29 07:21 2012 iotop-0.4.4
-rw-r--r--. 1 root root 30334 10月 31 06:01 2011 iotop-0.4.4.tar.gz
[root@HOME001 tools]#
必要なライブラリーを追加
[root@HOME001 fio-2.0.12.1]# yum install libaio-devel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package libaio-devel.i686 0:0.3.107-10.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================================
Package Arch Version Repository Size
========================================================================================================================================
Installing:
libaio-devel i686 0.3.107-10.el6 base 13 k
Transaction Summary
========================================================================================================================================
Install 1 Package(s)
Total download size: 13 k
Installed size: 19 k
Is this ok [y/N]: y
Downloading Packages:
libaio-devel-0.3.107-10.el6.i686.rpm | 13 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libaio-devel-0.3.107-10.el6.i686 1/1
Verifying : libaio-devel-0.3.107-10.el6.i686 1/1
Installed:
libaio-devel.i686 0:0.3.107-10.el6
Complete!
[root@HOME001 fio-2.0.12.1]#

MAKEとインストール
[root@HOME001 fio-2.0.12.1]# make
CC gettime.o
CC fio.o
CC ioengines.o
CC init.o
CC stat.o
CC log.o
CC time.o
CC filesetup.o
CC eta.o
CC verify.o
省略.......
CC engines/rdma.o
CC profiles/tiobench.o
CC engines/fusion-aw.o
CC engines/falloc.o
CC engines/e4defrag.o
CC fio
[root@HOME001 fio-2.0.12.1]#
[root@HOME001 fio-2.0.12.1]# make install
install -m 755 -d /usr/local/bin
install fio fio_generate_plots /usr/local/bin
install -m 755 -d /usr/local/man/man1
install -m 644 fio.1 /usr/local/man/man1
install -m 644 fio_generate_plots.1 /usr/local/man/man1
[root@HOME001 fio-2.0.12.1]#

実際にFIOでI/Oテストを行ってみる。
fio –directory=/tmp/ –direct=1 –rw=write –bs=4k –size=512M –numjobs=2 –runtime=100 –group_reporting –name=seq-write
[root@HOME001 fio-2.0.12.1]# fio --directory=/tmp/ --direct=1 --rw=write --bs=4k --size=512M --numjobs=2 --runtime=100 --group_reporting --name=seq-write
seq-write: (g=0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=sync, iodepth=1
seq-write: (g=0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=sync, iodepth=1
fio-2.0.12.1
Starting 2 processes
seq-write: Laying out IO file(s) (1 file(s) / 512MB)
seq-write: Laying out IO file(s) (1 file(s) / 512MB)
Jobs: 2 (f=2): [WW] [100.0% done] [0K/11584K/0K /s] [0 /2896 /0 iops] [eta 00m:00s]
seq-write: (groupid=0, jobs=2): err= 0: pid=10250: Sun Dec 30 16:16:04 2012
write: io=1024.0MB, bw=11369KB/s, iops=2842 , runt= 92231msec
clat (usec): min=223 , max=202116 , avg=693.03, stdev=5958.70
lat (usec): min=225 , max=202118 , avg=695.77, stdev=5958.71
clat percentiles (usec):
| 1.00th=[ 266], 5.00th=[ 274], 10.00th=[ 294], 20.00th=[ 306],
| 30.00th=[ 310], 40.00th=[ 314], 50.00th=[ 318], 60.00th=[ 326],
| 70.00th=[ 350], 80.00th=[ 358], 90.00th=[ 362], 95.00th=[ 378],
| 99.00th=[ 892], 99.50th=[ 1112], 99.90th=[99840], 99.95th=[100864],
| 99.99th=[100864]
bw (KB/s) : min= 3760, max= 7072, per=49.97%, avg=5680.87, stdev=554.02
lat (usec) : 250=0.12%, 500=96.95%, 750=1.30%, 1000=0.84%
lat (msec) : 2=0.39%, 4=0.02%, 10=0.01%, 20=0.01%, 50=0.01%
lat (msec) : 100=0.04%, 250=0.32%
cpu : usr=1.09%, sys=14.74%, ctx=267814, majf=0, minf=0
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=0/d=262144, short=r=0/w=0/d=0
Run status group 0 (all jobs):
WRITE: io=1024.0MB, aggrb=11369KB/s, minb=11369KB/s, maxb=11369KB/s, mint=92231msec, maxt=92231msec
Disk stats (read/write):
dm-0: ios=0/262084, merge=0/0, ticks=0/243053, in_queue=243054, util=100.00%, aggrios=0/262205, aggrmerge=0/80, aggrticks=0/197656, aggrin_queue=197235, aggrutil=99.97%
sda: ios=0/262205, merge=0/80, ticks=0/197656, in_queue=197235, util=99.97%
[root@HOME001 fio-2.0.12.1]#
fioでベンチマーク中にiotopでパフォーマンス確認

ファイルが残っているのでマニュアルで削除する。
[root@HOME001 fio-2.0.12.1]# ls -lh /tmp/
合計 1.1G
srwxrwxrwx. 1 mysql mysql 0 12月 30 15:44 2012 mysql.sock
-rw-r--r--. 1 root root 512M 12月 30 16:16 2012 seq-write.1.0
-rw-r--r--. 1 root root 512M 12月 30 16:16 2012 seq-write.2.0
-rw-------. 1 root root 254 12月 30 16:02 2012 yum_save_tx-2012-12-30-16-02d9sxpX.yumtx
[root@HOME001 fio-2.0.12.1]#
その他:参考値簡易測定
何もインストールしないで通常のDDコマンドでも簡易的な確認可能
[root@HOME001 tmp]# time dd if=/dev/zero of=tempfile_1M bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 35.9152 s, 29.9 MB/s
real 0m36.251s
user 0m0.006s
sys 0m2.802s
[root@HOME001 tmp]# time dd if=/dev/zero of=tempfile_1024M bs=1024M count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 38.0579 s, 28.2 MB/s
real 0m38.178s
user 0m0.000s
sys 0m3.910s
[root@HOME001 tmp]# ls -lh tempfile_*
-rw-r--r--. 1 root root 1.0G 12月 30 16:57 2012 tempfile_1024M
-rw-r--r--. 1 root root 1.0G 12月 30 16:57 2012 tempfile_1M
[root@HOME001 tmp]#

参考
fioを用いたディスクIOのパフォーマンス測定
クラウドを加速させるSSD技術(前編)
書き込み速度ベンチマーク
容量指定のダミーファイルを作成したい