竞价实例是专为降低用户ECS计算成本而设计的一种按需实例。竞价实例的价格由阿里云ECS设置,并会根据市场上针对该实例的供需变化而浮动。因此,用户可充分利用竞价实例的价格浮动特性,在合适的时间购买该竞价实例资源,从而降低计算成本,并在整体成本下降的前提下,提升业务在该时间周期内的吞吐量。更多详情,请参阅 竞价实例。
在批量计算中使用竞价型实例与 ECS 计费一致,不需要支付额外费用。目前批量计算支持的竞价实例类型请参阅 实例规格。
1. 提交作业
下表列举了使用竞价实例需要设置的参数值:
参数 | 描述 |
ResourceType | 资源类型,可选范围:[Spot,OnDemand], 这里设置为Spot。 |
InstanceType | Spot 实例类型,可以通过 getQuota()方法获取可用的Spot实例类型列表。 |
SpotStrategy | 取值范围: SpotWithPriceLimit:设置上限价格的竞价实例; SpotAsPriceGo:系统自动出价,最高不超过按量付费价格。 |
SpotPriceLimit | 实例的每小时最高价格。支持最大 3 位小数,SpotStrategy 为 SpotWithPriceLimit 生效。 |
1.1. 使用 Java SDK 提交作业
TaskDescription taskDesc = new TaskDescription();
AutoCluster autoCluster = new AutoCluster();
autoCluster.setResourceType("Spot");
autoCluster.setInstanceType("ecs.sn1.large");
//可选配置
autoCluster.setSpotStrategy("SpotWithPriceLimit");
autoCluster.setSpotPriceLimit(0.6f);
1.2. 使用 Python SDK 提交作业
job_desc['DAG']['Tasks']['my-task']['AutoCluster']['ResourceType'] = 'Spot'
job_desc['DAG']['Tasks']['my-task']['AutoCluster']['InstanceType'] = 'ecs.sn1.large'
# 以下配置可选
job_desc['DAG']['Tasks']['my-task']['AutoCluster']['SpotStrategy'] = 'SpotWithPriceLimit'
job_desc['DAG']['Tasks']['my-task']['AutoCluster']['SpotPriceLimit'] = 0.6 # 0.6元
1.3. 使用命令行提交作业
举例0:提交spot作业
bcs sub "python demo.py" --resource_type Spot -t ecs.sn1.large
举例1: 限制每小时最高价格0.6元
bcs sub "python demo.py" --resource_type Spot -t ecs.sn1.large --spot_price_limit 0.6
举例2: spot_price_limit设置为0,表示系统自动出价,最高不超过按量付费价格
bcs sub "python demo.py" --resource_type Spot -t ecs.sn1.large --spot_price_limit 0
2. 创建集群和修改集群
2.1. 使用 Java SDK
GroupDescription group = new GroupDescription();
group.setDesiredVMCount(3);
group.setInstanceType("ecs");
group.setResourceType("OnDemand");
//可选配置
group.setSpotPriceLimit(0.6f);
group.setSpotStrategy("SpotWithPriceLimit");
2.2. 使用 Python SDK
group_desc['ResourceType'] = 'Spot'
group_desc['InstanceType'] = 'ecs.sn1.large'
# 以下配置可选
group_desc['SpotStrategy'] = 'SpotWithPriceLimit'
group_desc['SpotPriceLimit'] = 0.6 # 0.6元
2.3. 使用命令行
创建集群时设置竞价策略:
bcs cc cluster_1 -t ecs.sn1.large --resource_type Spot --spot_price_limit 0.6
修改集群竞价策略:
bcs uc cls-xxxx --spot_price_limit 0.8