AWS ParallelCluster 同一キューに EFA サポート/非サポートインスタンスを混在可能でしょうか
はじめに
AWS ParallelCluster で Elastic Fabric Adapter (EFA)対応インスタンスと非対応インスタンスを同一キューに混在させたいケースがありました。本記事では、その設定方法と検証結果を共有します。
コンピュートノードを起動するための同じキュー内に EFA サポート/非サポートインスタンスを混在できるのだろうか?
ユースケース
想定される利用シナリオ
EFA 対応/非対応インスタンスの混在構成が有効なケースは、特定の AZ でのみ提供されるインスタンスタイプの利用かつ、疎結合なワークロードの場合においてインスタンスが起動できないリスクを軽減したいときです。
画像引用: HPC ワークロードを加速する HPC インスタンスと構成パターン
具体的な背景
ある程度の物理コア数が必要な計算処理において、単一インスタンスでまかなえる範囲では hpc6a.48xlarge がコストパフォーマンスに優れていました。しかし、このインスタンスタイプは特定の AZ でしか提供されていません。インスタンスの需要増に伴い起動できないリスクを考慮して他のインスタンスタイプと混在を検討しました。順当にいけば hpc7a.48xlarge だが、コストが高いため c7a.24xlarge と m7a.24xlarge を比較検討したところ、今回のワークロードでは計算速度に大きな差はなかった。 結果として、コストを優先し、EFA 非サポートのインスタンスタイプと混在可能か検証することになった。
検証環境
項目 | 値 |
---|---|
ParallelCluster バージョン | 3.11.1 |
リージョン | us-east-2 |
OS | Amazon Linux 2023 |
使用したインスタンスタイプ
- EFA サポート: hpc6a.48xlarge
- EFA 非サポート:
- c7a.24xlarge
- m7a.24xlarge
検証結果
- EFA サポート/非サポートインスタンスは同一キュー内で混在が可能
- EFA の設定は無効化に設定する必要あり
ParallelCluster の設定ファイル
以下のように、同一キュー内に EFA サポート/非サポートインスタンスを混在させることができました。
ComputeResources:
- Name: test
Instances:
- InstanceType: hpc6a.48xlarge # EFA サポート
- InstanceType: m7a.24xlarge # EFA 非サポート
- InstanceType: c7a.24xlarge # EFA 非サポート
MinCount: 0
MaxCount: 10
DisableSimultaneousMultithreading: true
Efa:
Enabled: false # EFA は無効化必須(デフォルトは無効)
クラスター作成・更新時にメッセージについて
EFA をサポートしているインスタンスタイプで EFA を無効化していると、以下のメッセージが出力されます。今回のケースでは理解した上で設定しているため無視してください。
{
"level": "WARNING",
"type": "InstancesEFAValidator",
"message": "The EC2 instance type(s) selected (hpc6a.48xlarge) for the Compute Resource hpc6a48xlarge support enhanced networking capabilities using Elastic Fabric Adapter (EFA). EFA enables you to run applications requiring high levels of inter-node communications at scale on AWS at no additional charge. You can update the cluster's configuration to enable EFA (https://docs.aws.amazon.com/parallelcluster/latest/ug/efa-v3.html)."
},
まとめ
- EFA サポート/非サポートインスタンスは同一キューで混在可能
- EFA は無効化の設定が必須
同一キューに追加できるインスタンスの条件は以下の記事を参照ください。
おわりに
本記事では、EFA サポートと非サポートインスタンスタイプを同一キューで混在させる方法と注意点を解説しました。リソースの不足リスクを下げつつ、必要十分な性能を得るためのアイディアになれば幸いです。実際のワークロードに合わせて柔軟な構成を検討してみてください。