FSx for OpenZFS のパフォーマンスに関する考慮点をまとめてみた

FSx for OpenZFS を HPC ワークロードで利用できるのか、費用対効果を調べたときのまとめです。
2022.08.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

HPC ワークロードでの利用を前提に FSx for OpenZFS のパフォーマンスと、チューニングポイントを調べていました。FSx for OpenZFS 利用時に抑えた方が良い点をまとめました。

参考資料

パフォーマンスチューニングは Black Belt を参考

スループットキャパシティ

スループットを名乗るものは2種類あります。ネットワークスループットキャパシティと、ディスクスループットキャパシティです。FSx for OpenZFS の構成にあてはめると以下の箇所です。

画像引用: Amazon FSx for OpenZFS performance - FSx for OpenZFS

インメモリキャッシュ

指定したプロビジョンドスループットの値によってインメモリキャッシュサイズが決まります。インメモリキャッシュサイズを明示的に指定できる追加課金オプションはありません。

画像引用: Amazon FSx for OpenZFS AWS Black Belt Online Seminar

ディスク IOPS

Automatic provisioned 選択時はデイスクサイズ 1GiB あたり 3 IOPS が提供されます。仮にディスクサイズが小さく(834GiB 以下)プロビジョンスループット値 64MiB/s を選択した場合はベースラインの 2,500 IOPS が適用されます。

  • プロビジョンスループット 64MiB/s の場合は、ストレージサイズが 834GiB 以上でベースライン 2,500 IOPS を超える
  • プロビジョンスループット 128MiB/s の場合は、ストレージサイズが 1667GiB 以上でベースライン 5,000 IOPS を超える

画像引用: Amazon FSx for OpenZFS AWS Black Belt Online Seminar

リードアクセスの多いワークロード

スループット推奨値

最低でも128 MB/s 以上のスループット指定が推奨されています。プロビジョンドスループットの値によってインメモリキャッシュサイズが決定されるためです。

Some request- or metadata-intensive workloads will also benefit from a larger file server in-memory cache. These types of workloads can generate and store a large volume of metadata in the in-memory cache. To ensure the size of your file server's in-memory cache is not a bottleneck for your file system performance, we recommend provisioning at least 128 MB/s of throughput capacity for these types of workloads.

Amazon FSx for OpenZFS performance - FSx for OpenZFS

圧縮設定

データを圧縮することでデータ転送効率が良くなるためスループットの向上が見込めます。

For read-heavy workloads, compression can significantly improve the overall throughput performance of your file system because it reduces the amount of data that needs to be sent between the underlying storage and the file server.

Amazon FSx for OpenZFS performance - FSx for OpenZFS

データ圧縮アルゴリズムは2つサポートされており、リード・ライトの特性が異なります。

  • Z-Standard(デフォルト)
    • LZ4 より読み取りスループットが高いがライトスループットは低下する
  • LZ4
    • Z Standard よライトスループットは高いがリードスループットは劣る(データ圧縮レベルは低い)

リードスループット: Z-Standard > LZ4 > 圧縮なし

ライトアクセスの多いワークロード

圧縮設定

圧縮を有効化するとデータがディスク書き込み時に圧縮されるためパフォーマンス劣化の可能性があります。 圧縮アルゴリズムによる書き込みの影響を考えると、読み書きのバランスをみて LZ4 を選択するか、書き込みが激しい場合は圧縮しないことも検討、または検証しましょう。

Enabling compression may reduce file system performance for write-heavy workloads as data is compressed as it is being written to disk.

OpenZFS file system -- FSx for OpenZFS FAQs – Amazon Web Services

ライトスループット: 圧縮なし > LZ4 > Z-Standard

非同期書き込み

NFS サーバー(FSx for OpenZFS)の設定で非推奨ですが非同期書き込み設定(async)するとパフォーマンス向上する見込みがあります。ですが、書き込んだはずのデータを失う可能性があります。実際のワークロードでパフォーマンスが上がるのかさきに計測してから検討しましょう。再度同じ計算すれば同じ結果を得られる、冪等性は確保されているなどワークロードに応じて検討する事項はいろいろでてくるはずです。

画像引用: Amazon FSx for OpenZFS AWS Black Belt Online Seminar

似たところですと NFS クライアント(例: EC2)はデフォルトで推奨値の非同期書き込み(async)になっています。

画像引用: Amazon FSx for OpenZFS AWS Black Belt Online Seminar

NFS nconnect

複数の TCP セッションを張ることでパフォーマンス向上が期待できます。最大は16セッションです。

With FSx for OpenZFS, NFS clients can use the nconnect mount option to have multiple TCP connections (up to 16) associated with a single NFS mount. Such an NFS client multiplexes file operations onto multiple TCP connections (multi-flow) in a round-robin fashion to obtain improved performance beyond single TCP connection (single-flow) limits. For more information on single-flow limits, see Amazon EC2 instance network bandwidth in the Amazon EC2 User Guide for Linux Instances.

NFS nconnect

画像引用: Amazon FSx for OpenZFS AWS Black Belt Online Seminar

NFS クライアント側でマウントするときのオプションで指定する必要があります。

sudo mount -t nfs -o nconnect=16 filesystem_dns_name:/vol_path /localpath

ZFS レコードサイズ

通常利用であればデフォルトのレコードサイズ(128 KiB)から変更する必要はありません。

When you create volume, the default record size is 128 KiB. General purpose workflows perform well using the default record size, and we don't recommend changing it, as it may adversely affect performance

Amazon FSx for OpenZFS performance - FSx for OpenZFS

特定ケースにおいてはパフォーマンス向上する可能性があります。ワークロードを確認した上で調整・検証が必要です。

画像引用: Amazon FSx for OpenZFS AWS Black Belt Online Seminar

費用感

最低限よりひとつ上の性能で月額を把握しておきます。ディスクサイズも欲張らず 2 TiB ととしました。こちらのスペックで$327/月です。

FSx for OpenZFS 備考
ディスクサイズ 2 TiB
スループット 128 MB/s
インメモリキャッシュサイズ 2.8 GB
ネットワークスループット 400 - 3,200 MB/s ベースライン - バースト時
ディスクスループット 128 - 1,024 MB/s ベースライン - バースト時
デイスク IOPS 6,000 IOPS Automatic provisioned
バックアップストレージ 1.8 TiB 仮定
ストレージ圧縮率 10 % 仮定

データ圧縮や、NFS nconnect などの機能がサポートされているため、単純なスペック以上のパフォーマンスは期待できるのではないかと思います。

おわりに

あとで振り返るときにまた真剣に英語のドキュメントを読み漁るのがしんどいので日本語でまとめました。