

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 拆分成本分配数据示例
<a name="example-split-cost-allocation-data"></a>

以下示例的目的是，向您说明如何计算 Amazon ECS 集群中的各个 Amazon ECS 服务和任务以及 Amazon EKS 集群中的 Kubernetes 命名空间和容器组（pod）的成本，从而计算拆分成本分配数据。在整个示例中使用的费率仅用于说明目的。

**注意**  
该示例演示了 Amazon EKS 集群中运行的 Kubernetes 命名空间和容器组（pod）。然后，我们可以将相同的成本模型应用于在 Amazon ECS 集群中运行的 Amazon ECS 服务和任务。

您在一小时内具有以下使用量：
+ 单实例（m5.xlarge）共享集群，包含两个命名空间和四个容器组（pod），运行整整一小时的时间。
+ 实例配置为 4 个 vCPU 和 16 GB 内存。
+ 实例的摊销成本为 1 美元/小时。

拆分成本分配数据使用 CPU 和内存的相对单位权重（基于 9:1 比率）。这是根据 [AWS Fargate](https://aws.amazon.com/fargate/pricing/) 中的每个 vCPU 每小时和每 GB 每小时价格得出的。

## 步骤 1：计算 CPU 和内存的单位成本
<a name="example-step1"></a>

`Unit-cost-per-resource = Hourly-instance-cost/((Memory-weight * Memory-available) + (CPU-weight * CPU-available))`

= 1 美元/( (1 \$1 16GB) \$1 (9 \$1 4vCPU)) = 0.02 美元

`Cost-per-vCPU-hour = CPU-weight * Unit-cost-per-resource`

= 9 \$1 0.02 美元 = 0.17 美元

`Cost-per-GB-hour = Memory-weight * Unit-cost-per-resource`

= 1 \$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：计算分配的容量和实例未使用容量
<a name="example-step2"></a>
+ 分配的容量：从父 EC2 实例中分配给 Kubernetes 容器组（pod）的内存和 vCPU，定义为最大使用和预留容量。
**注意**  
如果内存或 vCPU 使用情况数据不可用，将改用预留数据。有关更多信息，请参阅 [Amazon ECS 使用情况报告](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/usage-reports.html)或 [Amazon EKS 成本监控](https://docs.aws.amazon.com/eks/latest/userguide/cost-monitoring.html)。
+ 实例未使用容量：未使用的 vCPU 和内存容量。

`Pod1-Allocated-vCPU = Max (1 vCPU, 0.1 vCPU)` = 1 vCPU

`Pod1-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)` = Max (16 – 14, 0) = 2 GB

在该示例中，实例过度订阅 CPU，这是由于 Pod2 使用的 vCPU 超过预留的 vCPU。


****  

| Pod name | Namespace | Reserved-vCPU | Used-vCPU | Allocated-vCPU | Reserved-memory | Used-memory | Allocated-memory | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Pod1 | Namespace1 | 1 | 0.1 | 1 | 4 | 3 | 4 | 
| Pod2 | Namespace2 | 1 | 1.9 | 1.9 | 4 | 6 | 6 | 
| Pod3 | Namespace1 | 1 | 0.5 | 1 | 2 | 2 | 2 | 
| Pod4 | Namespace2 | 1 | 0.5 | 1 | 2 | 2 | 2 | 
| Unused | Unused |  |  | 0 |  |  | 2 | 
|  |  |  |  | 4.9 |  |  | 16 | 

## 步骤 3：计算拆分使用率
<a name="example-step3"></a>
+ 拆分使用率：Kubernetes 容器组（pod）使用的 CPU 或内存占 EC2 实例上提供的总体 CPU 或内存的百分比。
+ 未使用率：Kubernetes 容器组（pod）使用的 CPU 或内存占 EC2 实例上使用的总体 CPU 或内存的百分比（即，不考虑实例上未使用的 CPU 或内存）。

`Pod1-vCPU-split-usage-ratio = Allocated-vCPU / Total-vCPU`

= 1 vCPU / 4.9vCPU = 0.204

`Pod1-Memory-split-usage-ratio = Allocated-GB / Total-GB`

= 4 GB/ 16GB = 0.250

`Pod1-vCPU-unused-ratio = Pod1-vCPU-split-usage-ratio / (Total-CPU-split-usage-ratio – Instance-unused-CPU)`（如果为 0 则设置 Instance-unused-CPU为 0）

= 0（因为 Instance-unused-CPU是 0）

`Pod1-Memory-unused-ratio = Pod1-Memory-split-usage-ratio / (Total-Memory-split-usage-ratio – Instance-unused-memory)`（如果为 0 则设置 Instance-unused-memory为 0）

= 0.250 / (1-0.125) = 0.286


****  

| Pod name | Namespace | vCPU-split-usage-ratio | vCPU-unused-ratio | Memory-split-usage-ratio | Memory-unused-ratio | 
| --- | --- | --- | --- | --- | --- | 
| Pod1 | Namespace1 | 0.204 | 0 | 0.250 | 0.286 | 
| Pod2 | Namespace2 | 0.388 | 0 | 0.375 | 0.429 | 
| Pod3 | Namespace1 | 0.204 | 0 | 0.125 | 0.143 | 
| Pod4 | Namespace2 | 0.204 | 0 | 0.125 | 0.143 | 
| Unused | Unused | 0 |  | 0.125 |  | 
|  |  | 1 |  | 1 |  | 

## 步骤 4：计算拆分成本和未使用成本
<a name="example-step4"></a>
+ 拆分成本：EC2 实例成本的按使用付费成本分配，基于 Kubernetes 容器组（pod）使用的分配 CPU 和内存。
+ 未使用实例成本：实例上未使用的 CPU 或内存资源的成本。

`Pod1-Split-cost = (Pod1-vCPU-split-usage-ratio * vCPU-available * Cost-per-vCPU-hour) + (Pod1-Memory-split-usage-ratio * Memory-available * Cost-per-GB-hour)`

= (0.204 \$1 4 vCPU \$1 0.17 美元) \$1 (0.25 \$1 16GB \$1 0.02 美元) = 0.22 美元

`Pod1-Unused-cost = (Pod1-vCPU-unused-ratio * Instance-vCPU-unused-ratio * vCPU-available * Cost-per-VCPU-hour) + (Pod1-Memory-unused-ratio * Instance-Memory-unused ratio * Memory-available * Cost-per-GB-hour)`

= (0 \$1 0 \$1 4 \$1 0.17 美元) \$1 (0.286 \$1 0.125 \$1 16 \$1 0.02 美元) = 0.01 美元

`Pod1-Total-split-cost = Pod1-Split-cost + Pod1-Unused-cost`

= 0.23 美元


****  

| Pod name | Namespace | Split-cost | Unused-cost | Total-split-cost | 
| --- | --- | --- | --- | --- | 
| Pod1 | Namespace1 | 0.22 美元 | 0.01 美元 | 0.23 美元 | 
| Pod2 | Namespace2 | 0.38 美元 | 0.02 | 0.40 美元 | 
| Pod3 | Namespace1 | 0.18 美元 | 0.01 美元 | 0.19 美元 | 
| Pod4 | Namespace2 | 0.18 美元 | 0.01 美元 | 0.19 美元 | 
| Unused | Unused | 0.04 美元 |  |  | 
|  |  | 1 美元 | 0.04 美元 | 1 美元 | 

服务成本是与每个命名空间关联的容器组（pod）的成本总和。

Namespace1 的总成本 = 0.23 美元 \$1 0.19 美元 = 0.42 美元

Namespace2 的总成本 = 0.40 美元 \$1 0.19 美元 = 0.59 美元

## AWS CUR 示例
<a name="example-savingsplan"></a>

如果您的节省计划涵盖 EC2 实例在账单周期内的全部使用量，将使用 savingsPlan/SavingsPlanEffectiveCost 计算摊销成本。

![\[Table showing EC2 instance usage details with 节省计划 and cost breakdown.\]](http://docs.aws.amazon.com/zh_cn/cur/latest/userguide/images/savings-plan-entire-usage.png)


如果您的 Savings Plans 涵盖账单周期内 EC2 实例的部分使用量，而其余的 EC2 实例使用按需费率计费，则使用 (for SavingsPlanCoveredUsage) \$1 savingsPlan/SavingsPlanEffectiveCostlineItem/UnblendedCost（按需使用）计算 EC2 实例摊销成本。

![\[Table showing EC2 instance usage details, costs, and savings plan information.\]](http://docs.aws.amazon.com/zh_cn/cur/latest/userguide/images/savings-plan-partial-usage.png)
