本文以使用 VASP 软件进行高性能计算介绍如何配置自动伸缩策略。
背景信息
当您需要每天不定时提交作业,使用 THPC 集群几个小时进行大规模计算, 然后释放节点,您可以针对不同的作业类型,配置不同的伸缩策略。配置伸缩策略后,系统可以根据实时负载自动增加或减少计算节点。可以帮您合理利用资源,减少使用成本。
前置条件
操作步骤
1. 安装最新版本的 TCCLI 命令工具 ,并进行 初始化配置 请参见 THPC 地域列表。
2. 使用 CreateCluster 接口创建一个有 1 个 管控节点 0 个 计算节点 的 THPC 集群。
注意
需要把 AutoScalingType 设置为 THPC_AS,调用后续步骤的 SetAutoScalingConfiguration 接口才会生效。
Placement 为 TCCLI Region 地域对应可用区。
VirtualPrivateCloud 设置需要是集群同可用区的 VPC ID,子网 ID。
管控节点登录密码设置请参见 LoginSettings。
集群创建时如果您不指定挂载目录 ,将自动为您在 /opt 目录下创建并挂载 CFS,所有节点共享这一目录,您可以在这个目录下安装您业务需要的软件,本文默认您已在 /opt 目录下安装编译完成依赖的 Intel oneAPI 和 VASP 软件。
执行命令:
tccli thpc CreateCluster --cli-input-json file://./test.json
test.json 文件参数配置可参见:
{"Placement": {"Zone": "ap-chongqing-1"},"ManagerNodeCount": 1,"ManagerNode": {"InternetAccessible": {"InternetMaxBandwidthOut": 10},"InstanceName": "ThpcTestSlurmManagerNode","InstanceType": "S5.MEDIUM4"},"SchedulerType": "SLURM","LoginSettings": {"Password": "xxxxxxxx"},"ImageId": "img-l8og963d","VirtualPrivateCloud": {"VpcId": "vpc-r9jw2jzv","SubnetId": "subnet-0v4eybey"},"AutoScalingType": "THPC_AS"}
提交请求并执行完毕后,您需要记录 ClusterId:
![](https://qcloudimg.tencent-cloud.cn/image/document/e69145e93acb1cc756ba381555073d45.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e69145e93acb1cc756ba381555073d45.png)
使用 ClusterId 查询集群状态:
tccli thpc DescribeClusters --ClusterIds '["hpc-xxxxxxxx"]'
返回结果,其中:
ClusterStatus 为 RUNNING 状态表示集群创建完成,可以开始使用。
ClusterStatus 为 INITING 状态表示集群正在初始化中,需要等待直到为 RUNNING或者 INIT_FAILED 状态之一。
ClusterStatus 为 INIT_FAILED 状态表示集群创建失败,您可以使用 API Explorer 查看集群活动 查看详细集群状态信息。
![](https://qcloudimg.tencent-cloud.cn/image/document/fd23894ce30735a73a9e217730fe0456.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/fd23894ce30735a73a9e217730fe0456.png)
3. 使用 SetAutoScalingConfiguration 接口开启 THPC AS 功能。
tccli thpc SetAutoScalingConfiguration --cli-input-json file://./SetAutoScalingConfiguration.json
{"ClusterId": "hpc-xxxxxxxx","ExpansionBusyTime": 120,"ShrinkIdleTime": 120,"QueueConfigs": [{"QueueName": "compute","MinSize": 1,"MaxSize": 5,"EnableAutoExpansion": true,"EnableAutoShrink": true,"ExpansionNodeConfigs": [{"Placement": {"Zone": "ap-chongqing-1"},"VirtualPrivateCloud": {"VpcId": "vpc-r9jw2jzv","SubnetId": "subnet-0v4eybey"},"InstanceType": "S6.4XLARGE32"}, {"Placement": {"Zone": "ap-chongqing-1"},"VirtualPrivateCloud": {"VpcId": "vpc-r9jw2jzv","SubnetId": "subnet-0v4eybey"},"InstanceType": "S6.2XLARGE32"}]}]}
以上 SetAutoScalingConfiguration.json 文件接口配置好集群自动扩缩容参数如下:
开启 Slurm 调度器 compute 队列的自动扩容能力,THPC 会根据扩容策略对连续等待超过120秒的作业进行自动扩容,并且弹性节点的最大值不超过5个。ExpansionBusyTime 参数取值最小值为120s。
开启 Slurm 调度器 compute 队列的自动缩容能力,THPC 会对连续空闲超过120s的节点进行自动缩容,并且弹性节点的最小值不小于1个。ShrinkIdleTime 取值最小值为0s。
compute 队列配置了两个扩容机型。
序号 | 机型 | CPU |
1 | S6.4XLARGE32 | 16 |
2 | S6.2XLARGE32 | 8 |
4. 登录管控节点提交 VASP 作业:
submit.sh 脚本内容如下,脚本提交一个 vasp 作业,在一个节点上使用8个核运行:
#!/bin/sh#SBATCH -p compute#SBATCH -o job.%j.out#SBATCH --nodes=2#SBATCH --ntasks-per-node=8#SBATCH -D /opt/graphenesource /opt/intel/oneapi/setvars.sh/opt/intel/oneapi/mpi/2021.7.0/bin/mpirun -n 16 /opt/vasp.6.3.0/bin/vasp_std
提交作业前,集群没有任何节点存在:
![](https://qcloudimg.tencent-cloud.cn/image/document/dd15c4e067c53048193a84d6e9c1fcb3.png)
提交作业:
![](https://qcloudimg.tencent-cloud.cn/image/document/dd15c4e067c53048193a84d6e9c1fcb3.png)
sbatch submit.sh
5. 集群扩容并执行作业,作业结束后缩容到0节点。
提交作业之后,THPC 会根据扩容策略,扩容出最匹配的两个8核的 S6.2XLARGE32 实例。等待约4~8分钟后,节点加入集群并运行提交的作业。
说明
等待的时间主要包括作业连续等待时间 120 秒、创建实例的时间和节点创建完初始化并加入集群的时间。
![](https://qcloudimg.tencent-cloud.cn/image/document/17972c999565905b898e5d433dee78cb.png)
任务执行完成之后,节点进入空闲(idle)状态:
![](https://qcloudimg.tencent-cloud.cn/image/document/17972c999565905b898e5d433dee78cb.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/35adff3032069014ec19925c6f453c45.png)
等待2~3分钟之后,会进行自动缩容到最小节点数:
![](https://qcloudimg.tencent-cloud.cn/image/document/35adff3032069014ec19925c6f453c45.png)
tccli thpc DeleteCluster --ClusterId hpc-xxxxxxxx