2019年5月31日金曜日

HCIBench を利用したベンチマークテストのポイントと効率化(1)

HCIBench 2.0 が先月リリースされ、その機能強化のポイントは以下にまとめましたが、
今回は HCIBench を利用してストレージの性能検証、ベンチマークを取るときのポイントをご紹介します。
【前回の HCIBench 2.0 の紹介】
HCIBench 2.0 のリリースと機能強化のご紹介
※ vSAN 性能検証のベストプラクティスについては、スライド付きで詳細な説明をVmware の vSAN 担当 SE 知久さんが VxRail チャンピオンクラブ で紹介しているのでそちらもご覧ください。
vSAN性能試験ベストプラクティス
https://www.slideshare.net/VxRailChampionClub/20180222vxrailccvsanvm

HCIBench を利用して性能検証する際のポイント

上記の知久さんの資料に詳細が書かれていますが、「最大の性能を引き出すポイント」は以下の様な点と考えます。
  • 負荷を掛ける環境に合わせて適切な数のワーカーVMの配置
    • vSAN 環境だと 1 Disk Group あたり 2VM、外部データストア環境では 1 データストア あたり 4VM~8VM(外部データストアの場合は Act-Act コントローラ 両系を利用できるように偶数データストアをクラスタに接続する事を推奨)
    • 私は 4ホスト で負荷かける場合は 8ワーカーVM ~ を基本で検証しています。
  • ワーカーVMの仮想ディスクの数、サイズ、負荷の強度の検討
    • 負荷は掛けすぎても処理が追い付かずに IO 遅延が高まったり、IO パスのボトルネックなどが発生するので各環境でパラメータを変えながらベストを探ります。
      私の場合は Thread数は 2 ~ 4 で試して、より高い負荷がかかった時の挙動を確認する場合は 8 などで試しています。
  • 負荷を掛ける前のキャッシュのクリア
    • テスト毎にキャッシュのクリアを実施した方が、前回のキャッシュヒットの影響を排除できます。
  • データストア領域(VMDK)の初回の書き込みペナルティの排除(事前にデータを書き込みThinDiskを拡張させておく)
    • ThinDisk は初回書き込み時に領域拡張の挙動が発生するので、事前に書き込みを実施して拡張しておく事がベストです。
「最大の性能を引き出す」ためにはこのような適切な準備と負荷の掛け方が重要となりますので、それを HCIBench で実施する際にどこをどう操作するか、ポイントを紹介します。

HCIBench で負荷試験を実施するための設定箇所

HCIBench 2.0 の GUI では以下の様な画面で各ベンチマークテストを設定します。

キャッシュのクリア

各ホストのキャッシュを事前にクリアする場合は、以下のオプションを有効にして ESXi のアカウントとパスワードを入力します。
※テストを複数ジョブ走らせる場合は、テスト毎にクリアされるのでその分試験時間も長くなるので注意が必要です。

ワーカVMの設定

Easy Run などでテストをすると対象環境に合わせてワーカーVMが配置される(はずな)ので最初はそれを参考にするとよいかと思います。
私の場合は上記「最大の性能を引き出すポイント」に書いたような点を考慮つつ、負荷を掛ける対象の容量、デバイス数、ホスト数などで上下させています。
ログの集計を揃えやすくするためにもホスト数やデータストア数などの倍数となる偶数で設定する事をお勧めします。

例)1ホスト 2VM~4VM、vDisk数は10などで設定すると IO負荷の分散が調整しやすいです。

初回書き込みペナルティの抑止

ThinDisk、ThinVolume を利用している場合は初回書き込み時の処理を避けるため、あらかじめ負荷対象の仮想ディスクを埋めておきます。
重複排除ストレージであれば「RANDOM(4KブロックでRANDOMに埋める)」、非重複排除ストレージであれば「ZERO(256KブロックのZEROデータで埋める)」を選択します。

 負荷を掛ける時間の設定

パラメータファイルに記載したテスト期間を上書き設定する事が可能です。
負荷を掛ける時間は試験の目的に応じて適切に設定してください。

VDBench / FIO パラメータの作成

負荷パターンは WebUI から任意のものが作成できます。
※ WebUI で作成したパターンは 1 IO パターン = 1 コンフィグ となります。
※ 設定可能な項目は以下の様な項目ですが、WebUI を利用せず直接コンフィグファイルを作る事で 重複排除や圧縮を考慮したデータや、複数 IO パターンを一気に流すための構文を含める事が可能です。コンフィグファイルの作成方法は次回ご紹介します。

  1. ワーカー VM あたりの vDisk 数(Guest VM Configuration の設定と同じにする事)
  2. ワーキングセットの割合(vDisk のどの程度の領域にIOを掛けるかの割合)
  3. vDisk あたりの負荷スレッド数(IO のスレッド数を指定)
  4. IO ブロックサイズ(4K,8K,16K,32K,64K,128K,254K,512K,1024K が WebUIから設定可能)
  5. 読み込み 比率(Read/Write 比の指定)
  6. ランダム IO 比率(IO パターンの ランダム/シーケンシャル を指定)
  7. I/O Rate(1ワーカーVM あたりの IOPS の上限を指定。ここで 1,000 と指定して、10VM で負荷を掛けると合計で 10,000 IOPS がデータストアにかかります)
  8. テスト時間(1パターンあたりのテスト時間を指定)
  9. ウォームアップ時間(オプション値。負荷を掛けてから数値を記録する前に何秒負荷を掛けておくかを指定。デフォルトは0秒)
  10. レポート間隔(オプション値。何秒毎にスコアを記録するかを指定。デフォルトは1秒)




ワーカーVMの再利用 or 自動削除?

HCIBench では テストに利用したワーカーVMを、テスト毎に削除するか、可能であれば再利用するかを選べます。
個人的には、テスト前の ZERO/RANDOM データ埋めの時間や、複数テストパターンをまとめて実施する際の時間が長くなるのは好きではないので、以下のように、「Delete VM  After Testing」は無効に、「Reuse VMs If Possible」は有効で実施しています。

※ 「Reuse VMs If Possible」にした場合でも、構成が異なる時(VDBench と FIO で負荷ツールが事なる時や、仮想ディスク数やVM数が異なる場合)は再利用されないので、同じテスト環境でパターンを変えてテストする際に有用なオプションだと思ってください。

次回は、カスタムパラメータファイルを利用して、HCIBenchのテストパターンをプロっぽく実施する方法をご紹介したいと思います。

【次回の記事】
HCIBench を利用したベンチマークテストのポイントと効率化(2)

2019年5月15日水曜日

vRealize Operations を活用した vSAN 6.7 の運用最適化

先日、Dell Community でのディスカッションで vRealize Operations (vROps) について触れる事があり、あまり vROps の最新機能について知られていないようなのでご紹介します。
Dell Community : VxRailに実装されているvRealize Log Insightについて

※ 細かい vROps plug-in の有効化方法や vROps そのものの View の詳細紹介は公式ガイドの他、vExpert 中川さんが公式ブログでも紹介しているのでご参照ください。
https://blogs.vmware.com/jp-cim/2018/12/vrops-6-7-nakagawa-part5.html

vROps HTML5 vSphere Client plug-in の活用

vCeneter 6.7 から HTML5 vSphere Client に vRealize Operations の View がplug-inで取り込まれましたが、vSAN のモニタリング機能としても特化した活用が可能です。
※ vCenter 6.7 と vROps 7.x サポートされるバージョンとなります。

ホーム画面からは 左のメニューから 「vRealize Operations」を選択

または、画面トップにある「メニュー」から辿ることもできます。

こちらは HTML5 vSphere Client の vROps 組み込み画面で システム全体のビューです。
多数ある vROps のダッシュボード情報からシステムの健全性状態をシンプルに把握できるコンテンツで構成されます。

この HTML5 vSphere Client 組み込みの vROps 画面は右上の「クイックリンク」を開くと、vSAN クラスタにフォーカスを当てて健全性状態のチェックが可能になっています。

vSAN クラスタビューを開くと、サマライズされた直近の IOPS 状況、スループット、IO 遅延など ストレージとしての健全性を確認する指標が一目でチェック可能です。
毎回監視タブからパフォーマンスビューを選択する必要が無く、サクッと性能健全性が確認できるのは運用上大きなメリットかなと感じます。

vROps を活用したアラート監視運用

通常のクラスタとしての健全性や、vSAN コンポーネント、ハードウェア含めた健全性は vCenter 側のアラートでチェックできますが、
vROps と連携すると仮想マシン・ゲストOSの観点でも詳細な健全性確認が出来ます。
例えば、ゲストOS内でデータが書き込まれ続け、ゲストOSとしてドライブ容量が枯渇しそうな時も vROps は VMware Tools を通して健全性をチェックし、
必要に応じてアラートを発報します。

以下の例では、ゲストOS 内のドライブ容量が 100% に近づいた時のアラートです。
vROps vSAN ビューでも警告が表示され、「詳細表示」からさらにドリルダウンして確認が出来ます。

英文で特定VMのドライブ容量が枯渇している旨のメッセージと、右端にリンクボタンが確認できます。
赤マークのクリティカルの方からチェックしていくと、

リンク先では vROps の対象アラートの詳細画面が開き、
こちらは日本語で現状の説明と、ワークアラウンドが紹介されています。
通常、ゲストOSの中の状態までは vCenter ではフォローされませんが、vROps であればより詳細に丁寧なワークアラウンド含めた内容がフォローされるのでシステム全体を適切に運用するのにとても役立ちます。

また、vROps のダッシュボードを開くと、vSAN に関連するカスタムダッシュボードもデフォルトで
vSAN のトラブルシューティング
vSAN のキャパシティの概要
vSAN 運用概要
などのビューが用意されており、vSAN を運用している中でのちょっとした事でも可視化され、忙しい基盤運用の合間にざっと見るだけでもシステムの健全性チェックが可能になっています。


今回、コミュニティの質問をきっかけに vSAN、VxRail の運用をより最適化するツールとして vROps を紹介しました。
vROps 自体も奥が深いツールなので、改めて運用の Tips をまとめたいと思います。