

# 使用实例权重来管理 EC2 实例集或竞价型实例集的成本和性能
<a name="ec2-fleet-instance-weighting"></a>

您可以借助实例权重为 EC2 实例集或竞价型实例集中的每种实例类型分配权重，来表示它们相对于彼此的计算容量和性能。实例集可以根据权重使用指定实例类型的任意组合，前提是可以满足所需的目标容量。这有助于管理实例集的成本和性能。

权重表示实例类型占总目标容量的容量单位。

**示例：使用实例权重管理性能**

假设实例集包含两种实例类型，并且每种实例类型都分配到了不同的权重，来反映实现相同性能所需的每种实例类型的数量，如下所示：
+  `m5.large` – 权重：1
+ `m5.2xlarge` – 权重：4

如此分配权重，即表明需要 4 个 `m5.large` 实例才能实现与 1 个 `m5.2xlarge` 实例相同的性能。

要计算给定目标容量所需的每种实例类型的实例数量，请使用以下公式：

`target capacity / weight = number of instances`

如果目标容量为 8 个单位，则实例集可以通过 `m5.large` 或 `m5.2xlarge` 或混合使用两者来满足目标容量，如下所示：
+ 8 个 `m5.large` 实例（容量为 8/权重为 1，表示需要 8 个实例）
+ 2 个 `m5.2xlarge` 实例（容量为 8/权重为 4，表示需要 2 个实例）
+ 4 个 `m5.large` 和 1 个 `m5.2xlarge`

**示例：使用实例权重管理成本**

默认情况下，您指定的价格是*每实例小时* 价格。在使用实例权重功能时，您指定的价格是*每单位小时* 价格。您可以将某种实例类型的价格除以它表示的单位数来计算每单位小时价格。实例集通过将目标容量除以实例权重，计算出要启动的实例数。如果结果不是整数，则 队列会将其向上舍入到下一个整数，以便队列的大小不低于其目标容量。队列可以选择您在启动规范中指定的任意池，即使所启动实例的容量超过请求的目标容量也是如此。

下表提供了用于确定目标容量为 10 的实例集每单位价格的计算示例。


| 实例类型 | 实例权重 | 目标容量 | 启动的实例数 | 每实例小时价格 | 每单位小时价格 | 
| --- | --- | --- | --- | --- | --- | 
| r3.xlarge |  2  | 10 |  5 (10 除以 2)  |  0.05 美元  |  0.025 美元 (0.05 除以 2)  | 
| r3.8xlarge |  8  | 10 |  2 (10 除以 8，结果向上舍入)  |  0.10 美元  |  0.0125 美元 (0.10 除以 8)  | 

按如下所示使用实例集实例权重，在履行时以最低的单位价格预置池中所需的目标容量：

1. 采用实例（默认设置）或所选单位（如 vCPU、内存、存储或吞吐量）为实例集设置目标容量。

1. 设置每单位价格。

1. 为每个启动规范指定权重，这是实例类型向目标容量提供的单位数。

**实例权重示例**  
考虑具有以下配置的实例集请求：
+ 目标容量为 24
+ 一个实例类型为 `r3.2xlarge` 且权重为 6 的启动规范
+ 一个实例类型为 `c3.xlarge` 且权重为 5 的启动规范

每个权重表示相应实例类型向目标容量提供的单位数。如果第一个启动规范提供了最低单位价格（`r3.2xlarge` 每实例小时价格除以 6），则实例集会启动 4 个这样的实例（24 除以 6）。

如果第二个启动规范提供了最低单位价格（`c3.xlarge` 每实例小时价格除以 5），则实例集会启动 5 个这样的实例（24 除以 5，结果向上取整）。

**实例权重和分配策略**  
考虑具有以下配置的实例集请求：
+ 目标容量为 30 个竞价型实例
+ 一个实例类型为 `c3.2xlarge` 且权重为 8 的启动规范
+ 一个实例类型为 `m3.xlarge` 且权重为 8 的启动规范
+ 一个实例类型为 `r3.xlarge` 且权重为 8 的启动规范

实例集会启动四个实例（30 除以 8，结果向上取整）。使用 `diversified` 策略时，队列会在所有三个池中各启动一个实例，并在三个池中提供最低每单位价格的那个池中启动第四个实例。