ディスクベンチマークツールdbench
※dbenchについては、前職のときに一度ブログに書いたのですが、ここでも記載します。
Linuxで比較的簡単にディスク性能を評価できるベンチマークツールdbenchについて、インストール方法と使い方をまとめます。
dbenchのオフィシャルサイト
http://dbench.samba.org/
dbenchは、データを連続的にディスクに書き込み、そのスループットを計測するツールです。
複数クライアントからの同時接続を想定した負荷を計測できます。
インストール方法 – Redhat系の場合
ビルドには popt-devel が必要です。
# yum install popt-devel
dbenchのソースをダウンロード、ビルドします。
# wget http://samba.org/ftp/tridge/dbench/dbench-4.0.tar.gz # tar zxvf dbench-4.0.tar.gz # cd dbench-4.0 # ./autogen.sh # ./configure # make # make install
/usr/local/bin に実行バイナリ dbench がインストールされます。
また、/usr/local/share に負荷パターンファイル client.txt がインストールされます。
もしくは、EPELリポジトリが追加されていれば、一発でインストールできます。
# yum --enablerepo=epel install dbench
実行バイナリ /usr/bin/dbench が、負荷パターンファイル /usr/local/share/client.txt (EPELリポジトリからインストールしたときは /usr/share/dbench/client.txt)がそれぞれインストールされます。
ベンチマークの実施
$ dbench <同時実行プロセス数>
ex. $ dbench 4
デフォルトでは、120秒のwarmupののち、600秒かけて計測します。
同時実行プロセスの数だけdbenchプロセスが起動され、ディスクへの書き込みを行うので、本番稼動しているサーバなどでは実施タイミングに注意してください。
※僕は、サーバーの初期構築時、Web、アプリケーション、DBなどのサービスを停止した状態で計測するようにしています。
※(同時実行プロセス数) > (サーバーのCPUコア数)となると、CPU数が足りないので少し不利な値となります。
結果は下記のように、各テスト項目の値と、最後にスループットとレイテンシの最大値が出力されます。
Operation Count AvgLat MaxLat ---------------------------------------- NTCreateX 6068976 0.022 252.716 Close 4458210 0.001 3.702 Rename 256991 0.054 95.122 Unlink 1225507 0.061 248.997 Deltree 160 8.290 258.305 Mkdir 80 0.002 0.003 Qpathinfo 5500796 0.009 243.363 Qfileinfo 964225 0.001 7.130 Qfsinfo 1008646 0.002 3.757 Sfileinfo 494402 0.030 274.953 Find 2126795 0.017 243.251 WriteX 3027131 0.035 274.930 ReadX 9513384 0.005 248.801 LockX 19762 0.002 0.160 UnlockX 19762 0.001 0.133 Flush 425376 4.350 885.889
Throughput 317.622 MB/sec 4 clients 4 procs max_latency=885.893 ms
各項目の値に注目すると細かい特徴がわかりますが、総合的なディスク性能の目安としては、Throughputの値(MB/sec)に注目すれば十分だと思います。
dbench 1 のThroughput値の目安としては、僕の経験では、
- 40MB/sec以下になるとコマンド入力が引っ掛かる。
- 仮想サーバーでは 100MB/sec以上であれば十分速いほう。
- 物理サーバーでは、よいRAIDコントローラーを使用して、SAS 10,000rpm-15,000rpm HDD 6本 or 8本, RAID6 or RAID10で、1,500MB/secぐらい出ることもある。
という感じです。
外部ディスクのベンチマークの実施
外部ディスク、追加ディスクのベンチマークを取りたい場合は、負荷パターンファイル /usr/local/share/client.txt (EPELリポジトリからインストールしたときは /usr/share/dbench/client.txt)をベンチマークしたいディスク上に置き、-cオプションでファイルを指定します。
また、-Dオプションで、Work Directoryとしてマウントポイントを指定します。
$ dbench -c /mnt/foo/client.txt -D /mnt/foo/ 4
ディスクベンチマークの意義
ディスクベンチマークツールとしては、dbenchのほかに、hdparam, bonnie++, fioなどがありますが、僕はずっと(7年ぐらい?)dbenchを使っています。
dbenchを使う理由は下記のとおりです。
- インストールが簡単
- 結果がシンプル
- 自分でサーバーを触っていて、速い/遅いの感覚とdbenchスループットの値がだいたい比例する
- 同じツールで値をとっているので、過去のサーバー環境と性能を比較できる
ディスクはサーバーを構成する要素の中で、もっとも性能に影響を与えやすい箇所といえます。
ツールは何でもよいのでしょうが、同じツールで様々なサーバー環境で定量的な値をとり続けて情報を蓄積することで、オンプレミスでもクラウドでも、適切なサーバー構成の選択・設計の役立てています。
ディスク性能がよくないサーバーであれば、メモリを増やしてmemcachedなどのキャッシュツールを使用したり、DBのパラメータでバッファプールに大きな値を割り当てる、あるいはインデックスを適切に設定するなど、「ディスクアクセスを少なくするようチューニングを徹底する」という戦略が立てられますね。
なお、クラウドやVPSの仮想サーバーの場合は、同じ物理ノードに載っている他のサーバーやストレージ、ネットワークへの負荷状況によって値が変わることもあるでしょう。
ですが、僕の経験では、よほどユーザー数の少ないサービスでない限りそういった影響は小さいです。
実際、同じサービスで同じスペックの仮想サーバーであれば、せいぜい10%~15%ぐらいしか違いがありません。
良い値にしろ悪い値にしろ、「そのサーバー環境ではその値が出た。」ということは間違いありませんので。
(関連記事)
・IaaSクラウドのdbenchディスクベンチマーク比較
https://inaba-serverdesign.jp/blog/20131203/cloud_disk_benchmark.html