今回は 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 は初回書き込み時に領域拡張の挙動が発生するので、事前に書き込みを実施して拡張しておく事がベストです。
その他、仮想化環境でストレージ性能試験を実施する際に性能問題、性能のアンバランスに陥りやすいポイントとして以下などがあるのでご注意下さい。
- 負荷を掛ける対象のクラスタ、データストアに管理 VM (vCenter や vROps、HCIBench の親 VM) が配置されていると負荷を掛ければかけるほど管理 VM の負荷も高まり正しい計測、データのアウトプットが出来なくなることが多々あります。
本気の性能検証する際は、対象のクラスタには負荷を掛ける Worker VM 以外は配置しないでください。 - クラスタの DRS など自動負荷分散の機能は必ず "OFF" にして負荷を掛けて下さい。そうしないと負荷の状況に応じて Worker VM が vMotion でホスト間を移動してしまい均質なベンチマーク結果が取得できません。
「最大の性能を引き出す」ためにはこのような適切な準備と負荷の掛け方が重要となりますので、それを 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 パターンを一気に流すための構文を含める事が可能です。コンフィグファイルの作成方法は次回ご紹介します。
- ワーカー VM あたりの vDisk 数(Guest VM Configuration の設定と同じにする事)
- ワーキングセットの割合(vDisk のどの程度の領域にIOを掛けるかの割合)
- vDisk あたりの負荷スレッド数(IO のスレッド数を指定)
- IO ブロックサイズ(4K,8K,16K,32K,64K,128K,254K,512K,1024K が WebUIから設定可能)
- 読み込み 比率(Read/Write 比の指定)
- ランダム IO 比率(IO パターンの ランダム/シーケンシャル を指定)
- I/O Rate(1ワーカーVM あたりの IOPS の上限を指定。ここで 1,000 と指定して、10VM で負荷を掛けると合計で 10,000 IOPS がデータストアにかかります)
- テスト時間(1パターンあたりのテスト時間を指定)
- ウォームアップ時間(オプション値。負荷を掛けてから数値を記録する前に何秒負荷を掛けておくかを指定。デフォルトは0秒)
- レポート間隔(オプション値。何秒毎にスコアを記録するかを指定。デフォルトは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)