ベンチマークテストって意味あるの?
フラッシュストレージの性能を評価するためのベンチマークソフトウェアとしてもっとも有名なものはCrystalDiskMarkやiometerがあげられると思います。もちろんコンポーネントの単体性能を図るという意味では有効だと思います。ただ、アプリケーションの世界になればiometerの結果がそのままビジネス上のクライテリアをパスするかといえば、決してそうではないので注意が必要です。
こうしたアプリケーションの稼働状況を含めた評価をする代表的なベンチマークは非営利団体のTransaction Processing Performance Council(TPC)やStandard Performance Evaluation Corporation(SPEC)が提唱するものがあります。TPCはトランザクション処理やデータベースの性能評価のためのもので、よく使われているのはOLTP向けのTPC-Cとデータウェアハウス向けのTPC-Hの2つです。TPCのベンチマーク・スコアは、「tpmC」と「Price/tpmC」の2つがあり、tpmCはTPC-Cテストで処理した毎分のトランザクション数を示すものに対して、Price/tpmCはトランザクションのそれぞれがいくらの費用がかかったかを示したものです。
IOPSが高いストレージを活用すれば高いtpmCが期待できますが、tpc.orgで公開されているベンチマーク・スコアを見ると、高級なサーバーにメインメモリをふんだんに搭載し、バッファキャッシュ上で多大なトランザクションを処理していたりするものもあるので参考値にもならないのが実情です。しかし、TPCのベンチマークテストを活用すれば性能評価としては十分に活用することができます。
SPECはサーバーの性能を評価するために用いられるベンチマークですが、単純にCPUの性能だけを見ているわけではなく、アプリケーション視点でいえば、JSPの性能評価を行うSPECweb2005やJ2EEベースのアプリケーションサーバーの性能評価を行うSPECjAppServer2004やSPECjEnterprise2010など、目的に応じたいくつかのベンチマークテストがあります。
とくにSPECjAppServer2004やSPECjEnterprise2010は階層型アプリケーションの評価向けでアプリケーションが接続するデータベースサーバーを介したトランザクション処理が含まれるため、アプリケーション動作環境の総合評価用としても活用することができます。もちろんデータベースが含まれるということはトランザクションの処理能力も含まれるということですから、ストレージI/Oやスループットもそのスコアに影響するということでもあります。その他、仮想環境のベンチマークテストとしてのVMmarkなど、アプリケーションやシステムインフラ向けのベンチマークテストを必要なものを選択して行うことをおすすめします。
筆者の個人的な考えとしては、なるべく本番環境に近いアプリケーション構成、いってしまえばテスト用のアプリケーションによるPoC(Proof of Concept)などでユーザー入力、バッチ、アプリケーション連携から生成されるトランザクションに対する評価を総合的に判定できることが必要と感じています。
それがアプリケーション要件を満たすかどうかにもつながりますし、現実的にはアプリケーションに依存したトランザクションとI/Oの発生パターンを評価できる唯一の方法ともいえるからです。新規に開発されるシステムでは難しいと思いますが、システムのリプレースにおいては適用しやすいと思います。
また、データの書き込み、読み込みのパターンがランダムI/Oが多いのかシーケンシャルI/Oが多いのかも最初から想定可能なものと思われます。ランダム、シーケンシャルの特性でいえば、データベースのようなものであればランダムI/Oの性能が重視されますが、ビデオレコーダーや航行情報記録のようなものだと、シーケンシャルの性能が重視されるため、使い方によっては媒体の違いで性能に差がない、もしくは必ずしもフラッシュでなくてもよいものもあります。アプリケーションの特性によってはHDDどころかテープでも適用できることがあります。