这篇以使用 VASP 软件进行高性能计算介绍如何配置自动伸缩策略。
一、背景信息
当你需要每天不定时提交作业,使用 THPC 集群几个小时进行大规模计算, 然后释放节点,你可以针对不同的作业类型,配置不同的伸缩策略。配置伸缩策略后,系统可以根据实时负载自动增加或减少计算节点。可以帮你合理利用资源,减少使用成本。
二、前置条件
请依照 准备工作 中的指引获取 SecretId 和 SecretKey,并完成 服务角色授权。
三、操作步骤
1. 安装最新版本的 TCCLI 命令工具 ,并进行 初始化配置 请参见 THPC 地域列表。
2. 使用 CreateCluster 接口创建一个有 1 个 管控节点 0 个 计算节点 的 THPC 集群。
执行命令:
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:
使用 ClusterId 查询集群状态:
tccli thpc DescribeClusters –ClusterIds '["hpc-xxxxxxxx"]'
返回结果,其中:
·ClusterStatus 为 RUNNING 状态表示集群创建完成,可以开始使用。
·ClusterStatus 为 INITING 状态表示集群正在初始化中,需要等待直到为 RUNNING 或者 INIT_FAILED 状态之一。
·ClusterStatus 为 INIT_FAILED 状态表示集群创建失败,你可以使用 API Explorer 查看集群活动 查看详细集群状态信息。
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
提交作业前,集群没有任何节点存在:
提交作业:
sbatch submit.sh
5. 集群扩容并执行作业,作业结束后缩容到0节点。
提交作业之后,THPC 会根据扩容策略,扩容出最匹配的两个8核的 S6.2XLARGE32 实例。等待约4~8分钟后,节点加入集群并运行提交的作业。
注意:说明:
注意:等待的时间主要包括作业连续等待时间 120 秒、创建实例的时间和节点创建完初始化并加入集群的时间。
任务执行完成之后,节点进入空闲(idle)状态:
等待2~3分钟之后,会进行自动缩容到最小节点数:
6. 使用完毕后,使用如下命令删除集群,关联的计算实例将会被销毁。 CFS 文件存储不会删除,如果你需要销毁,可前往 CFS 控制台。
tccli thpc DeleteCluster –ClusterId hpc-xxxxxxxx