Help us understand the problem. What is going on with this article?

fioによるEBSボリュームの性能測定(RHEL6.5編)

More than 5 years have passed since last update.

残念ながらRHEL6.5の場合は、標準のyumレポジトリではインストールできないので、以下に手順を残しておきます。

epelレポジトリを使ってyum経由でインストールする

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release-6-8.noarch.rpm

これでyumでインストールすればOKです。

yum install fio

epelレポジトリを有効にしないでインストールする方法

直接rpmを取得すれば良いので、以下のコマンドでインストールされます。

rpm -Uvh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/fio-2.0.13-1.el6.x86_64.rpm

性能測定の方法

はじめに適当なIOPSのボリュームを作成し、インスタンスにAttachします(ここでは3000iopsのgp2のボリュームを作成しました)。
その後以下のようにファイルシステムを作成し適当な場所にマウントします。

mkfs.ext4 /dev/xvdf
mount /dev/xvdf /mnt

測定を行うには以下のようなコマンドを実行します。複数の例を載せているので好きなものを試してください。なおEBSの場合はランダムアクセスに最適化されています。

# シーケンシャルリード性能測定。ブロックサイズ16K
sudo fio --ioengine=libaio --iodepth=16 --direct=1 --size=100m --numjobs=16 --group_reporting --directory=/mnt --bs=16k --output=/home/ec2-user/result1.txt --name=sequential-read --rw=read

# シーケンシャルライト性能測定。ブロックサイズ16K
sudo fio --ioengine=libaio --iodepth=16 --direct=1 --size=100m --numjobs=16 --group_reporting --directory=/mnt --bs=16k --output=/home/ec2-user/result2.txt --name=sequential-write --rw=write

# ランダムI/O性能測定(リード比率70%)。ブロックサイズ16K
sudo fio --ioengine=libaio --iodepth=16 --direct=1 --size=100m --numjobs=16 --group_reporting --directory=/mnt --bs=16k --output=/home/ec2-user/result3.txt --name=random-r70w30 --rw=randrw --rwmixread=70

# ランダムI/O性能測定(リード比率30%)。ブロックサイズ16K
sudo fio --ioengine=libaio --iodepth=16 --direct=1 --size=100m --numjobs=16 --group_reporting --directory=/mnt --bs=16k --output=/home/ec2-user/result4.txt --name=random-r30w70 --rw=randrw --rwmixread=30

# ランダムI/O性能測定(リード比率0%)。ブロックサイズ16K
sudo fio --ioengine=libaio --iodepth=16 --direct=1 --size=100m --numjobs=16 --group_reporting --directory=/mnt --bs=16k --output=/home/ec2-user/result5.txt --name=random-r0w100 --rw=randrw --rwmixread=0

実行結果は上記の例ではファイルに出力している。ファイルを開くと以下のような感じになっています。ここで、readのiopsが934、writeのiopsが2197で合計すると、3131iopsとなり、プロビジョンした3000iopsとほぼ同等の値が出ていることが分かります。

random-r30w70: (groupid=0, jobs=16): err= 0: pid=1807: Sat Dec 20 00:40:23 2014
  read : io=488832KB, bw=14954KB/s, iops=934 , runt= 32689msec
    slat (usec): min=2 , max=102759 , avg=2699.31, stdev=12009.31
    clat (usec): min=102 , max=493087 , avg=75671.23, stdev=55478.45
     lat (usec): min=851 , max=493092 , avg=78370.75, stdev=56711.53
    clat percentiles (msec):
     |  1.00th=[   12],  5.00th=[   15], 10.00th=[   16], 20.00th=[   19],
     | 30.00th=[   43], 40.00th=[   60], 50.00th=[   71], 60.00th=[   81],
     | 70.00th=[   93], 80.00th=[  112], 90.00th=[  151], 95.00th=[  178],
     | 99.00th=[  255], 99.50th=[  306], 99.90th=[  379], 99.95th=[  424],
     | 99.99th=[  482]
    bw (KB/s)  : min=  179, max= 1912, per=6.27%, avg=937.88, stdev=276.78
  write: io=1122.4MB, bw=35157KB/s, iops=2197 , runt= 32689msec
    slat (usec): min=4 , max=103279 , avg=2593.33, stdev=11752.52
    clat (msec): min=1 , max=493 , avg=79.32, stdev=55.37
     lat (msec): min=1 , max=507 , avg=81.91, stdev=56.66
    clat percentiles (msec):
     |  1.00th=[   12],  5.00th=[   15], 10.00th=[   17], 20.00th=[   20],
     | 30.00th=[   51], 40.00th=[   65], 50.00th=[   74], 60.00th=[   83],
     | 70.00th=[   95], 80.00th=[  114], 90.00th=[  155], 95.00th=[  180],
     | 99.00th=[  255], 99.50th=[  310], 99.90th=[  396], 99.95th=[  429],
     | 99.99th=[  482]
    bw (KB/s)  : min=  328, max= 4175, per=6.27%, avg=2204.55, stdev=571.14
    lat (usec) : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
    lat (msec) : 2=0.01%, 4=0.01%, 10=0.39%, 20=22.83%, 50=7.40%
    lat (msec) : 100=42.79%, 250=25.47%, 500=1.10%
  cpu          : usr=0.13%, sys=0.17%, ctx=30414, majf=0, minf=388
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=99.8%, 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.1%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=30552/w=71827/d=0, short=r=0/w=0/d=0

注意事項

初回の性能測定は、EBSがウォーミングされていない可能性があるので、何度か実行してからの結果を採用した方が良いです。

ryuzee
Agile Coach, CTO at Attractor Inc. Scrum Alliance Certified Team Coach(CTC) CSP CSM CSPO / 書籍→レガシーコードからの脱却/SCRUM BOOT CAMP/カンバン仕事術/Effective DevOps他。ご相談はお気軽に
https://www.ryuzee.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした