Linux Tips – bonnie++の使用方法
ハードディスクベンチマークツール「bonnie++」を用いて、LinuxサーバのディスクIO性能を測定する際の手順メモです。bonnie++のバージョンは「1.03」を、コンパイラはgccを使用しています。
bonnie++を使用することで、シーケンシャルアクセス(read/write)、ランダムアクセス等の性能測定を一度に行うことができます。
なお、bonnie++ 1.03では、近年供給されているような高性能なハードディスクやSSDの性能測定用に使用することが想定されておらず、測定に掛かった時間が短過ぎる場合には、測定結果の表示が「+++++」「+++」となってしまう項目があります。このため、ソースを少し修正してからmakeします。
インストール
インストール手順(ソースから)
- ソースのダウンロード
- tarファイルの展開
次のURLより、bonnie++ 1.03のソースをダウンロードする。
(2012年7月時点の最新版は「1.03e」)
http://www.coker.com.au/bonnie++/
$ tar xzvf bonnie++-1.03.tgz $ cd bonnie++-1.03
$ ./configure
$ vi bonnie.h
- 修正前
#define MaxDataPerFile (MaxNameLen + 6 + 1 + 4) #define MinTime (0.5) #define Seeks (8192)
#define MaxDataPerFile (MaxNameLen + 6 + 1 + 4) #define MinTime (0.01) #define Seeks (8192)
$ make
インストール手順(パッケージ管理システム)
Ubuntu等、APTパッケージ管理システムでbonnie++がインストール可能なディストリビューションでは、次のようなコマンドで簡単にbonnie++をインストールすることができます。
- apt-getコマンドでbonnie++をインストール
$ sudo apt-get install bonnie++
RHEL、CentOS、Scientific Linuxでは、Repoforge(旧称:RPMforge)で提供されているbonnie++のRPMを利用してbonnie++をインストールすることができます。
- RPMのダウンロード
- rpmコマンドでbonnie++をインストール
Repoforgeから環境に応じたbonnie++のRPMをダウンロードする。
http://pkgs.repoforge.org/bonnie++/
# rpm -ihv bonnie++-1.96-1.el6.rf.x86_64.rpm
なお、各ディストリビューションやRepoforgeが提供する(上述のパッチを適用していない)bonnie++をインストールした際は、測定時間が短過ぎる場合に測定結果の表示が「+++++」「+++」となってしまうことがあるのでご注意下さい。
実行
実行手順
- 実行コマンド例(基本)
$ ./bonnie++ -d /target-dir
# ./bonnie++ -d /target-dir -u root
$ ./bonnie++ -d /target-dir -s 512 -r 256
$ ./bonnie++ -d /target-dir -n 256:1024:1024:16
指定可能なオプション
- -bオプション : write時にバッファキャッシュを使わないよう指定する。(Linuxでは本オプションを指定しても効果無し?)
- -dオプション : 測定対象のディレクトリを指定する。
- -nオプション : ファイル作成・削除・メタデータ操作のベンチマーク実行時に作成する一時ファイルのファイル数・ファイルサイズ・ディレクトリ数を指定する。
- -qオプション : 実行経過を表示しない。
- -rオプション : メモリサイズを指定する。単位はMB。
- -sオプション : シーケンシャルアクセスのベンチマーク実行時に作成する一時ファイルの最大サイズを指定する。単位はMB。
- -uオプション : 実行ユーザを指定する。通常は一般ユーザで実行。rootユーザで実行する場合には、「-u root」オプションを付けることが必要。
- -xオプション : 連続して測定する場合、実行回数を指定する。
例えば、「-n 256:4096:512:16」と指定した場合、「ファイル数 256*1024、最大ファイルサイズ 4096byte、最小ファイルサイズ 512byte、ディレクトリ数 16」の条件下で、ファイル作成・削除・メタデータ操作のベンチマークが実行される。
「-n 16:0:0:4」と指定した場合は、「ファイル数 16*1024、ファイルサイズ 0byte、ディレクトリ数 4」の条件下で実行される。この際、1ディレクトリ配下のファイル数は「16*1024 / 4」になる。
本オプションを指定しない場合、デフォルト値の「16:0:0:1」=「ファイル数 16*1024、ファイルサイズ 0byte、ディレクトリ数 1」の条件下で実行される。
バッファキャッシュによる測定誤差を小さくするため、デフォルトでは実メモリサイズの2倍の一時ファイルが測定時に作成される。測定対象のパーティションの空き容量に注意が必要。
デフォルトより小さいサイズを指定する場合、「-s 512 -r 256」というように-rオプションと組み合わせて使用する。
実行結果例
Writing with putc()...done Writing intelligently...done Rewriting...done Reading with getc()...done Reading intelligently...done start 'em...done...done...done... Create files in sequential order...done. Stat files in sequential order...done. Delete files in sequential order...done. Create files in random order...done. Stat files in random order...done. Delete files in random order...done. Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP banlinux 1G 20296 82 24762 12 11088 5 20206 70 33167 6 202.2 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 33876 99 187797 99 49498 99 34445 99 248845 100 48371 100 banlinux,1G,20296,82,24762,12,11088,5,20206,70,33167,6,202.2,0,16,33876,99,187797,99,49498,99,34445,99,248845,100,48371,100
ベンチマークの実行内容・結果の見方
- シーケンシャルアクセスのベンチマーク
- Writing with putc() : キャラクタ単位の書き込み
- Writing intelligently : ブロック単位の書き込み
- Rewriting : ブロック単位の再書き込み
- Reading with getc() : キャラクタ単位の読み込み
- Reading intelligently : ブロック単位の読み込み
- ランダムアクセスのベンチマーク
- start ‘em : ファイルのランダムシーク
- ファイル作成・削除・メタデータ操作のベンチマーク
- Create files in sequential order : 規則性のあるファイル名順でファイル作成
- Stat files in sequential order : 規則性のあるファイル名順でファイル情報の取得
- Delete files in sequential order : 規則性のあるファイル名順でファイル削除
- Create files in random order : ランダムなファイル名順でファイル作成
- Stat files in random order : ランダムなファイル名順でファイル情報の取得
- Delete files in random order : ランダムなファイル名順でファイル削除
実環境における測定結果
HDDベンチマーク手順+性能測定結果一覧 (hdparm,dd,bonnie++)
関連記事
HDDベンチマーク手順+性能測定結果一覧 (hdparm,dd,bonnie++)
Oracle ORIONの使用方法 (Linuxディスクベンチマーク)
Linuxファイルシステムベンチマーク第1回 ext2,ext3,JFS,ReiserFS,XFS,NTFS
Linuxファイルシステムベンチマーク第2回 ext3,ext4,JFS,ReiserFS,XFS,NILFS2
Intel SSD 330 Series 120GB ベンチマーク結果
RAMディスク(/dev/shm)のIO性能をチューニングに活用する方法
SSD I/Oブロックサイズの調整によるチューニング効果検証 (DC S3700編)
「Linux」カテゴリーの記事一覧
参考になるサイト
turbolinux – HDDのパフォーマンスをテストする
ベンチマークツールbonnie++を用いた性能測定に関する解説。
Linux man page – bonnie++(8)
bonnie++の使用方法をmanページ風にまとめたホームページ。(英文)