AWS ParallelCluster 3.6.0 で RHEL 8 をサポートしました
2023年5月22日に AWS ParallelCluster 3.6.0 がリリースされました。v3.5.0 から約2か月ぶりのマイナーアップデートとなります。
注目のアップデート紹介
個人的に注目しているポイントや、このアップデートの目玉(らしきもの)をピックアップしています。リリースノートからの情報ではアップデート前後の違いを把握することが難しいため、私の知っている範囲で補足して紹介します。
- ParallelClusterで利用できる OS に RHEL 8.7 のサポートが追加
- クラスターあたりの最大キュー数が50個、合計50個のコンピュートリソースをサポート
- ユーザーガイドによると最大キュー数は100個となっています
- CloudFormation カスタムリソースをサポート
- Slurm 設定を ParallelCluster のコンフィグファイル(YAML)からカスタマイズをサポート
- 1つのカスタムスクリプトから複数のスクリプトを呼び出しをサポート
- EC2 の詳細モニタリングを有効化するオプション
DetailMonitoring
が追加 - CloudWatch ダッシュボードにヘッドノードのディスク使用率と、メモリ使用率が追加
- 新たに CloudWatch Agent でメトリクスを取得するようになりました
- CloudWatch Logs のデフォルト保持期間が180日に変更
- 従来は14日保持設定でした。
アップデート詳細はリリースノートをご確認ください。
ParallelClusterで利用できる OS に RHEL 8.7 のサポートが追加
今回の目玉のアップデートはなんといっても RHEL8 をサポートしたことです。
今まで長らく RHEL 系はサポートはされていませんでした。オンプレスパコンで RHEL をご利用頂いた場合はクラウド HPC(AWS ParallelCluster)への移行を検討される際には Amazon Linux 2 を紹介しておりましたが、Amazon Linux 2 の EoL は2025年6月までとなっており、サポート終了が見えている微妙な時期です。後継の Amazon Linux 2023 は ParallelCluster ではまだサポートされておりません。また Fedora に近しい OS のため、RHEL からの移行先としては悩ましいところがあります。
RHEL 8 は Amazon Linxu 2 や Ubuntu などの通常の Linux と比べると利用費が高くなりますが、安定したクラスタ環境を構築にするには非常に良い選択肢が増えました。
Image section - AWS ParallelCluster
RHEL 起動の動作検証は本ブログの後半で紹介します。
クラスターあたりの最大キュー数が50個、合計50個のコンピュートリソースをサポート
ユーザーガイドの記述を正とすると以下になります。いずれにせよ最大数が増えたことには変わりなたいめ、1つのクラスターでより複数ワークロードに耐えられる構成を組めるのではないでしょうか。
- クラスターあたりの最大キュー数は100
- 各クラスタあたりの最大コンピュートリソース数は150
- 各キューあたり最大コンピュートリソース数は40
Increase the limit on the maximum number of queues per cluster from 10 to 100. Each cluster can have up to 150 compute resources, and each queue can have up to 40 compute resources. Release notes and document history - AWS ParallelCluster
CloudFormation カスタムリソースをサポート
ParallelCluster管理外のネットワーク、共有ストレージも ParallelCluster の CloudFormation スタックから管理することも可能になりました。
For example, you can configure cluster external resources such as network, shared storage, and security group infrastructure in a CloudFormation stack.
AWS CloudFormation custom resource - AWS ParallelCluster
このアップデートを見たときに私は ParallelCluster の CloudFormation スタックからカスタムリソースを使うユースケースが思いつきませんでした。ユーザーガイドに目を通してはじめて「そういう需要もあったのね」と思いました。
Slurm 設定を ParallelCluster のコンフィグファイル(YAML)からカスタマイズをサポート
slurm.conf
ファイルのみ ParallelCluster のコンフィグから設定を変更できるようになりました。
従来はヘッドノード起動後にログインして設定ファイルを編集するか、Ansible などの構成管理ツールで設定を流し込むなどしていたと思います。一部の設定は ParallelCluster のコンフィグファイルに寄せて管理することもできそうですね。
Slurm configuration customization - AWS ParallelCluster
1つのカスタムスクリプトから複数のスクリプトを呼び出しをサポート
Sequence
設定が追加されたことによりカスタムスクリプト内から他に用意したスクリプトを呼び出して実行できるようになりました。カスタムスクリプトの肥大化を避けられ、管理しやすく良い追加機能ですね。
[...] CustomActions: OnNodeStart: # Script URL. This is run before any of the bootstrap scripts are run Script: s3://bucket-name/on-node-start.sh Args: - arg1 # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run. Sequence: - Script1: s3://bucket-name/on-node-start1.sh Args: - arg1 - Script2: s3://bucket-name/on-node-start2.sh Args: - arg1 [...]
Custom bootstrap actions - AWS ParallelCluster
EC2 の詳細モニタリングを有効化するオプションDetailMonitoring
が追加
コンピュートノードのインスタンスに対して詳細モニタリングを有効化できるオプションが追加されました。メトリクスを確認してワークロードに応じたチューニングするときには便利そうですね。詳細モニタリングを有効化すると別途課金が発生しますのでご留意ください。
Monitoring: Logs: CloudWatch: Enabled: true DeletionPolicy: "Delete" Dashboards: CloudWatch: Enabled: true DetailedMonitoring: true
Monitoring section - AWS ParallelCluster
CloudWatch ダッシュボードにヘッドノードのディスク使用率と、メモリ使用率が追加
ヘッドノードは CloudWatch Agent により、ディスク使用率と、メモリ使用率を取得してくれるようになりました。そして、ダッシュボードにも表示さてくれます。デフォルトでメモリ使用率を取れるようになったのはありがたいですね。
Amazon CloudWatch dashboard - AWS ParallelCluster
RHEL8 を起動してみた
OS は RHEL8を指定し、コンピュートノードは RHEL8 がスポットインスタンスで起動できるか検証してみます。
サンプルコンフィグ紹介
作成したコンフィグは以下になります。
Region: ap-northeast-1 Image: Os: rhel8 Tags: - Key: Name Value: ParallelCluster360 # ---------------------------------------------------------------- # Head Node Settings # ---------------------------------------------------------------- HeadNode: InstanceType: t3.micro Networking: ElasticIp: false SubnetId: subnet-035be95eeaa091603 Ssh: KeyName: sandbox-key LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Compute Node Settings # ---------------------------------------------------------------- Scheduling: Scheduler: slurm SlurmSettings: ScaledownIdletime: 5 SlurmQueues: # ------ Compute 1 ------ - Name: queue1 ComputeResources: - Name: queue1 Instances: - InstanceType: c6i.large MinCount: 0 MaxCount: 10 DisableSimultaneousMultithreading: true ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT AllocationStrategy: lowest-price Networking: SubnetIds: - subnet-035be95eeaa091603 PlacementGroup: Enabled: true Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Shared Storage Settings # ---------------------------------------------------------------- SharedStorage: - MountDir: /mnt/efs-1zone Name: efs-1zone StorageType: Efs EfsSettings: FileSystemId: fs-0f1158ade79354809 # ---------------------------------------------------------------- # Other Settings # ---------------------------------------------------------------- Monitoring: Logs: CloudWatch: Enabled: true # RetentionInDays: 30 DeletionPolicy: "Delete" Dashboards: CloudWatch: Enabled: true DetailedMonitoring: true
クラスター作成
サンプルコンフィグからクラスターを作成します。
$ pcluster version { "version": "3.6.0" } $ pcluster create-cluster -n ParallelCluster-v360 -c sample360.yaml
ヘッドノード、コンピュートノードの確認
クラスター作成後、起動してくるヘッドノードと、テストジョブをサブミットしてコンピュートノードの様子を確認しました。
ヘッドノード
プラットフォームは待望の RHEL と表示されています。
コンピュートノード
テストジョブをサブミットし、コンピュートノードが起動してきました。
プラットフォームはこちもら同様に RHEL と表示されています。ちなみにヘッドノードと、コンピュートノードで異なる OS は利用できません。
コンピュートノードはスポットインスタンス指定にしていました。RHEL は指定どおりにスポットで起動してくれました。
以上で簡単ではありますがサンプルコンフィグによる RHEL の起動確認は終わりです。
おわりに
ParallelCluster 3.6.0 のアップデート内容は良い機能追加が多くて熱いアップデートでした。気になる機能は別途検証してブログでご紹介します。ひとまず 3.6.0 リリースの情報まとめでした。