パフォーマンスの向上にむけて
さてvFRCのパフォーマンスを最大限に発揮させることについて考察していきます。vFRCのパフォーマンスに影響する要素は以下が挙げられます。
1. vFRCの設定:
キャッシュ容量とブロックサイズの設定
2. ハードウェア構成:
デバイスタイプの違い
高速高価なPCIe接続カードか、コストパフォーマンスの高いSSDか
3. アプリケーション特性:
読み込みと書き込みのIOの割合
ある特定のデータにアクセスするのか、ディスク全体にアクセスするのか
4. vMotion:
キャッシュごとvMotionするのか、しないのか
サーバ、アプリケーションに変更を加えることなくパフォーマンスを向上させる場合、vFRCのキャッシュ容量とブロックサイズの設定が要となります。
では、実際にキャッシュ容量とブロックサイズの設定を変更する場合はどの情報をヒントにして行えばよいのでしょうか。
vSphere 5.5ではパフォーマンス分析に、新しいWeb Client統計カウンタとesxcliの実装がされています。
まず、新しいWeb Client統計カウンタですが、該当する仮想ディスクに対してvFRCキャッシュIOPs、vFRCキャッシュスループット、vFRCキャッシュ遅延3つのパラメータが追加されました。
図6 新しいWeb Client統計カウンタ(クリックして拡大)
esxcliコマンドにはvFRC用の新しいNamespaceが追加されました。例えば以下のものが挙げられます。
esxcli storage vflash cache list
- 作成されているvFRCのキャッシュファイルリストの取得
esxcli storage vflash cache stats get -c
- 特定のvFRCに対するキャッシュヒット率やキャッシュIO数などの統計情報の確認
図7 vFRCのキャッシュファイルリストと統計情報の確認(クリックして拡大)
読み込みと書き込みIOの割合をふまえたうえで、キャッシュヒット率が低い場合、キャッシュ容量が小さい、またはブロックサイズがI/Oサイズと合っていない可能性があります。
そこでキャッシュサイズが小さい場合は、アクティブ領域の確認またはキャッシュサイズを増やすことを検討します。
ブロックサイズが合っていない場合、仮想マシンのハードディスク単位のI/0サイズの確認を行い、最適なサイズへの変更を検討します。I/0サイズの確認には、以下のvscsiStatsコマンドを使用します。
vscsiStats -l
- 確認したい仮想マシンのworldGroupIDの取得
vscsiStats -s -w(worldGroupID)
- 仮想ハードディスクの統計情報の取得を開始
vscsiStats -p ioLength
- I/Oサイズの表示
図8 仮想ハードディスクのI/Oサイズの確認(クリックして拡大)
このようにWeb Client統計カウンタとesxcli・vscsiStatsコマンドを使用してvFRC最適設計が可能になります。
筆者の環境では、「CrystalDiskMarkのベンチマーク結果」で前述したように、キャッシュ容量を6GBとしていました。その場合のキャッシュヒット率はキャッシュの暖めを行った時点で42%でした。CrystalDiskMarkでは、読み込みと書き込みのIOの割合は50:50となっています。読み込みリードキャッシュ性能目標を90%とした場合、vscsiStats -p ioLengthコマンドでキャッシュヒット率が45%以上となる必要があります。
キャッシュ容量を2倍の12GBに変更し再度検証を行ったところ、ヒット率を47%まで向上できました。
キャッシュ容量が大きいほどヒット率は高くなりますが、大きくしすぎてしまうと、キャッシュリソースの無駄遣いとなります。統計カウンタとコマンドの結果をもとに、アプリケーション性能目標が満たされるように、サイジングを行ってください。なお、キャッシュ容量の変更は仮想マシンがオンラインの状態でも可能です。
今回紹介したvFRCは、サーバ搭載のリードキャッシュ利用により、読み込みの多いアプリケーション・DB環境の性能向上が見込めます。また、ストレージの負荷を軽減する点も非常に優れている仕組みです。また、vFRCを有効化することでvSphere機能に制限がかかることがないので、非常に簡単にvSphere環境に導入して利用することが可能です。
次回は、各ESXiホストのローカルディスクを1つの大規模ストレージの構成できるVirtual SAN(VSAN)について紹介します。安価でSAS/SATAのハードディスクと高速なSSDを組み合わせて大容量で高速な共有ストレージ領域を実現するVSANの魅力をお伝えします。