

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 高速インスタンスの分割コスト配分データの例
<a name="example-accelerated-instances"></a>

次の例の目的は、Amazon EKS クラスター内の Kubernetes 名前空間とポッドのコストを計算することによって、分割コスト割り当てデータがどのように計算されるかを示すことです。例全体で使用されている料金は、説明のみを目的としています。

1 時間あたりの使用量は以下のとおりです。
+ 2 つの名前空間で 4 つのポッドを実行している単一の EC2 インスタンス。各名前空間のコストを把握できます。
+ EC2 インスタンスは p3.16xlarge で、8 GPU、64 vCPU、488 GB の RAM を備えています。
+ インスタンスの償却コストは 1 時間あたり 10 USD です。

分割コスト配分データは、GPU:(CPU: メモリ) の相対比率 9:1 に基づいてリソースあたりのコストを正規化します。これは、GPU の単位のコストが CPU とメモリの単位の 9 倍であることを意味します。CPU とメモリには 9:1 の重みが割り当てられます。非高速 EC2 インスタンスの場合、CPU:メモリの重みがデフォルトで 9:1 である、現在のデフォルトの動作が採用されます。

## ステップ 1: 単価を計算する
<a name="w2aac32c21c13c31c11"></a>

EC2 インスタンスの CPU リソースとメモリリソースに基づき、上記の比率を使用して、分割コスト配分データでは、最初に GPU あたりの単価、1 時間あたりの vCPU、1 時間あたりの GB を計算します。

`GPU-Weight =9`

`GPU+Memory-Weight =1`

`CPU-Weight=1*.9=.9`

`Memory-Weight=1*0.1=0.1`

`Hourly-Instance-Cost=$10`

`GPU-Available=8`

`Memory-Available=488`

`CPU-Available=64`

`UnitCostPerResource = Hourly-Instance-Cost/(( GPU-Weight * GPU-Available) + (Memory-Weight * Memory-Available) + (CPU-Weight * CPU-Available)) = $10/((9*8gpu)+ (0.1 * 488GB) + (.9 * 64vcpu)) = $0.056`

`Cost-per-GPU-Hour = GPU-Weight * UnitCostPerResource = 9 * $0.056 = $0.504`

`Cost-per-vcpu-Hour = CPU-Weight * UnitCostPerResource = .9 * $0.056 = $0.05`

`Cost-per-GB-Hour = Memory-Weight * UnitCostPerResource = .1 * $0.056 = $0.00506`


**表 1: 単価の計算**  

| インスタンス | インスタンスタイプ | 利用可能な vCPU | 利用可能な GPU | \$1\$1 | 利用可能なメモリ | 1 時間あたりの償却コスト | vCPU 1 時間あたりのコスト | GPU 1 時間あたりのコスト | GB 1 時間あたりのコスト | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| インスタンス 1 | p3.16xlarge | 64 | 8 |  | 488 | 10 USD | 0.05 USD | 0.50 USD | 0.005 | 

## ステップ 2: 割り当てられた容量と未使用の容量を計算する
<a name="w2aac32c21c13c31c13"></a>

割り当てられた容量  
親 EC2 インスタンスから Kubernetes ポッドに割り当てられたGPU、vCPU、メモリ。予約済みまたは使用済みの最大の容量として定義されます。

インスタンスの未使用の容量  
GPU、vCPU、メモリの未使用の容量

`Pod1-Allocated-GPU = Max (1 GPU, 1 GPU) = 1 GPU`

`Pod1-Allocated-vcpu = Max (16 vcpu, 4 vcpu) = 16 vcpu`

`Pod1-Allocated-Memory = Max (100 GB, 60 GB) = 100 GB`

`Instance-Unused-GPU = Max (GPU-Available - SUM(Allocated-vcpu), 0)`

`= Max (8 – 8, 0) = 0`

`Instance-Unused-vcpu = Max (CPU-Available - SUM(Allocated-vcpu), 0)`

`= Max (16 – 18, 0) = 0`

`Instance-Unused-Memory = Max (Memory-Available - SUM(Allocated-Memory), 0)`

`= Max (488 – 440, 0) = 48 GB`

この例では、インスタンスの CPU がサブスクリプションを超えています。これは、予約されたものよりも多くの GPU と vCPU を使用した Pod 2 に起因します。


**表 2: 割り当て済みキャパシティと未使用のキャパシティの計算**  

| ポッド名 | 名前空間 | 予約済み vCPU | 使用済み vCPU | 割り当て済み vCPU | 予約済み GPU | 使用済み GPU | 割り当て済み GPU | 予約されているメモリ | 使用済みメモリ | 割り当て済みメモリ | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Pod 1 | 名前空間 1 | 16 | 4 | 16 | 1 | 1 | 1 | 100 | 60 | 100 | 
| Pod 2 | 名前空間 2 | 16 | 18 | 18 | 2 | 3 | 3 | 100 | 140 | 140 | 
| Pod 3 | 名前空間 1 | 16 | 4 | 16 | 2 | 1 | 2 | 100 | 60 | 100 | 
| ポッド 4 | 名前空間 2 | 16 | 4 | 16 | 2 | 2 | 2 | 100 | 40 | 100 | 
| 未使用 | 未使用 | 0 | 34 | 0 | 1 | 1 | 0 | 88 | 188 | 48 | 
| \$1\$1\$1 |  | 64 | 32 | 66 | 8 | 8 | 8 | 488 | 488 | 488 | 

