AWS ParallelCluster のストレージ選定 FSx for OpenZFS と FSx for Lustre 最小構成のランニングコストを調べてみた

高速なストレージを最小構成で用意したときのランニングコストが気になって調べました。
2022.08.11

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

計算するときはある程度高いストレージ性能が欲しいです。「高速なストレージ = 価格が高いイメージ」ですが、実際のところストレージのランニングコストは如何ほどなものか気になりました。そこで今回は FSx for OpenZFS と FSx for Lustre を最小構成で起動し維持する場合の利用費と、最小構成時のストレージ性能は実用的なのか?について調べました。

調査結果

2022年8月11日現在の東京リージョンの価格になります。

FSx for OpenZFS FSx for Lustre
最小構成の月額 $22.4 $205
同等構成の月額 $218 $205
  • Lustre の性能が必要なときは素直に FSx for Lustre を選択
  • 数万 〜 数十万 IOPS も性能を必要としないときは FSx for OpenZFS でスペック調整も検討
    • ディスクサイズ、スループット、IOPS の指定で利用費が変わります
  • FSx for OpenZFS は最小構成だと HPC ワークロードでは実用的ではない
    • IOPS の値のみを比較するとヘッドノードから共有される EBS より劣ることになる
    • HPC ワークロードで利用するときは要スペック調整

FSx for OpenZFS をサポート

AWS ParallelCluster 3.2.0 で FSx for OpenZFS のマウントがサポートされました。これまでは高性能ストレージが必要となったら唯一サポートしていた FSx for Lustre の一択でした。v3.2 のアップデートで FSx for OpenZFS がサポートされストレージの選択幅が広がりました。FSx for OpenZFS を中心に調べていきます。

FSx for OpenZFS についてはリリース時の記事もご参照ください。

ストレージスペック比較

スペック比較は AWS 公式の FSx シリーズ選択ガイドにまとまっています。

個人的に比較したい上限値のスペックを抜き出しました。

FSx for OpenZFS FSx for Lustre
レイテンシー 0.5 ms 以下 1ms 以下
最大スループット 4~12.5 GB/s 1000 GB/s
1 つのクライアントあたりの最大スループット 12.5 GB/s 37.5 GB/s
最大 IOPS 100万 IOPS 数100万 IOPS
ファイルシステムの最大サイズ 512 TiB 数 PB
クライアントの互換性 Windows、Linux、macOS Linux
プロトコルのサポート NFS 3、4.0、4.1、4.2 最適なパフォーマンスを発揮するカスタム (POSIX 準拠) プロトコル
スループットと IOPS レベルの選択 スループットと IOPS スループットのみ
可用性 SLA シングル AZ: 99.5% シングル AZ: 99.5%
S3 データセットの自動インポート/エクスポート

最小構成のストレージ性能

最小構成時のスペックを調査します。FSx for OpenZFS, Lustre ともにデータ圧縮が効くためスループットの向上を見込めるのですが、圧縮率によってスループットが変動するため今回はデータ圧縮を考慮しないこととします。

パフォーマンスは以下のドキュメントを参考にしました。

FSx for OpenZFS

各種パラメータの上限下限値が決まるキーとなるパラメータはスループットです。下限値のスループット 64 MB/s 選択時の性能です。

FSx for OpenZFS 備考
起動に必要な最低ディスクサイズ 64 GiB 下限値を指定
スループット 64 MB/s 下限値を選択
インメモリキャッシュサイズ 1.4 GB 読み取り専用
ネットワークスループット 200 - 3,200 MB/s ベースライン - バースト時
ディスクスループット 64 - 1,024 MB/s ベースライン - バースト時
デイスク IOPS 2,500 IOPS Automatic provisioned

IOPS の注意事項

64 MB/s スループット選択時の最大ディスク IOPS はベースライン 2,500 IOPSで、バースト時 40,000 IOPS です。 IOPS の指定で Automatic provisioned 選択時は 1GiB あたり 3 IOPS が提供されます。最小ディスクサイズで起動すると 64 GiB * 3 = 192 IOPS と非常に低いIOPS になり、ベースラインの 2,500 IOPS が適用されるものと思われます。。ディスクサイズが大きいときはある程度の IOPS 性能を見込めますが、最小限のディスクサイズ指定すると標準的な EBS(gp3)の 3,000 IOPS より劣った IOPS 性能です。

The maximum IOPS levels you can achieve are defined by the lower of: the maximum IOPS supported by your file server’s disk I/O connection, and the maximum SSD disk IOPS supported by your disks. In order to drive the maximum performance supported by the server-disk connection, you should configure your file system’s provisioned SSD IOPS to match the maximum IOPS in the table above.

Amazon FSx for OpenZFS performance - FSx for OpenZFS

そのため、追加課金で任意のIOPS指定できるUser-provisionedがあります。大きなディスクサイズを必要としないときは IOPS を明示的に指定した利用をご検討ください。

通常の EBS とは

EBS(gp3)は 3000 IOPS, スループット 125 MB/s までは追加課金なしで利用できます。

Amazon EBS ボリュームの種類 - Amazon Elastic Compute Cloud

FSx for Lustre

各種パラメータの上限下限値が決まるキーとなるパラメータはディスクサイズです。下限値のディスクサイズ 1.2TiB 選択時の性能です。また、永続的な SSD ストレージ(Persistent_2)の利用を想定しています。

