ベンチマークツールX-Rayのシナリオを眺めてみる Part 1

# はじめに
この記事は、[Nutanix Advent Calendar 2021](https://adventar.org/calendars/6154) 12月16日の分として作成しました。本記事の内容はこの日付の情報に基づいています。

NutanixではHCIの性能や可用性を測定するベンチマークのツール、X-Rayを提供しています。X-RayはNutanixや他メーカーのHCIを比較検討する方向けに、自動的に各種のベンチーマークテストを実行し、結果を比較したり、レポートにまとめる機能を提供しています。テストの公平性を担保するため、テストシナリオはオープンソースで公開されています。

2021年12月16日時点の最新版であるX-Rayバージョン4.1.2では、標準で以下の5つカテゴリのシナリオが提供されています。

- Infrastructure Performance (インフラストラクチャの性能)
- Application Performance (アプリケーションの性能)
- Data Protection (データ保護)
- Infrastructure Resiliency (インフラストラクチャの信頼性)
- Infrastructure Scalability (インフラストラクチャのスケーラビリティ)

本記事では、「インフラストラクチャの性能」のカテゴリに含まれる6つのテストシナリオのテスト内容を紹介します。(具体的にはX-RayのUI上に表示されるテストシナリオの説明を翻訳したものです)

#Infrastructure Performance (インフラストラクチャの性能)カテゴリのシナリオ
以下の6つのシナリオが提供されています。

- ビッグデータの取り込み
- HCIベンチマーク
- NFS ファイルサーバーのピーク性能のマイクロベンチマーク
- ピーク性能のマイクロベンチマーク
- S3 オブジェクトストレージのマイクロベンチマーク
- スループットのスケーラビリティ

それぞれのシナリオの説明を見ていきましょう。

## ビッグデータの取り込み
このテストでは、1台のホストで大量のデータをいかに早く取り込むかを検証します。取り込み時間が短いほどパフォーマンスが高いことを示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/34b511ad-8163-b602-eb29-9be3a2992d29.png)

### X-Rayのテスト実行方法
####テストの要件

- vCPU: VMあたり4 vCPU
- RAM: VMごとに4GB
- クラスタのストレージ: 1VMあたり1TB
- IPアドレス: VMあたり1つ

#### セットアップ

1. VMテンプレートをデプロイします
1. 1台のノードごとに1台のVMをクローンします

#### 計測

1. 取り込みのワークロードを開始します
1. 1TBのデータが取り込まれるまで待ちます

## HCIベンチマーク
このテストでは、カスタマイズしたストレージのワークロードを1つまたは複数のVM上で実行できます。テストでは一般的なストレージマイクロベンチマークのパラメータを調整できます。そこにはワーキングセットのサイズ、ブロックサイズ、ターゲットI/Oレートなどが含まれます。ワークロードは、すべてのVM上のすべてのディスクに均等に分散されます。ターゲットI/Oレートを0に設定すると、最大スループットテストが実行されます。IOPSが高く、レイテンシーが低いほどパフォーマンスが高いことを示します。

### X-Rayのテスト実行方法
####テストの要件

- vCPU: VMあたり4 vCPU
- RAM: VMごとに4GB
- クラスタのストレージ: 1VMあたり1TB
- IPアドレス: VMあたり1つ

#### セットアップ

1. ホストごとに必要な数のワークロードVMを配置します
1. 仮想ディスクに必要な量のランダムデータを格納します

#### 計測

1. 必要なワークロード構成を、各VMで必要な時間だけ実行します

## NFS ファイルサーバーのピーク性能のマイクロベンチマーク
このテストでは、4種類のデータワークロード（ランダム読み込み、シーケンシャル読み込み、ランダム書き込み、シーケンシャル書き込み）を実行し、NFSのシェアに対するピーク時のバーストパフォーマンスを示します。各クライアントは，提供されたシェアのルートの下にある独自のディレクトリで動作します．ランダムな読み書きの場合はIOPSが大きいほど、シーケンシャルな読み書きの場合は1秒あたりのバイト数が大きいほど、性能が高いことを示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/a2f3ad55-3415-7187-1813-11c305035434.png)


### X-Rayのテスト実行方法
####テストの要件

- vCPU: 負荷かけVMごとに4 vCPU
- RAM: 負荷かけVMごとに4GB
- IPアドレス: 負荷かけVMごとに1つ



#### セットアップ

1. 必要な数の負荷かけVMを作成します
1. 提供されたシェアを負荷かけVMにマウントします
1. 負荷かけVM上でディレクトリを作成し、ワーキングセットに比例したサイズのファイルをシェア上に作成します

#### 計測

