ADAPTEC MaxIQ SSD キャッシュパフォーマンスキット

近年注目を浴びている高速ドライブであるSSDと従来のHDDとの組み合わせでHDDアレイ全体のパフォーマンス向上を実現するADAPTEC MaxIQ SSDキャッシュパフォーマンスキットの評価テストを行ってみました。

MaxIQとは

ADAPTECの製品紹介ページ

近年、非常に高速なIOを実現するドライプとしてSSDが注目されていますが、MaxIQとは簡単に言うとこのSSDを(リード)キャッシュとして利用することによりHDD単体ないしはHDDアレイのパフォーマンスの向上を狙うものです。

HDDアレイ等において頻繁にリードアクセスされる"ホットな"データ(ブロック)をRaidカードが解析しSSDキャッシュにコピーします。そして将来的に同じデータ(ブロック)をリードアクセスがあった場合はHDDアレイからではなくSSDキャッシュから読み出すことにより高速なファイルアクセスを実現します。また既ににキャッシュされているデータ(ブロック)にライトアクセスがあった場合、このHDDアレイ上のデータとともにSSDキャッシュ上のデータも更新することにより効率化が図られます。

このMaxIQの仕組みはMaxIQ対応RaidカードとMaxIQ専用SSDで完結しているのでOS側にドライバの導入などの必要はなく、OSやファイルシステムに関係なく利用できます。

ランダムリードにおいてSSDはHDDよりかなり高い性能を誇りますが、MaxIQにおいてもランダムリードのパフォーマンスの性能向上が期待されます。おもにランダムリードの要求が多くをしめるデータベースやフロントエンドのWebサーバなのでの運用が効果的であると考えられているようです。

MaxIQの評価テスト

MaxIQは頻繁にアクセスされる"ホット"なファイルがないとその真価を発揮できません。しかし一般的なディスクI /Oベンチマークはこのようなホットなファイルのある状況を想定していません。評価方法としてはデータベースやWebサーバなど実際のアプリケーションを走らせてみる方法が考えられますが、今回はIOベンチマークプログラムを修正して意図的にホットなファイルへのアクセスを実現しMaxIQの効果を調べてみました。

MaxIQはどのデータ(ブロック)が"ホット"でありキャッシュするべきであるのかをアクセスが繰り返されるなかで次第に"学習"していきます。したがってMaxIQの効果が現れるまでにはある程度の時間(アクセス数)が必要になります。

評価環境

今回の評価環境は下記のとおりです。2台のディスクからなるRaid0構成でテストを行いました。

サーバ

CPU Intel(R)l Xeon(R) L3426 1.87GHz
マザーボード SuperMicro X8SIE
メモリ DD3-1333 REG/ECC 1G 2本 計2G

Raidカード

製品名 ポート数 キャッシュメモリ
ADAPTEC 5805 8 512MB

Raid構成

Raidレベル サイズ容量 HDDモデル インターフェース
Raid 0 930GB Seagate Barracuuda ES.2 500GB 2台 SATA 3Gb/s

MaxIQ SSDキャッシュ

サイズ容量 SSDモデル インターフェース
32G Intel X25-E SATA 3Gb/s

MaxIQの導入と設定

MaxIQを既存のディスクアレイに導入することは簡単です。対応RaidカードにMaxIQ専用のSSDを接続し、起動直後のセットアップ画面もしくはOSからセットアップ用のソフトウェアを使ってMaxIQを有効にするだけで完了です。前述のとおりOS側にドライバなどの導入の必要はなく、また随時MaxIQをオンオフすることができます。

"ホット"なファイルへのリードアクセステスト

1Mサイズのファイル4096個からなるファイル群に対して、シーケンシャルおよびランダムなリードアクセスのテストを繰り返し実行し、試行回数によるファイルの処理数の変化を調べました。

1回のテストでシーケンシャル、ランダムともにすべてのファイルに1回ずつアクセスするのでこの繰り返しによりこれらファイルすべてが"ホット"なファイルになります。

ファイルアクセスのアルゴリズムはディスクドライブのベンチマークテストとして良く利用されるBonnie++を参考にさせていただきました。

Image

横軸はテストの繰り返し回数、縦軸は1秒あたりに処理(リード)できたファイル数です。

MaxIQを無効にした場合に比べ、MaxIQを有効にした場合は繰り返しテストを実行することにより"ホット"なファイルが学習されパフォーマンスが向上していることが確認できます。

今回のテストはでは最終的にはランダムリードで3.3倍、シーケンシャルリードで2.1倍程度の性能の向上になっています。

MySQLベンチマーク

実際のアプリケーションに即した評価テストということでMySQLデータベースのベンチマークのひとつであるmysqlbenchを実行してみました。

mysqlbenchはMySQLの性能を測るベンチマークとしてよく利用されているものですが、そのテスト内容はMaxIQが利用を想定している様なリードアクセスが大半を占めるデータベースとは少しことなっています。

また今回はRaidカードのリードキャッシュの影響を少なくするために大きめのデータサイズのデータベースでベンチマークを行いました。

scaling factor(-s)

クライアント数(-c) トランザクション数(-t)

データベース形式(-E)

データサイズ
1000 10 5000 myisam 約10G
5000 10 5000 myisam 約50G

Image

横軸はテストの繰り返し回数、縦軸は毎秒あたりのトランザクション数です。

ベンチマークのテスト内容はMaxIQに"やや不利"ともいえるものですがスケーリングファクタ1000と5000の場合においてそれぞれ今回のテストでは2.6倍、2.2倍程度の性能向上になっています。

またスケーリングファクタが5000の場合はMySQLのデータベースを構成するファイルが単体で46G程度になり、MaxIQのリードキャッシュのサイズ32Gを超えてしまいますが、MaxIQの効果がでていることがわかります。これはMaxIQがファイル単位でなくブロック単位で"ホット"なデータを判断していることを裏付けており、データベースのような大きなひとつのファイルに対してアクセスする場合にもMaxIQは有効であると考えられます。

まとめ

今回のテストによってMaxIQのリードキャッシュの効果によりアクセスを繰り返すなかでディスクIOのパフォーマンスが向上する様子が確認できました。

mysqlbech自体はデータベースへのライトアクセスの割合のほうがリードアクセスより高いベンチマークであり前半のリードアクセステストの結果をうけるとデータベースのアクセスの種類によってはまだパフォーマンス向上の余地があるものと考えられます。

実際のアプリケーションでは頻繁にリードアクセスする"ホットファイル"が存在するのか、またそのアクセスは全体のアクセス中のどれくらいを占めているのかなどの事柄がMaxIQによりどれくらいパフォーマンスが向上するかということに大切になってくるのだと思われます。