FSx for Lustre 備考
起動に必要な最低ディスクサイズ 1.2 TiB 下限値を指定
スループット 125 MB/s 下限値を選択
インメモリキャッシュサイズ 3.4 GiB 読み取り専用
ネットワークスループット 320 - 1,300 MB/s ベースライン - バースト時
ディスクスループット 125 - 500 MB/s ベースライン - バースト時
ネットワーク IOPS(ディスク IOPS) 数万 - 数十万 IOPS ベースライン - バースト時

スループットの注意事項

インメモリキャッシュに載っていないデータを読み込むときと、データを書き込むときのスループット値は基本的にはディスクスループットを参考にしてください。

When you read data that is stored on the file server's in-memory or SSD cache, file system performance is determined by the network throughput. When you write data to your file system, or when you read data that isn't stored on the in-memory cache, file system performance is determined by the lower of the network throughput and disk throughput.

Amazon FSx for Lustre performance - FSx for Lustre

ちなみに FSx for Lustre は複数の OST(Object Storage Target)をストライピングしてディスクアクセス性能を稼ぐこともできます。今回は最小構成なのでシングルの OST のためストライピングは考慮していません。

最小構成のスペック比較

FSx for OpenZFS はバースト時の性能は高いですが、最小構成だと IOPS が低いので注意が必要です。

FSx for OpenZFS FSx for Lustre
起動に必要な最低ディスクサイズ 64 GiB 1.2 TiB
スループット 64 MB/s 125 MB/s
インメモリキャッシュサイズ 1.4 GB 3.4 GiB
ネットワークスループット 200 - 3,200 MB/s 320 - 1,300 MB/s
ディスクスループット 64 - 1,024 MB/s 125 - 500 MB/s
デイスク IOPS 2,500 IOPS 数万 - 数十万 IOPS

最小構成のランニングコスト

2022年8月11日現在の東京リージョンの価格になります。

最小構成ですと FSx for Lustre は FSx for OpenZFS に比べ約9倍のランニングコストがかかるのですが、IOPS の性能差が大きすぎてフェアではないです。FSx for OpenZFS を同等の構成に調整してみます。

FSx for OpenZFS FSx for Lustre
最小構成の月額 $22.4 $205

FSx for Lustre の最小構成に合わせる

FSx for OpenZFS のスペックを Lustre の最小構成に近しい値へ調整しました。スループットは OpenZFS が優れ、IOPS は Lustre に歩があります。

FSx for OpenZFS FSx for Lustre
起動に必要な最低ディスクサイズ 1.2 TiB 1.2 TiB
スループット 128 MB/s 125 MB/s
インメモリキャッシュサイズ 2.8 GB 3.4 GiB
インメモリキャッシュからのネットワークスループット 400 - 3,200 MB/s 320 - 1,300 MB/s
ディスクスループット 128 - 1,024 MB/s 125 - 500 MB/s
デイスク IOPS 10,000 IOPS 数万 - 数十万 IOPS

IOPS は妥協したにもかかわらず FSx for OpenZFS の方が高額になりました。

FSx for OpenZFS FSx for Lustre
ほぼ同構成の月額 $218 $205

Lustre クラスの性能を要求するときは素直に FSx for Lustre を選択した方が良さそうですね。

OpenZFS 見積もりポイント

計算元のデータはこちらのリンクをご確認ください。

OpenZFS の見積もりポイントは以下になります。

  • SSD Storage capacity で必要容量を指定
  • Throughput Capacity で任意の値を選択
  • User-provisioned を選択
    • SSD IOPS で必要な性能を指定

ディスクサイズ小さいかつ、IOPS自動設定のときは IOPS の性能が足を引っ張ることが予想されます。実用的な IOPS 値を明示的に指定してみて見積もってみてください。

総括

FSx for OpenZFS 最小構成の IOPS が心もとないです。要求される性能を満たす様にディスクサイズを増やし IOPS を稼ぐか、IOPS を明示的に指定して要求スペックを満たすよう調整することを推奨します。一方で数万 - 数十万 IOPS を求めていない場合は、適切なスペックに調整した OpenZFS を採用すると費用対高価の高いストレージとして利用できることがわかりました。

FSx for Lustre のイケている機能に Lustre ファイルシステムを通して透過的に S3 バケットへアクセスが可能になります。大容量のデータを取り扱う HPC ワークロードでは S3 の利用がかかせません。その S3 バケットに ParallelCluster(EC2)から直接アクセスできる嬉しい機能です。

月額料金(再掲)

2022年8月11日現在の東京リージョンの価格になります。

FSx for OpenZFS FSx for Lustre
最小構成の月額 $22.4 $205
同等構成の月額 $218 $205

おわりに

「必要なとき必要な分だけ計算リソースが欲しい」という願いは AWS ParallelCluster や AWS Batch の登場により叶えてくれました。 「HPC ワークロードに耐えられる必要なとき必要な分だけのストレージ性能が欲しい」という願いを叶えるために Temporary な Lustre サービスが生まれ S3 へ透過的にアクセスのできてかつ、高速なキャッシュレイヤーとして働いてくれると幸せになれる気がします。そんなサービスをお待ちしております。