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]#
ファイルが残っているのでマニュアルで削除する。
[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技術(前編)
書き込み速度ベンチマーク
容量指定のダミーファイルを作成したい