東京リージョンで「C6id」「M6id」「R6id」の EC2 インスタンスが利用可能になったので AWS ParallelCluster から使ったみた
第6世代の EC2 インスタンスタイプに NVMe ベースの SSD ブロックレベルインスタンスストレージを搭載したdの付くインスタンスタイプが東京リージョンで利用可能になりました。AWS ParallelCluster のクラスターに組み込んで起動確認してみました。
2022年5月26日から一部リージョンでは利用可能でしたので東京リージョンは4か月遅れの提供となりました。
dの特徴である高速なローカルストレージはインスタンスストアと呼ばれる非永続的なストレージです。
AWS ParalelCluster とインスタンスストア
AWS ParalelCluster でインスタンスストアを持つインスタンスを利用するときは疎結合なHPC ワークロードで単一のコンピュートノードで実行するアプリケーション向きです。
画像引用: サービスアップデート Compute 編:HPC on AWS アップデート - YouTube
ひとつのジョブが多数のインスタンスをまたいで共通のストレージへアクセスが必要な場合ですと、ローカルストレージであるインスタンスストアへの他ノードからのアクセスが問題になります。
密結合 HPC ワークロードでも他のノードと共有しない一時ファイル、中間ファイルを大量にローカルに生成するようなワークロードでしたら有効活用はできるかもしれません。
複数のノードから共通でアクセスするストレージが必要な場合は、ヘッドノードから共有する EBS や、ストレージサービス(EFS、FSx シリーズ)をご利用を検討ください。
クラスター作成準備
c6id
インスタンスがどこの AZ で起動できるか確認しておきましょう。
試しにc6id.large
を検索すると 2AZ での提供でした。large ですと実際にはスペック不足でしょうからコンピュートノードで利用したいインスタンスタイプを指定して確認してください。
$ aws ec2 describe-instance-type-offerings --location-type availability-zone-id --region ap-northeast-1 --filters Name=instance-type,Values=c6id.large { "InstanceTypeOfferings": [ { "InstanceType": "c6id.large", "LocationType": "availability-zone-id", "Location": "apne1-az4" }, { "InstanceType": "c6id.large", "LocationType": "availability-zone-id", "Location": "apne1-az2" } ] }
現時点では128vCPU、256GB メモリのc6id.32xlarge
も 2AZ で提供でした。※ 多くのケースでは Hyper-Threading を無効化して計算するため、物理コア換算ですと64core です。
$ aws ec2 describe-instance-type-offerings --location-type availability-zone-id --region ap-northeast-1 --filters Name=instance-type,Values=c6id.32xlarge { "InstanceTypeOfferings": [ { "InstanceType": "c6id.32xlarge", "LocationType": "availability-zone-id", "Location": "apne1-az4" }, { "InstanceType": "c6id.32xlarge", "LocationType": "availability-zone-id", "Location": "apne1-az2" } ] }
ゾーン ID のマッピング
Location
で表示されたゾーン IDはap-northeast-1?
でいうとなに?
AWS アカウントごとにマッピングが異なっています。ご自身の AWS アカウントでご確認いただく必要があります。。私の AWS アカウントではap-northeast-1a
と、ap-northeast-1d
でc6id
が提供されていました。
$ aws ec2 describe-availability-zones --region ap-northeast-1 { "AvailabilityZones": [ { "State": "available", "OptInStatus": "opt-in-not-required", "Messages": [], "RegionName": "ap-northeast-1", "ZoneName": "ap-northeast-1a", "ZoneId": "apne1-az4", "GroupName": "ap-northeast-1", "NetworkBorderGroup": "ap-northeast-1", "ZoneType": "availability-zone" }, { "State": "available", "OptInStatus": "opt-in-not-required", "Messages": [], "RegionName": "ap-northeast-1", "ZoneName": "ap-northeast-1c", "ZoneId": "apne1-az1", "GroupName": "ap-northeast-1", "NetworkBorderGroup": "ap-northeast-1", "ZoneType": "availability-zone" }, { "State": "available", "OptInStatus": "opt-in-not-required", "Messages": [], "RegionName": "ap-northeast-1", "ZoneName": "ap-northeast-1d", "ZoneId": "apne1-az2", "GroupName": "ap-northeast-1", "NetworkBorderGroup": "ap-northeast-1", "ZoneType": "availability-zone" } ] }
クラスターのコンフィグ作成
c6id.large
をコンピュートノードで起動できるコンフィグを作成しました。こちらのコンフィグからクラスターを作成します。
項目 | 値 |
---|---|
ParallelCluster | 3.2.0 |
OS | Ubuntu 20.04 |
CPU | Intel |
Head Node | t3.micro |
Compute Node | c6id.large |
Simultaneous Multi-Threading | 無効 |
Placement group | 有効 |
Region: ap-northeast-1 Image: Os: ubuntu2004 Tags: - Key: Name Value: UbuntuCluster # ---------------------------------------------------------------- # 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: # ------ Debug 1 without Postinstall ------ - Name: debug-1 ComputeResources: - Name: debug-without-postinstall InstanceType: t3.micro MinCount: 0 MaxCount: 10 DisableSimultaneousMultithreading: false ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT Networking: SubnetIds: - subnet-035be95eeaa091603 PlacementGroup: Enabled: false Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ------ Debug 2 with Postinstall ------ - Name: debug-2 ComputeResources: - Name: debug-run-postinstall InstanceType: t3.micro MinCount: 0 MaxCount: 10 DisableSimultaneousMultithreading: false ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT Networking: SubnetIds: - subnet-035be95eeaa091603 PlacementGroup: Enabled: false CustomActions: OnNodeConfigured: Script: s3://hpc-dev-postinstall-files/sample-ubuntu-docker/postinstall.sh Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ------ Compute 1 ------ - Name: c6idlarge ComputeResources: - Name: c6idlarge InstanceType: c6id.large MinCount: 0 MaxCount: 10 DisableSimultaneousMultithreading: true ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT Networking: SubnetIds: - subnet-035be95eeaa091603 PlacementGroup: Enabled: true CustomActions: OnNodeConfigured: Script: s3://hpc-dev-postinstall-files/sample-ubuntu-docker/postinstall.sh 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
コンピュートノードの確認
ヘッドノードからテストジョブを投げてコンピュートノードを起動させました。
コンピュートノードへログイン
インスタンスストアは/scratch
にマウントされています。ジョブを投げて計算するときは/scratch
を指定して一時ファイルを書き込みしたり、計算前に S3 からデータをダウンロードして保存して利用できます。
計算結果を/scratch
に書き出した場合はコンピュートノード停止ともに/scratch
上のデータは削除されますので注意してください。ジョブの最後で共有ストレージや、S3 へアップロードなどの永続的なストレージへ退避処理を忘れずに。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 34G 18G 16G 53% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 385M 972K 384M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/loop4 62M 62M 0 100% /snap/core20/1581 /dev/loop5 26M 26M 0 100% /snap/amazon-ssm-agent/5656 /dev/loop3 47M 47M 0 100% /snap/snapd/16292 /dev/nvme0n1p15 105M 5.2M 100M 5% /boot/efi /dev/loop6 68M 68M 0 100% /snap/lxd/22753 /dev/loop1 56M 56M 0 100% /snap/core18/2538 /dev/loop7 48M 48M 0 100% /snap/snapd/17029 10.0.1.27:/home 34G 18G 17G 52% /home 10.0.1.27:/opt/parallelcluster/shared 34G 18G 17G 52% /opt/parallelcluster/shared /dev/mapper/vg.01-lv_ephemeral 108G 61M 103G 1% /scratch 10.0.1.27:/opt/intel 34G 18G 17G 52% /opt/intel fs-0f1158ade79354809.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /mnt/efs-1zone 10.0.1.27:/opt/slurm 34G 18G 17G 52% /opt/slurm /dev/loop8 64M 64M 0 100% /snap/core20/1623 /dev/loop9 56M 56M 0 100% /snap/core18/2566 tmpfs 385M 0 385M 0% /run/user/0
確認できたこと
c6id
インスタンスの提供 AZ は要確認- AWS ParalelCluster 3.2.0 で
c6id.large
をコンピュートノードとして起動成功 - インスタンスストアは
/scratch
に自動マウントされる
おわりに
第5世代(C5,M5,R5)と比べ第6世代(C6i,M5i,R6i)は15%優れたコストパフォーマンスとなっています。オンデマンド料金は若干値上がりしているのですが、スポットインスタンスなら誤差の範囲ですので、スポットインスタンスの割引率を見て積極的に利用を検討してもよろしいのではないでしょうか。
現時点では C5d も C6id もスポットインスタンス料金は70%割引きでした。時間とともに第5世代の在庫が増えて割引率が良くなり、第6世代は割引率が渋くなる可能性はあります。計算するタイミングでスポットインスタンスの料金を確認してみると、よりコストパフォーマンス良くお使いいただけるかと思います。