AWS ParallelCluster 3.9.0 で追加された、コンピュートフリートを停止せずにクラスターの設定を変更できる新機能を試してみました。
検証結果
- 新規パーティションの追加はコンピュートフリートを停止せずに変更可能
- パーティションの最大ノード数の変更はコンピュートフリートを停止せずに変更可能
- 既存パーティションのコンピュートリソースの変更は、従来通りコンピュートフリートの停止が必要
検証内容と手順
現在のパーティション数と、コンピュートノードの最大数を確認し、コンピュートフリートを停止せずに変更できるのか検証します。ParallelCluster のバージョンは 3.9.0 を使用します。
- コンフィグ変更前の 2 つのパーティションを確認
- コンフィグを変更し、以下の変更をコンピュートフリートを停止せずに行えるか検証
test1
パーティションの最大ノード数を 10 から 20 に増加- 新規パーティション
queue2
を追加
- 変更後のパーティション設定を確認
- 新規追加の
queue2
パーティションでジョブを実行し、動作を確認
現状確認
ヘッドノードにログインし、test1
とqueue1
の 2 つのパーティションがあり、それぞれ最大ノード数 10 であることを確認しました。
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
test1* up infinite 10 idle~ test1-dy-test1-[1-10]
queue1 up infinite 10 idle~ queue1-dy-queue1-[1-10]
クラスターの構成を管理しているマシンから、コンピュートフリートのステータスはRUNNING
状態であることを確認しました。
$ pcluster describe-cluster --cluster-name $CLUSTER_NAME | jq -r .computeFleetStatus
RUNNING
コンフィグの変更内容
ParallelCluster のコンフィグを以下のように変更しました。
test1
パーティションのMaxCount
を 10 から 20 に増やした- 新規パーティション
queue2
を追加した
test1 パーティションの変更内容
MacCount
数を 10 から 20 へ増やしました。
SlurmQueues:
# ------ Test 1 ------
- Name: test1
ComputeResources:
- Name: test1
Instances:
- InstanceType: t3.micro
- InstanceType: t3a.micro
MinCount: 0
MaxCount: 20 # 10 から 20 へ変更
queueu2 パーティションを新規追加
queue2
として新たなパーティション一式追記しました。
# ------ Compute 2 ------
- Name: queue2
ComputeResources:
- Name: queue2
Instances:
- InstanceType: m7i.large
MinCount: 0
MaxCount: 5
DisableSimultaneousMultithreading: true
ComputeSettings:
LocalStorage:
RootVolume:
Size: 40
Encrypted: true
VolumeType: gp3
Iops: 3000
Throughput: 125
CapacityType: SPOT
AllocationStrategy: capacity-optimized
Networking:
SubnetIds:
- subnet-0c82bb28e119e2aa8
- subnet-0296a0c8515ed3bdc
- subnet-0089ff187d1f54258
PlacementGroup:
Enabled: false
# CustomActions:
# OnNodeConfigured:
# Script: s3://hpc-dev-custom-boostrap-files-for-parallelcluster/install/apptainer.sh
Iam:
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
S3Access:
- BucketName: hpc-dev-custom-boostrap-files-for-parallelcluster
EnableWriteAccess: false
クラスターの更新
ドライランでバリデーションチェックを行った後、クラスターを更新しました。約 7 分で更新が完了しました。
$ pcluster update-cluster --cluster-name $CLUSTER_NAME \
--cluster-configuration $CONFIG_NAME
変更後のクラスター確認
既存パーティションの最大ノード数の変更確認
sinfo
コマンドで以下を確認しました。
test1
パーティションのノード数が 20 に増加queue2
パーティションが新規追加
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
test1* up infinite 20 idle~ test1-dy-test1-[1-20]
queue1 up infinite 10 idle~ queue1-dy-queue1-[1-10]
queue2 up infinite 5 idle~ queue2-dy-queue2-[1-5]
新規パーティションの動作確認
queue2
パーティションを指定してジョブをサブミットし、コンピュートノードが正常に起動することを確認しました。
$ sbatch -q queue2 test.sh
番外編: 既存のパーティションを変更してみたらできなかった
既存のパーテションqueue1
のコンピュートリソース(インスタンスタイプ)を変更してドライランしたときの結果です。既存のパーティションの設定変更は従来どおりコンピュートフリートの停止が必要でした。
{
"message": "Update failure",
"updateValidationErrors": [
{
"parameter": "Scheduling.SlurmQueues[queue1].ComputeResources[queue1].Instances",
"requestedValue": "-",
"message": "All compute nodes must be stopped. Stop the compute fleet with the pcluster update-compute-fleet command",
"currentValue": {
"InstanceType": "m7i.8xlarge"
}
},
{
"parameter": "Scheduling.SlurmQueues[queue1].ComputeResources[queue1].Instances",
"requestedValue": "-",
"message": "All compute nodes must be stopped. Stop the compute fleet with the pcluster update-compute-fleet command",
"currentValue": {
"InstanceType": "m7a.4xlarge"
}
}
],
--- 省略 ---
まとめ
ParallelCluster 3.9.0 の新機能により、コンピュートフリートを停止せずに新規パーティションの追加や、パーティションの最大ノード数の変更ができるようになりました。ただし、既存パーティションを変更する場合は、従来通りコンピュートフリートの停止が必要でした。
おわりに
今回は比較的単純な設定変更でしたが、この新機能によりクラスターの設定変更が少し気軽になりました。この項目はコンピュートフリート停止しなくても OK と覚えておいたり、いちいちドキュメント確認するくらいなら、素直にコンピュートフリート停止して更新かけるのも悪くない気がします。でも、新たなパーティション追加をサクッと実施できるのは魅力的だったので、私はできる限りコンピュートフリート停止せずに運用したくなりました。