高性能マウント・ターゲットでファイル・システムの性能を見てみる。その2。

今回もファイル・ストレージ・サービスの高性能マウント・ターゲット（HPMT）を試していきます。
[前回](https://qiita.com/tkonishi/items/f53f1744ccc4329c65f7)は20Gbpsの高性能マウント・ターゲットでfioの測定を行いました。今回は前回に続いて80Gbpsのマウントターゲットで同様の測定をしてみます！

実施する内容は基本的に同じなので、まずは前回の[高性能マウント・ターゲットでファイル・システムの性能を見てみる。](https://qiita.com/tkonishi/items/f53f1744ccc4329c65f7)を参照してください。



## 検証環境と測定パターン

#### 環境

前回は20 Gbpsのマウント・ターゲットを使用しましたが、今回はマウント・ターゲットの性能は80 Gbpsに設定しています。FIOを実行するNFSクライアント側の帯域もそれに合わせて大きな帯域が必要となるため、今回は40 Gbpsの帯域を持つVMインスタンスを2台使用しました。

![image-20250507151117118.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/9657543b-ca34-4686-af8a-b2a27e43785c.png)

- リージョン：US West (San Jose)
- マウント・ターゲット：HPMT-80
- マウント・ターゲットと同一VCN内のNFSクライアント用インスタンス x 2台
  - VM.Standard.E4.flex、64 OCPU、128 GB Memory、40 Gbps
  - Oracle Linux 8

#### 使用したNFSマウントオプション

- HPMT-20の際と同様のオプションです。

```
sudo mount -o nconnect=16 <マウント・ターゲットのIPアドレス>:/<ファイルシステム名> /mnt/<マウント用ディレクトリ名>
```

#### 使用したFIOコマンドと計測パターン

- HPMT-20の際と同様のオプションですが、前回結果ではRandomとSequentialにそこまで大きな違いは見られなかったため、今回はSequentialのみ測定しました。
- 2つのインスタンスそれぞれで同時に同じコマンドを発行しています。

```
sudo fio --name=<ケースごとの名前> --directory=/mnt/<マウント用ディレクトリ名> --numjobs=32 -size=1G --time_based --runtime=600 --ioengine=libaio --direct=1 --verify=0 --bs=<IOサイズ。ケースによって変更。> --iodepth=64 --rw=<Read/Write。ケースによって変更。> --group_reporting=1
```

- bs：1M / 32K / 4K の3パターンで計測
- rw：read / write の2パターンで計測

## 測定結果

#### 結果一覧

80 Gbpsのマウント・ターゲットは、クライアントの2インスタンス分の合計値で記載しています。

比較のため、前回のHPMT-20の結果も合わせて記載します。

|              |         | **HPMT-20** | **HPMT-20**      | **HPMT-80** | **HPMT-80**      |
| :----------- | :------ | ----------- | ---------------- | :---------- | :--------------- |
| **IOサイズ** | **R/W** | **IOPS**    | **スループット** | **IOPS**    | **スループット** |
| 1M           | Read    | 2462        | 2462MiB/s        | 9483        | 9484MiB/s        |
|              | Write   | 1516        | 1517MiB/s        | 9459        | 9362MiB/s        |
| 32K          | Read    | 50.1k       | 1565MiB/s        | 128.7k      | 4021MiB/s        |
|              | Write   | 17.2k       | 538MiB/s         | 60.2k       | 1883MiB/s        |
| 4K           | Read    | 47.6k       | 186MiB/s         | 130.8k      | 511MiB/s         |
|              | Write   | 15.0k       | 58.6MiB/s        | 55k         | 214.5MiB/s       |

- どのケースも、HPMT-20と比べるとHPMT-80のほうが大幅に性能向上していることが分かる。
- スループットはIOサイズ1MのSequential Readが最も高く、9484MiB/s = 約79 Gbps 程度出ているので、ほぼスペック通りの帯域性能が実現できている。（クライアント側帯域も合計80 Gbpsなのでこれ以上の負荷がけはできない状態。）
- 1MのWriteスループットはスペックを大きく超えた性能が出ていた。ホワイトペーパーによると40 Gb/sのところ、計測結果ではReadスループットとほぼ変わらない79 Gb/s程度が出ていた。
- IOPSは Read 約130k, Write 約55k～60k 程度。（IOサイズ 32K, 4Kの場合）




続いて、FSSのマウント・ターゲット側のメトリックも確認しておきます。

#### MountTargetReadThroughput メトリック

もっともスループット性能が高いケース（IOサイズ 1M、Read）でのメトリックを確認すると、FSS側でも10G Byte近くのスループットが出ていることがわかりました。スループットはクライアント側から計測できる値と大きくは変わらないことがわかります。

![image-20250507160531093.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/8d61d87c-452d-45fc-9334-e51118de87da.png)


#### MountTargetIOPS メトリック

こちらは1M writeの場合のみ、スペックを超えた600k以上のIOPSとなっていました。そのほかのケースはそこまで大きな違いはなく、200k～300k程度となっていました。

![image-20250507160809627.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/f246b5db-5ead-4fa1-9d64-2535fc0ebcfc.png)



## まとめ

- ファイル・ストレージの高性能マウント・ターゲットでは、特別なチューニングなど不要で期待通りの性能が出せることが確認できた。
- HPMT-80での最大スループットの目安は80Gbps。実際にIOサイズ 1MのReadの場合に9400MiB/s 以上のスループットを確認できた。
  - クライアント側の帯域も 40 Gbps x 2 = 合計80 Gbpsとしたため、仮にこれ以上クライアント側の帯域を増やした場合にどうなるかは未確認。
- 場合によってはホワイトペーパー記載以上の値が出るケースもあることがわかった。