

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 分割成本分配資料的範例
<a name="example-split-cost-allocation-data"></a>

以下範例的目的是向您展示如何計算分割成本分配資料，方法是計算個別 Amazon ECS 服務的成本、Amazon ECS 叢集中的任務，以及 Amazon EKS 叢集中的 Kubernetes 命名空間和 Pod。整個範例中使用的速率僅供說明之用。

**注意**  
此範例示範在 Amazon EKS 叢集中執行的 Kubernetes 命名空間和 Pod。然後，我們可以將相同的成本模型套用至在 Amazon ECS 叢集中執行的 Amazon ECS 服務和任務。

您在一小時內有下列用量：
+ 具有兩個命名空間和四個 Pod 的單一執行個體 (m5.xlarge) 共用叢集，在完整小時內執行。
+ 執行個體組態為 4 個 vCPU 和 16 GB 的記憶體。
+ 執行個體的攤銷成本為每小時 1 美元。

根據 9：1 的比率，分割成本分配資料使用 CPU 和記憶體的相對單位權重。這衍生自 中的每小時每個 vCPU 和每小時每 GB 價格[AWS Fargate](https://aws.amazon.com/fargate/pricing/)。

## 步驟 1：計算 CPU 和記憶體的單位成本
<a name="example-step1"></a>

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

= \$11/( (1 \$1 16GB) \$1 (9 \$1 4vCPU)) = \$10.02

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

= 9 \$1 \$10.02 = \$10.17

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

= 1 \$1 \$10.02 = \$10.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)` = 最大值 (4 – 4.9， 0) = 0

`Instance-Unused-memory = Max (Memory-available - SUM(Allocated-memory), 0)` = 最大值 (16 – 14， 0) = 2 GB

在此範例中，執行個體具有 CPU over subscription，歸因於使用比保留更多的 vCPU 的 Pod2。


****  

| 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.9 個vCPU = 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)` （如果 Instance-unused-CPU 為 0，則設為 0)

= 0 （因為 Instance-unused-CPU 為 0)

`Pod1-Memory-unused-ratio = Pod1-Memory-split-usage-ratio / (Total-Memory-split-usage-ratio – Instance-unused-memory)` （如果 Instance-unused-memory 為 0，則設為 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>
+ 分割成本：根據 Kubernetes Pod 配置的 CPU 和記憶體用量，EC2 執行個體成本的每次使用成本分配費用。
+ 未使用的執行個體成本：執行個體上未使用的 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 \$10.17) \$1 (0.25 \$1 16GB \$1 \$10.02) = \$10.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 \$10.17) \$1 (0.286 \$1 0.125 \$1 16 \$1 \$10.02) = \$10.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 的總成本 = \$10.23 \$1 \$10.19 = \$10.42

Namespace2 的總成本 = \$10.40 \$1 \$10.19 = \$10.59

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

如果您有 Savings Plans 涵蓋帳單期間 EC2 執行個體的整個用量，則會使用 計算攤銷成本savingsPlan/SavingsPlanEffectiveCost。

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


如果您的 Savings Plans 涵蓋計費期間 EC2 執行個體的部分用量，而 EC2 執行個體的其餘用量是以隨需費率計費，則 EC2 執行個體攤銷成本會使用 savingsPlan/SavingsPlanEffectiveCost（適用於 SavingsPlanCoveredUsage) \$1 lineItem/UnblendedCost（適用於隨需用量） 來計算。

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