競價執行個體是專為降低使用者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