1. すべてのVMで指定した実行時間だけランダム読み込みの負荷をかけます
1. 1分間待ちます
1. すべてのVMで指定した実行時間だけシーケンシャル読み込みの負荷をかけます
1. 1分間待ちます
1. すべてのVMで指定した実行時間だけランダム書き込みの負荷をかけます
1. 1分間待ちます
1. すべてのVMで指定した実行時間だけシーケンシャル書き込みの負荷をかけます

## ピーク性能のマイクロベンチマーク
このテストでは、4種類のデータワークロード（ランダム読み込み、シーケンシャル読み込み、ランダム書き込み、シーケンシャル書き込み）を実行し、そのピークバースト性能を表示します。これらのワークロードは、それぞれ1分間隔で1分間連続して実行されます。ランダム読み込みと書き込みはIOPSが高いほど性能が高く、シーケンシャル読み込みと書き込みは1秒あたりのバイト数が多いほど性能が高いことを示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/1b2d1787-1817-5898-0426-dd9f34073fd0.png)


### X-Rayのテスト実行方法
注：このテストは、ノード数に応じてスケールします。

####テストの要件

- vCPU: 1ノードごとに4vCPU
- RAM: 1ノードごとに4GB。
- クラスタのストレージ: ノードごとに116GB
- IPアドレス：1ノードごとに1つ


#### セットアップ

1. 各ホストに負荷かけVMを1台ずつ配置します
1. 仮想ディスクをランダムなデータで埋めます
1. ランダム読み込みワークロードのウォームアップを5分間実行します


#### 計測

1. すべてのVMでランダム読み込みの負荷を1分間実行します
1. 1分間待ちます
1. すべてのVMでシーケンシャル読み込みの負荷を1分間実行します
1. 1分間待ちます。
1. すべてのVMでランダム書き込みの負荷を1分間実行します
1. 1分間待ちます。
1. すべてのVMでシーケンシャル書き込みの負荷を1分間実行します

## S3 オブジェクトストレージのマイクロベンチマーク
このテストは、持続的なスループット性能を測定するために、必要なパラメータでワークロードを実行します。GET（読み込み）またはPUT（書き込み）方向のラージまたはスモールオブジェクトを使用して、それぞれ5分間実行する4つのプリセットの設定値が用意されています。スモールのオペレーションの場合、1秒あたりのオペレーション数が多いほど性能が高いことを示します。ラージのオペレーションの場合は、1秒あたりのバイト数が多いほど性能が高くなります。

選択されたターゲットクラスタは、ワークロードを生成するクライアントVMのインフラストラクチャとして使用されます。S3エンドポイントは、クライアントVMがアクセスできる限り、どこにあってもかまいません。

### X-Rayのテスト実行方法
####テストの要件

- オブジェクトストレージ: S3互換のバケットにアクセスできること
- vCPU: 負荷かけVMごとに4vCPU
- RAM: 負荷かけVMごとに4GB
- IPアドレス: 負荷かけVMごとに1つ

#### セットアップ

1. 要求されたS3エンドポイントごとに、クラスタ上に1つのワークロードVMを配置します。
1. GETワークロードを使用する場合、オブジェクトを作成してオブジェクトストアをデータで埋めます

#### 計測

1. Nutanix Poseidon Benchmarkを使用して、選択したワークロードを実行します

## スループットのスケーラビリティ
このテストでは、4種類のデータ操作（シーケンシャル読み込み、シーケンシャル書き込み、ランダム読み込み、ランダム書き込み）から1つを選択し、その種類のワークロードを増やしたときのインフラのスケーラビリティを測定することが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/e764c710-e7be-e617-c050-e0fffd88c9ad.png)

### X-Rayのテスト実行方法
####テストの要件

- vCPU: VMごとに4vCPU
- RAM: VMごとに4GB
- クラスタのストレージ: VMごとに256GB（4つのVM = 合計1TB）
- IPアドレス：VMごとに1つ

#### セットアップ

1. 各ノードにVMテンプレートをデプロイします
1. 各ノードで1台のVMをクローンします。
1. VMをランダムなデータで埋めます。

#### 計測

1. 最初のノード（Node 0）のVMで負荷かけを開始します
1. 選択した時間、負荷かけを実行します。
1. 残りの各ノードでの負荷かけの開始時間は、**選択した最初のノードにおける負荷かけの実行時間（秒）**に対して均等にずらされ、順次開始されます。例えば、ノード 1 の作業負荷は、ノード 0 の作業負荷の後にしばらくして開始し、ノード 2 の作業負荷は、ノード 1 の作業負荷の後にしばらくして開始する、といった具合になります。



# 終わりに
ベンチマークツールX-Rayのインフラストラクチャの性能を測定する各シナリオをご紹介しました。ベンチマークは公平な条件でのテストをさまざまプラットフォームで実施することで、そのプラットフォームの特性を理解し、比較することができます。簡単に使用することができて、レポートの生成や複数のプラットフォームの比較を行えますので、ぜひお試しください。