本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
拆分成本分配数据的示例
以下示例的目的是向您展示如何通过计算在集群上运行的单个 ECS 服务和任务的成本来计算分摊成本分配数据。请注意,整个示例中使用的费率仅用于说明目的。
您在一小时内使用了以下用量:
-
具有两个服务和四个任务的单实例 (m5.xlarge) 共享集群,运行时间为整整一小时。
-
实例配置为 4 个 vCPU 和 16 GB 内存。
-
实例的摊销成本为 1 美元/小时。
拆分成本分配数据根据 9:1 的比率使用 CPU 和内存的相对单位权重。这是根据每小时 vCPU 和每 GB 每小时的价格得出的。Amazon Fargate
步骤 1:计算 CPU 和内存的单位成本
Unit-cost-per-resource = Hourly-instance-cost/((Memory-weight *
Memory-available) + (CPU-weight * CPU-available))
= $1/ (1 * 16GB) + (9 * 4vCPU)) = 0.02 美元
Cost-per-vCPU-hour = CPU-weight * Unit-cost-per-resource
= 9 * 0.02 美元 = 0.17 美元
Cost-per-GB-hour = Memory-weight * Unit-cost-per-resource
= 1 * 0.02 美元 = 0.02 美元
Instance | Instance type | vCPU-available | Memory-available | Amortized-cost-per-hour | Cost-per-vCPU-hour | Cost-per-GB-hour |
---|---|---|---|---|---|---|
Instance1 | m5.xlarge | 4 | 16 | $1 | 0.17 美元 | 0.02 美元 |
步骤 2:计算分配的容量和实例未使用的容量
-
分配的容量:从父 EC2 实例分配给 ECS 任务的内存和 vCPU,定义为已用容量和预留容量的最大值。
注意
如果内存或 vCPU 使用率数据不可用,则将改用预留数据。有关更多信息,请参阅 Amazon ECS 使用情况报告。
-
实例未使用容量:vCPU 和内存的未使用容量。
Task1-Allocated-vCPU = Max (1 vCPU, 0.1 vCPU)
= 1 vCPU
Task1-Allocated-memory = Max (4 GB, 3 GB)
= 4 GB
Instance-Unused-vCPU = Max (CPU-available - SUM(Allocated-vCPU),
0)
= Max (4 — 4.9,0) = 0
Instance-Unused-memory = Max (Memory-available - SUM(Allocated-memory),
0)
= 最大 (16 — 14, 0) = 2 GB
在此示例中,该实例的 CPU 超过了订阅,这归因于 Task2 使用的 vCPU 多于预留的 vCPU。
Task name | Service | Reserved-vCPU | Used-vCPU | Allocated-vCPU | Reserved-memory | Used-memory | Allocated-memory |
---|---|---|---|---|---|---|---|
Task1 | Service1 | 1 | 0.1 | 1 | 4 | 3 | 4 |
Task2 | Service2 | 1 | 1.9 | 1.9 | 4 | 6 | 6 |
Task3 | Service1 | 1 | 0.5 | 1 | 2 | 2 | 2 |
Task4 | Service2 | 1 | 0.5 | 1 | 2 | 2 | 2 |
Unused | Unused | 0 | 2 | ||||
4.9 | 16 |
步骤 3:计算拆分使用率
-
分割使用率:ECS 任务使用的 CPU 或内存与 EC2 实例上可用总体 CPU 或内存的百分比。
-
未使用比率:ECS 任务使用的 CPU 或内存与 EC2 实例上使用的总体 CPU 或内存的百分比(即,不考虑实例上未使用的 CPU 或内存)。
Task1-vCPU-split-usage-ratio = Allocated-vCPU / Total-vCPU
= 1 vCPU /4.9vCPU = 0.204
Task1-Memory-split-usage-ratio = Allocated-GB / Total-GB
= 4 GB/ 16GB = 0.250
Task1-vCPU-unused-ratio = Task1-vCPU-split-usage-ratio /
(Total-CPU-split-usage-ratio – Instance-unused-CPU)
(如果实例未使用的 CPU 为 0,则设置为 0)
= 0(因为实例未使用的 CPU 为 0)
Task1-Memory-unused-ratio = Task1-Memory-split-usage-ratio /
(Total-Memory-split-usage-ratio – Instance-unused-memory)
(如果 I 为 0,则设置nstance-unused-memory为 0)
= 0.250/(1-0.125) = 0.286
Task name | Service | vCPU-split-usage-ratio | vCPU-unused-ratio | Memory-split-usage-ratio | Memory-unused-ratio |
---|---|---|---|---|---|
Task1 | Service1 | 0.204 | 0 | 0.250 | 0.286 |
Task2 | Service2 | 0.388 | 0 | 0.375 | 0.429 |
Task3 | Service1 | 0.204 | 0 | 0.125 | 0.143 |
Task4 | Service2 | 0.204 | 0 | 0.125 | 0.143 |
Unused | Unused | 0 | 0.125 | ||
1 | 1 |
步骤 4:计算拆分成本和未使用成本
-
分摊成本:根据 ECS 任务分配的 CPU 和内存使用情况对 EC2 实例成本进行按使用量付费的成本分配。
-
未使用的实例成本:实例上未使用的 CPU 或内存资源的成本。
Task1-Split-cost = (Task1-vCPU-split-usage-ratio * vCPU-available *
Cost-per-vCPU-hour) + (Task1-Memory-split-usage-ratio * Memory-available *
Cost-per-GB-hour)
= (0.204 * 4 vCPU * 0.17 美元) + (0.25 * 16GB * 0.02 美元) = 0.22 美元
Task1-Unused-cost = (Task1-vCPU-unused-ratio *
Instance-vCPU-unused-ratio * vCPU-available * Cost-per-VCPU-hour) +
(Task1-Memory-unused-ratio * Instance-Memory-unused ratio * Memory-available
* Cost-per-GB-hour)
= (0 * 0 * 4 * 0.17 美元) + (0.286 * 0.125 * 16 * 0.02) = 0.01 美元
Task1-Total-split-cost = Task1-Split-cost +
Task1-Unused-cost
= 0.23 美元
Task name | Service | Split-cost | Unused-cost | Total-split-cost |
---|---|---|---|---|
Task1 | Service1 | 0.22 美元 | 0.01 美元 | 0.23 美元 |
Task2 | Service2 | 0.38 美元 | 0.02 美元 | 0.40 美元 |
Task3 | Service1 | 0.18 美元 | 0.01 美元 | 0.19 美元 |
Task4 | Service2 | 0.18 美元 | 0.01 美元 | 0.19 美元 |
Unused | Unused | 0.04 美元 | ||
$1 | 0.04 美元 | $1 |
服务成本是与每项服务相关的任务成本的总和。
服务总成本 1 = 0.23 美元 + 0.19 美元 = 0.42 美元
Service2 的总成本 = 0.40 美元 + 0.19 美元 = 0.59 美元
AmazonCUR 示例
如果您有一个 EC2 实例以按需费率运行,则该实例的成本是使用计算的lineItem/UnblendedCost。
