AWS ParallelCluster コンピュートフリートを停止しなくてもクラスターの設定変更をできる新機能を試してみた

多少の作業と5分ほどの待ち時間が減っただけなのですが地味にありがたいアップデートでした。
2024.04.03

AWS ParallelCluster 3.9.0 で追加された、コンピュートフリートを停止せずにクラスターの設定を変更できる新機能を試してみました。

検証結果

  • 新規パーティションの追加はコンピュートフリートを停止せずに変更可能
  • パーティションの最大ノード数の変更はコンピュートフリートを停止せずに変更可能
  • 既存パーティションのコンピュートリソースの変更は、従来通りコンピュートフリートの停止が必要

検証内容と手順

現在のパーティション数と、コンピュートノードの最大数を確認し、コンピュートフリートを停止せずに変更できるのか検証します。ParallelCluster のバージョンは 3.9.0 を使用します。

  • コンフィグ変更前の 2 つのパーティションを確認
  • コンフィグを変更し、以下の変更をコンピュートフリートを停止せずに行えるか検証
    • test1パーティションの最大ノード数を 10 から 20 に増加
    • 新規パーティションqueue2を追加
  • 変更後のパーティション設定を確認
  • 新規追加のqueue2パーティションでジョブを実行し、動作を確認

現状確認

ヘッドノードにログインし、test1queue1の 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 と覚えておいたり、いちいちドキュメント確認するくらいなら、素直にコンピュートフリート停止して更新かけるのも悪くない気がします。でも、新たなパーティション追加をサクッと実施できるのは魅力的だったので、私はできる限りコンピュートフリート停止せずに運用したくなりました。