全部產品
Search
文件中心

Batch Compute:競價型資源

更新時間:Jul 06, 2024

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