背景说明
THPC 的弹性扩缩功能支持根据您的业务负载动态伸缩集群节点,帮助您节省集群成本。您可以根据需要选择不同的扩缩容模式,在创建集群接口中的 AutoScalingType 进行配置,推荐您使用 THPC_AS 模式进行扩缩容,支持自动匹配作业需要的实例资源,且弹性伸缩的实例与创建集群时配置的TAG一致。说明:创建弹性扩缩容集群请参见自动伸缩最佳实践,目前仅支持 Slurm 集群开启 THPC_AS 模式。
THPC_AS 扩缩容策略
需把 AutoScalingType 设置为 THPC_AS 后,使用 SetAutoScalingConfiguration 接口配置扩缩容策略,以下是多个业务场景扩缩容效果的说明。
扩容匹配原则
THPC 主要通过实例的 CPU、内存规格与提交作业的资源申请规模进行匹配,优先匹配到运行作业后剩余资源最少的实例。THPC 会优先保证 CPU 资源剩余最少,如果实例运行作业后剩余 CPU 资源相同,会再匹配内存资源。场景示例场景 a: 作业所需4核4GB内存资源,扩容配置如下:
实例类型 | vCPU | 内存(GB) |
A | 4 | 16 |
B | 8 | 8 |
THPC 会匹配到实例类型 A,因为 CPU 的优先级高,优先匹配 CPU 资源。
场景b:作业所需4核4GB资源,扩容配置如下:
实例类型 | vCPU | 内存(GB) |
A | 4 | 16 |
B | 4 | 8 |
THPC 会匹配到实例类型 B,因为在 CPU 相同的情况下,会匹配内存资源,B 实例运行上作业之后,剩余资源较少。且实例扩容的数量取决于此作业运行起来需要的节点数量。注意:目前匹配流程中,不会考虑实例运行作业之后的剩余资源。投递的作业所需资源在机型配置中没有满足的实例规格,则不会进行扩容。 投递作业时需要注意,登录实例操作系统看到的可使用的内存会小于实例规格的内存。例如:SA2.MEDIUM4 机型规格为4核4GB内存,扩容后的实例 OS 可用内存为3.6GB。
多机型、多可用区扩容
实例类型在每个可用区支持情况不同,您可能会面对所选机型在当前可用区售罄或相关配置问题,多可用区、多机型配置可帮助您有效的解决此类问题。多机型配置功能能够有效降低售罄、实例调用失败带来的自动扩容失败风险。场景示例在 THPC_AS 策略中,可以对 CPU 核数和内存大小相同的机型进行多配置,以下为 SetAutoScalingConfiguration 接口中,队列名为 compute 所设置的ExpansionNodeConfig 机型列表、机型的资源信息、可用区以及对应的数组下标。
数组下标 | 机型 | 可用区 | vCPU | 内存(GB) |
1 | SA2.2XLARGE16 | 广州四区 | 8 | 16 |
2 | SA2.2XLARGE16 | 广州五区 | 8 | 16 |
3 | SA2.2XLARGE16 | 广州六区 | 8 | 16 |
4 | SA3.2XLARGE16 | 广州五区 | 8 | 16 |
5 | SA3.2XLARGE16 | 广州六区 | 8 | 16 |
假设客户投递一个作业,需要6核 CPU 和12GB内存,由于队列中最优匹配是需要8核、16GB内存的资源,那么弹性伸缩配置中,所有8核、16GB内存的资源都符合匹配,THPC 会根据配置的列表下标由低往高,依次尝试创建实例进行扩容。
比例扩容
由于扩容流程中,不会考虑扩容后实例的剩余资源,出于成本考虑,在扩容场景下,可以通过比例扩容的方式来逐步扩容,尽可能减少资源的浪费。队列配置中,涉及 SetAutoScalingConfiguration 接口的队列配置中的两个参数:
参数名称 | 参数说明 |
ScaleOutRatio | 扩容比例设置。取值范围1~100。 |
ScaleOutNodeThreshold | 比例扩容阈值。 |
当计算出的任务需要扩容的数量大于 ScaleOutNodeThreshold 时,实际扩容数量为 (需要扩容数量 * ScaleOutRatio) / 100 向上取整。当计算出的任务需要扩容的数量小于 ScaleOutNodeThreshold 时,实际扩容数量为需要扩容数量 (即 ScaleOutRatio=100)。ScaleOutNodeThreshold 阈值有利于比例扩容在小数量扩容场景下,快速收敛。场景示例假设此时总共需要扩容100个节点加入集群,以下 A、B 配置的扩容比例设置为50,但是 ScaleOutNodeThreshold 阈值配置不同。
配置 | ScaleOutRatio | ScaleOutNodeThreshold |
A | 50 | 0 |
B | 50 | 20 |
对于配置 A,100个节点总共需要自动扩容7轮,每轮节点扩容个数以及对应轮次如下图左,每轮节点扩容总数以及对应轮次如下图右:


对于配置 B,100个节点总共需要自动扩容4轮,当扩容至第4轮时,需要扩容的节点数量为12小于 ScaleOutNodeThreshold 参数值20,则按照需要扩容的节点数进行扩容。每轮节点扩容个数以及对应轮次如下图左,每轮节点扩容总数以及对应轮次如下图右:


二者每轮节点扩容总数以及对应轮次对比图如下,其中红色曲线为配置A,蓝色曲线为配置 B。可以看出,通过 ScaleOutNodeThreshold 参数能够加快在扩容实例数量较小的场景下收敛速度。

如果不需要比例扩容,可以将 ScaleOutRatio 参数默认设置为 100;如果对于扩容速度不敏感,可以将 ScaleOutNodeThreshold 设置为0。
THPC_AS 缩容策略说明
当节点连续空闲时间达到指定时间 ShrinkIdleTime,节点缩容。
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/146637.html