Linux Tips – HDDベンチマーク手順+性能測定結果一覧(hdparm,dd,bonnie++)

120px-Crystal_Clear_app_harddrive

Linux Tips – HDDベンチマーク手順+性能測定結果一覧(hdparm,dd,bonnie++)システムのパフォーマンスが思うように上がらない場合、ハードディスクのIO性能がボトルネックになっているケースが多く見られます。

システムの環境構築が完了した後には、ハードディスクのIO性能を必ず測定しておきましょう。ここで紹介するHDDベンチマークを実行して、測定結果の妥当性を評価することによって、ほとんどのケースでディスクIO性能に起因する性能問題を未然に検知することが可能です。

ハードディスクのIO性能を左右する要素

システムのパフォーマンスが思うように上がらない場合、ハードディスクのIO性能がボトルネックになっているケースが多く見られます。

以下に主要な項目を挙げるように、ハードディスクのIO性能は様々なシステム構成要素やその設定によって左右されます。システムのインフラ基盤で性能問題が発生することを未然に防ぐためには、サーバ環境・ストレージ環境の設計段階からこれらの項目を計画、確認しておきたいところです。

  • ハードウェアRAID構成
  • ソフトウェアRAID構成
  • HDD単体の基礎性能 (スピンドル回転数、シーク時間等)
  • パーティションのHDD上の位置 (内周部/外周部)
  • チップセットの性能
  • RAIDコントローラー、SCSI/IDEアダプターの性能
  • BIOS設定
  • Linuxカーネル
  • ドライバーのバージョン
  • ファームウェアのバージョン
  • ファイルシステム (参考:Linuxファイルシステムベンチマーク 第1回 , 第2回
  • I/Oスケジューラ
  • NFS設定 (NFSマウント領域の場合)

HDDベンチマーク手順 – 初級編

システムの環境構築が完了した後には、ハードディスクのIO性能を必ず測定しておきましょう。ここで紹介するHDDベンチマークを実行して、測定結果の妥当性を評価することによって、ほとんどのケースでディスクIO性能に起因する性能問題を未然に検知することが可能です。

性能測定やベンチマークと聞くと、難しそうなイメージを持たれるかも知れませんが、実はそれほど難しい手順が必要な訳ではありません。次のような1行のOSコマンド+bashを用いることで、シーケンシャルアクセスの(連続したディスク領域にアクセスする時の)read性能・write性能を簡単に測定することができます。
 

read性能の簡易測定

hdparmコマンドに「-t」オプションを付けて実行し、ハードディスクのread性能を測定します。
/dev/sda2 の部分は、測定対象のパーティションによって適宜変更して下さい。

# hdparm -t /dev/sda2

出力結果の中で「**.** MB/sec」がread性能を表します。
 

次のように実行すると、測定の毎に10秒間の停止を入れながら計12回実行することができます。

# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12];do sleep 10;echo $'\n\n' $i;hdparm -t /dev/sda2;done

出力結果の中でread性能を表す「**.** MB/sec」を確認して平均値を計算して下さい。最大・最小の結果、それぞれ1回分を除いた計10回分を対象にして平均値を計算すると適切な測定結果が得られます。
 

write性能の簡易測定

ddコマンドで1GBのファイルを作成して、ハードディスクのwrite性能を測定します。
/tmp/hdparm_write.tmp の部分は、測定対象のパーティションによって適宜変更して下さい。

# time dd if=/dev/zero of=/tmp/hdparm_write.tmp ibs=1M obs=1M count=1024

出力結果の中で「real    * m **.*** s」が1GBのファイル作成に掛かった時間を表します。最近のカーネルに含まれるddでは出力結果に「MB/s」が表示されるので、この値を確認しても良いでしょう。
 

次のように実行すると、測定の毎に10秒間の停止を入れながら計12回実行することができます。
実際に合計12GBのファイルを作成するので、パーティションの空き容量には十分ご注意下さい。

# for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12];do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/tmp/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done

出力結果の中でwrite時間を表す「real    * m **.*** s」を確認して1GBのファイル作成に掛かった平均時間を計算して下さい。最大・最小の結果、それぞれ1回分を除いた計10回分を対象にして平均値を計算すると適切な測定結果が得られます。

HDDベンチマーク手順 – 中級編

bonnie++ によるread/write性能・ランダムアクセス性能の測定

IO性能の測定に専用のハードディスクベンチマークツールを用いる方法もあります。例えば、「bonnie++」というOSSのディスクベンチマークを用いると、次のように簡単なコマンドでシーケンシャルアクセスのread/write性能やランダムアクセス性能の測定を一度に行うことができます。

/tmp の部分は、測定対象のパーティションによって適宜変更して下さい。

$ ./bonnie++ -d /tmp

bonnie++の詳細な使用方法については 「bonnie++の使用方法」 のページで紹介しています。bonnie++を利用される時は、ぜひこちらのページも参考にして下さい。

HDDベンチマーク手順 – 上級編

ORION による負荷特性を指定した性能測定

Oracle社が提供するディスクベンチマークツール「ORION」を用いると、測定対象のファイル容量やread/writeの割合等、詳細な条件を指定してIO性能を測定することができます。

次の実行例では、writeの割合が20%の負荷に対して「最高 78.12 MB/sec」「最高 204 IOPS」「最短 5.02 msec」のディスクIO性能を発揮できることが分かります。

$ $ ./orion_linux_x86-64 -run advanced -testname orion-test -write 20
Maximum Large MBPS=78.12 @ Small=0 and Large=17
Maximum Small IOPS=204 @ Small=10 and Large=0
Minimum Small Latency=5.02 @ Small=1 and Large=0

ORIONは無償で利用できるので、SSDの性能評価等にお役立て下さい。ORIONの詳細な使用方法については 「Oracle ORIONの使用方法」 のページで紹介しています。ORIONを利用される時は、ぜひこちらのページも参考にして下さい。

性能測定結果一覧

実環境での測定結果を一覧にまとめました。測定値の妥当性を確認する際、参考にして頂ければと思います。なお、記載値はIO性能を保障するものではありません。あくまで参考値としてご覧下さい。

  • 他処理が実行されないサーバ環境構築後の無風時に測定
  • ファイルシステムはext3
  • 上記の簡易測定の測定結果は10秒間隔で12回実行、最大・最小の結果、それぞれ1回分を除く10回の平均値を「MB/sec」値で記載
  • bonnie++を用いた測定結果は5回実行、Sequential Input(read)Block、Sequential Output(write)Blockの最大値を「M/sec」値で記載、Random Seeks(seek)の最大値を「/sec」値で記載
  • 小数点以下は切り捨て
H/WHDD
SSD
I/FH/W
RAID
OS
kernel
簡易測定bonnie++
readwritereadwriteseek
OptiPlex
GX115
40GB 7.2K * 1
(6L040J2)
Ultra ATA/100noRedHat 8.0
2.4.18-14
35335137180
CentOS 3.6
2.4.21-37.EL
40303939191
Fedora Core 4
2.6.11-1.1369
[ SE Linux /
non SE Linux ]
35193220177
39223222181
OptiPlex
GX240
40GB 7.2K * 1
(6L040J2)
Ultra ATA/100noRedHat 8.0
2.4.18-14
35335539193
CentOS 3.6
2.4.21-37.EL
40333841195
Fedora Core 4
2.6.11-1.1369
[ SE Linux /
non SE Linux ]
35193224183
39243925186
ML350 G39GB 10K * 4Ultra 160 SCSI0CentOS 3.6
2.4.21-37.ELsmp
52435159619
9GB 10K * 6052575272681
9GB 10K * 2138263127422
9GB 10K * 4545114513484
9GB 10K * 6537123515613
9GB 10K * 40CentOS 4.4
2.6.9-42.ELsmp
628362105646
ML110 G4160GB 7.2K * 1
Cache : Disable
SATA
(Serial ATA)
noCentOS 3.6
2.4.21-37.ELsmp
7410737196
160GB 7.2K * 1no741007269220
160GB 7.2K * 20147127142116343
160GB 7.2K * 2173967370416
ProLiant
MicroServer
Intel X25-M
80GB * 1
SATA 2
(3.0 Gb/s)
noCentOS 6.0
2.6.32-71.el6
.x86_64
1721032697311669
Intel SSD 320
120GB * 1
no1801802901389238
DL360 G436GB 15K * 2Ultra 320 SCSI0Fedora Core 4
2.6.11-1.1369
_FC4smp
non SE Linux
73126158120860
190638861935
Ultra 320 SCSI
128MB BBWC
0767115894841
191468856886
DL380 G4146GB 15K * 2Ultra 320 SCSI1RedHat AS 3
2.4.21-37.ELsmp
88787979997
DL380 G4
- MSA 30
146GB 15K * 4Ultra 320 SCSI08719979223958
146GB 15K * 608717588226 1243
146GB 15K * 2189908382965
146GB 15K * 41+08813590126 1285
146GB 15K * 61+07013782130 1377
146GB 15K * 4581475245 1026
146GB 15K * 6585525148 1183
ThinkPad
X40
20GB 4.2K * 1
(DK14FA-20)
Ultra ATA/100noCentOS 3.6
2.4.21-37.EL
1312111485
xSeries 30580GB 7.2K * 2Ultra ATA/1001RedHat AS 2.1
2.4.9-e.24
46444543208
xSeries 33536GB 15K * 1Ultra 320 SCSInoRedHat WS 2.1
2.4.9-e.12smp
[ ver 2.02.01 /
ver 2.05.08 ]
7211989395
72609968461
xSeries 33536GB 10K * 2Ultra 320 SCSI1Fedora Core 3
2.6.9-1.667smp
non SE Linux
63485244477
36GB 10K * 1no62484633267
xSeries 445
- FAStT 600
73GB 15K * 52Gbps FC0RedHat AS 2.1
2.4.9-e.24
137606684609
73GB 15K * 41+0136565160481
x365073GB 15K * 2SAS
(Serial Attached SCSI)
1RedHat AS 4
2.6.9-55.ELsmp
1281008264537
300GB 15K * 41+0239240165119502

 

補記事項
  • ML110 G4にSATA HDDを搭載する構成で、Write Cacheを「Disable」に設定するとwrite性能が極端に悪いことを確認しました(一覧表の赤太字部分)。内蔵SATA RAIDコントローラの「Create Array」、「Configure Drives」メニューからドライブを構成した場合、デフォルトの設定は「Write Cache : Disable」になるため、注意が必要です。Write Cacheを「Enable」に設定することでwrite性能が大幅に向上することを確認しています。
  • xSeries 335にRedHat WS 2.1(update無し)をインストールした構成で、write性能が極端に悪いことを確認しました(一覧表の赤太字部分)。これはOSインストール時にデフォルトで導入されるデバイスドライバーの不具合によるものです。
    IBM社のサイトで公開されている「xSeries – Red Hat Enterprise Linux ES/WS 2.1 導入ガイド(2004-04-18版)」に記載の手順に従い、Fusion MPT base driver、Fusion MPT SCSI Host driver を 2.02.01 から 2.05.08 にバージョンアップすることによってこの不具合を解消しています。
  • OSインストール時にSE Linuxを導入した場合、実行中のプロセス、ファイルには「セキュリティコンテキスト」が付与されます。また、ポリシーデータベースの保持、適合チェック処理のオーバーヘッドが発生することにより、システムのパフォーマンスは非導入時と比較して明らかに低下します。

関連記事

Linux Tips – bonnie++の使用方法
Oracle ORIONの使用方法 (Linuxディスクベンチマーク)
Linuxファイルシステムベンチマーク第1回 ext2,ext3,JFS,ReiserFS,XFS,NTFS
Linuxファイルシステムベンチマーク第2回 ext3,ext4,JFS,ReiserFS,XFS,NILFS2
RAMディスク(/dev/shm)のIO性能をチューニングに活用する方法
SSD I/Oブロックサイズの調整によるチューニング効果検証 (DC S3700編)
2.5インチSSDを変換アダプタで3.5インチHDDベイに搭載する方法
 
「Linux」カテゴリーの記事一覧

参考になるサイト

富士通 – PRIMERGY IAサーバ解説
ストレージシステムの解説の中で、HDDの基本面やRAID構成の性能比較に関する情報が充実。

日本IBM – IBM RAID コントローラー比較表 (*PDF)
RAID-1E,RAID-50,RAID-60を含む各RAIDレベルの特性を図解入りで解説した資料。
パフォーマンス面やディスク容量使用率の観点から各RAIDレベルを比較した一覧表も有り。

日本HP – HP SASベンチマーク パフォーマンステスト
HP ProLiantサーバを用いたSerial Attached SCSI(SAS)とUltra320 SCSIのベンチマーク結果。
Microsoft Jetstress 2004のベンチマークでは、外付けストレージのRAIDレベル毎の性能比較有り。

日本HP – SATAハードディスクとSAS/SCSIハードディスクの違いと選定のポイント
ハードディスクの規格毎に設計思想の違いを解説。システム構成選定の参考になる。

@IT – 全貌を現したLinuxカーネル2.6[第1章] – ファイルI/Oの効率化
カーネル2.4、カーネル2.6のファイルI/Oの仕組みに関する解説。

@IT – ハードディスクのS.M.A.R.T.情報を表示するには
ハードディスクの持つ自己診断機能 S.M.A.R.T. の情報を取得するsmartctlコマンドの解説。