## ステップ 3: 分割使用率と使用率を計算する
<a name="w2aac32c21c13c31c15"></a>

分割使用率  
EC2 インスタンスで使用可能な CPU またはメモリ全体と比較した、Kubernetes ポッドが使用している CPU またはメモリの割合。

未使用率  
EC2 インスタンスで使用されている CPU またはメモリ全体の (つまり、インスタンスの未使用の CPU またはメモリは考慮されていません) に対する Kubernetes ポッドが使用している CPU またはメモリの割合。

EC2 インスタンスで使用可能な CPU またはメモリ全体と比較した、Kubernetes ポッドが使用している CPU またはメモリの割合。

`Pod1-GPU-Utilization-Ratio = Allocated-GPU / Total-GPU`

`= 1 gpu / 8 gpu = 0.125`

`Pod1-vcpu-Utilization-Ratio = Allocated-vcpu / Total-vcpu`

`= 16 vcpu / 66 vcpu = 0.24`

`Pod1-Memory-Utilization-Ratio = Allocated-GB / Total-GB`

`= 100 GB/ 488GB = 0.205`

`Pod1-GPU-Split-Ratio = Pod1-GPU-Utilization-Ratio / (Total-GPU-Utilization-Ratio – Instance-Unused-GPU). Set to 0 if Instance-Unused-GPU = 0`

`= 0 since Instance-Unused-GPU is 0`

`Pod1-vcpu-Split-Ratio = Pod1-CPU-Utilization-Ratio / (Total-CPU-Utilization-Ratio – Instance-Unused-CPU). Set to 0 if Instance-Unused-CPU = 0`

`= 0 since Instance-Unused-CPU is 0`

`Pod1-Memory-Split-Ratio = Pod-Memory-Utilization-Ratio / (Total-Utilization-Ratio – Instance-Unused-Memory). Set to 0 if Instance-Unused-Memory = 0`

`= 0.204/ (1-0.102) = 0.227`


**表 3: 使用率の計算**  

| ポッド名 | 名前空間 | vCPU 使用率 | vCPU 分割率 | vCPU 使用率 | vCPU 分割率 | メモリ使用率 | メモリ分割率 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Pod 1 | 名前空間 1 | 0.242 | 0 | 0.125 | 0 | 0.205 | 0.227 | 
| Pod 2 | 名前空間 2 | 0.277 | 0 | 0.375 | 0 | 0.287 | 0.318 | 
| Pod 3 | 名前空間 1 | 0.242 | 0 | 0.25 | 0 | 0.205 | 0.227 | 
| ポッド 4 | 名前空間 2 | 0.242 | 0 | 0.25 | 0 | 0.205 | 0.227 | 
| 未使用 | 未使用 | 0 |  |  |  | 0.098 |  | 
|  |  | 1 | 0 | 1 | 0 | 1 | 1 | 

## ステップ 4: 分割コストと未使用コストの計算
<a name="w2aac32c21c13c31c17"></a>

分割コスト  
Kubernetes ポッドによって割り当てられた CPU とメモリの使用量に基づく EC2 インスタンスコストの従量課金制コスト配分。

未使用インスタンスのコスト  
インスタンス上の未使用の CPU リソースまたはメモリリソースのコスト。

`Pod1-Split-Cost = (Pod1-GPU-Utilization-Ratio * GPU-Available * Cost per GPU-Hour) + (Pod1-vcpu-Utilization-Ratio * vcpu-Available * Cost per vcpu-Hour) + (Pod1-Memory-Utilization-Ratio * Memory-Available * Cost per GB-Hour)`

`= (.125*8gpu*$0.504) + (0.242 * 64 vcpu * $0.05) + (0.204 * 488GB * $0.00506) = 0.504+ 0.774 + 0.503 = $1.85`

`Pod1-Unused-Cost = (GPU-Split-Ratio * Unused-Cost) + (vcpu-Split-Ratio * Unused-Cost) + (Memory-Split-Ratio * Unused-Cost)`

`= (0*0*8*$0.504) + (0 * $0.05) + (0.227 *.102*488GB*$.00506) = $0.06`

`Pod1-Total-Split-Cost = Pod1-Split-Cost + Pod1-Unused-Cost = $1.85 + $0.06 = $1.91`

[注意: 未使用コスト = 未使用使用率 \$1 合計リソース数 \$1 リソースの時間単位のコスト]


**表 4 - クラスター内で実行されているすべてのポッドについて 1 時間ごとに計算された分割コストと未使用コストの概要**  

| ポッド名 | 名前空間 | 分割コスト | 未使用コスト | 合計コスト | 
| --- | --- | --- | --- | --- | 
| Pod 1 | 名前空間 1 | 1.85 USD | 0.06 USD | 1.91 USD | 
| Pod 2 | 名前空間 2 | 3.18 USD | 0.09 USD | 3.26 USD | 
| Pod 3 | 名前空間 1 | 2.35 USD | 0.06 USD | 2.41 USD | 
| ポッド 4 | 名前空間 2 | 2.35 USD | 0.06 USD | 2.41 USD | 
| Total |  |  |  | 10 USD | 