高速インスタンスの分割コスト配分データの例 - AWS Data Exports

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

高速インスタンスの分割コスト配分データの例

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

1 時間あたりの使用量は以下のとおりです。

  • 2 つの名前空間で 4 つのポッドを実行しており、各名前空間のコストを把握したい単一の EC2 インスタンス。

  • EC2 インスタンスは p3.16xlarge で、8 GPU、64 vCPU、488 GB の RAM を備えています。

  • インスタンスの償却コストは 10 USD/時間です。

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

ステップ 1: ユニットコストを計算する

EC2 インスタンスの cpu リソースとメモリリソースに基づいて、上記の の比率を使用して、分割コスト配分データはまず GPU、vCPU-hr、GB-hr あたりのユニットコストを計算します。

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 時間あたりの償却コスト vCPU-時間あたりのコスト GPU 時間あたりのコスト GB-時間あたりのコスト
インスタンス 1 p3.16xlarge 64 8 488 10 USD 0.05 USD 0.50 USD 0.005

ステップ 2: 割り当てられた容量と未使用の容量を計算する

割り当てられたキャパシティ

親 EC2 インスタンスから Kubernetes Pod に割り当てられた 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 over Subscription は、予約されているものよりも多くの 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
*** 64 32 66 8 8 8 488 488 488

ステップ 3: 分割使用量と使用率を計算する

分割使用率

EC2 インスタンスで使用可能な CPU またはメモリ全体に対する、Kubernetes ポッドが使用する CPU またはメモリの割合。

未使用率

EC2 インスタンスで使用されている CPU またはメモリ全体と比較した Kubernetes ポッドで使用されている CPU またはメモリの割合 (つまり、インスタンスの未使用の CPU またはメモリを考慮しない)。

EC2 インスタンスで使用可能な CPU またはメモリ全体に対する、Kubernetes Pod が使用する 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 分割率 GPU 使用率 GPU 分割率 メモリ使用率 メモリ分割率
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: 分割コストと未使用コストの計算

分割コスト

Kubernetes Pod によって割り当てられた 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

〔注: 未使用コスト = 未使用使用率 * 合計リソース * リソース時間あたりのコスト〕

表 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