

# Amazon ECS 集群预留指标
<a name="cluster_reservation"></a>

集群预留指标以所有 Amazon ECS 任务在某个集群上预留的 CPU、内存和 GPU 占已为该集群中每个活动容器实例注册的聚合 CPU、内存和 GPU 的百分比来度量。仅处于 `ACTIVE` 或 `DRAINING` 状态的容器实例将影响集群预留指标。此指标仅用于包含在 EC2 实例上托管的任务或服务的集群。包含在 Amazon Fargate 上托管任务的集群不支持此指标。

```
                               (Total CPU units reserved by tasks in cluster) x 100
Cluster CPU reservation =  --------------------------------------------------------------
                           (Total CPU units registered by container instances in cluster)
```

```
                                   (Total MiB of memory reserved by tasks in cluster x 100)
Cluster memory reservation =  ------------------------------------------------------------------
                              (Total MiB of memory registered by container instances in cluster)
```

```
                                  (Total GPUs reserved by tasks in cluster x 100)
Cluster GPU reservation =  ------------------------------------------------------------------
                              (Total GPUs registered by container instances in cluster)
```

当您在某个集群中运行某项任务时，Amazon ECS 将分析该集群的任务定义并预留在该集群的容器定义中指定的聚合 CPU 单元数、内存 MiB 数和 GPU 数。Amazon ECS 每分钟都会计算当前为在该集群中运行的每个任务预留的 CPU 单元数、内存 MiB 数和 GPU 数。它还会计算为在该集群上运行的所有任务预留的 CPU、内存和 GPU 的总量，这些数字将以占该集群的注册资源总量的百分比的形式报告给 CloudWatch。如果您在任务定义中指定软限制（`memoryReservation`），它将用于计算预留内存量。否则将使用硬限制（`memory`）。集群中的任务预留的总内存量（以 MiB 为单位）还包括临时文件系统（`tmpfs`）卷大小，如果在任务定义中定义，还包括 `sharedMemorySize`。有关软限制和硬限制、共享内存大小和 tmpfs 卷大小的更多信息，请参阅[任务定义参数](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definitions)。

例如，某个集群注册了两个活动容器实例：一个 `c4.4xlarge` 实例和一个 `c4.large` 实例。`c4.4xlarge` 实例在集群中注册了 16,384 个 CPU 单元和 30,158 MiB 内存。`c4.large` 实例注册了 2,048 个 CPU 单元和 3,768 MiB 内存。此集群的聚合资源为 18,432 个 CPU 单元和 33,926 MiB 内存。

如果某个任务定义预留了 1024 个 CPU 单元和 2048 MiB 内存，并且在此集群上启动了 10 个使用此任务定义的任务（当前没有运行其他任务），则总共将预留 10240 个 CPU 单元和 20480 MiB 内存。此信息将以集群的 55% CPU 预留量和 60% 内存预留量的形式报告给 CloudWatch。

下图显示了在某个集群中注册的 CPU 单元总数，以及它们的预留和利用率对现有任务和新任务放置的意义。下面的块（已预留，已使用）和中间的块（已预留，未使用）表示为集群上运行的现有任务预留的总 CPU 单元数（即 `CPUReservation` CloudWatch 指标）。下面的块表示正在运行的任务在集群上实际正在使用的预留 CPU 单元数（即 `CPUUtilization` CloudWatch 指标）。上面的块表示现有任务未预留的 CPU 单元数；这些 CPU 单元可用于新任务放置。现有任务如果对 CPU 资源的需求增加，也可以使用这些未预留 CPU 单元。有关更多信息，请参阅 [cpu](task_definition_parameters.md#ContainerDefinition-cpu) 任务定义参数文档。

![集群 CPU 预留和利用率](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/images/telemetry.png)
