Esempio di suddivisione dei dati di allocazione dei costi per istanze accelerate - Esportazioni di dati AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempio di suddivisione dei dati di allocazione dei costi per istanze accelerate

Lo scopo del seguente esempio è mostrare come vengono calcolati i dati di suddivisione dei costi calcolando il costo dello spazio dei nomi e dei pod Kubernetes nei cluster Amazon EKS. Le tariffe utilizzate nell'esempio sono solo a scopo illustrativo.

Hai il seguente utilizzo in una sola ora:

  • EC2 Istanza singola che esegue quattro pod su due namespace e che desideri comprendere i costi di ogni spazio dei nomi.

  • L' EC2 istanza è p3.16xlarge con 8 GPU, 64 vCPU e 488 GB di RAM.

  • Il costo ammortizzato dell'istanza è di 10 USD all'ora.

I dati di allocazione dei costi suddivisi normalizzano il costo per risorsa in base a un rapporto relativo tra GPU :( cpu: memoria) di 9:1. Ciò implica che un'unità di GPU costa 9 volte tanto quanto un'unità di CPU e memoria. Alla CPU e alla memoria viene quindi assegnato un peso di 9:1. Per un' EC2 istanza non accelerata, verrà adottato il comportamento predefinito corrente che è cpu: memory weight predefinito è 9:1.

Fase 1: Calcola il costo unitario

In base alle risorse di CPU e memoria dell' EC2 istanza e utilizzando il rapporto sopra menzionato, i dati di Split Cost Allocation calcolano innanzitutto il costo unitario per GPU, vCPU-Hr e GB-h.

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

Tabella 1: Calcolo del costo unitario
Istanza Tipo di istanza vCPU disponibile GPU disponibile ** Memoria disponibile Costo orario ammortizzato Costo per vCPU all'ora Costo per ora della GPU Costo per GB all'ora
Istanza 1 p3.16xlarge 64 8 488 $10 0,05 $ $0,50 0.005

Fase 2: Calcolare la capacità allocata e non utilizzata

Capacità allocata

La GPU, la vcpu e la memoria allocate al pod Kubernetes dall' EC2 istanza principale, definite come la capacità massima (riservata, utilizzata)

Capacità inutilizzata dell'istanza

La capacità inutilizzata di GPU, vcpu e memoria

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

In questo esempio, l'istanza utilizza più CPU rispetto all'abbonamento, attribuita al Pod 2 che utilizzava più GPU e vcpu di quelle riservate.

Tabella 2: Calcola la capacità allocata e non utilizzata
Nome del pod Spazio dei nomi vcpu riservato vcpu Usato vcpu allocato GPU riservata GPU utilizzata GPU allocata Memoria riservata Memoria utilizzata Memoria allocata
Pod 1 Namespace 1 16 4 16 1 1 1 100 60 100
Pod 2 Namespace 2 16 18 18 2 3 3 100 140 140
Pod 3 Namespace 1 16 4 16 2 1 2 100 60 100
Pod 4 Namespace 2 16 4 16 2 2 2 100 40 100
Inutilizzato Inutilizzato 0 34 0 1 1 0 88 188 48
*** 64 32 66 8 8 8 488 488 488

Fase 3: Calcola i rapporti di utilizzo e utilizzo suddivisi

Dividi il rapporto di utilizzo

La percentuale di CPU o memoria utilizzata dal pod Kubernetes rispetto alla CPU o memoria complessiva disponibile sull'istanza. EC2

Rapporto non utilizzato

La percentuale di CPU o memoria utilizzata dal pod Kubernetes rispetto alla CPU o alla memoria complessive utilizzate nell' EC2 istanza (ovvero, senza tenere conto della CPU o della memoria non utilizzate sull'istanza).

La percentuale di CPU o memoria utilizzata dal Kubernetes Pod rispetto alla CPU o alla memoria complessive disponibili sull'istanza. EC2

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

Tabella 3: Rapporti di utilizzo del calcolo
Nome del pod Spazio dei nomi Utilizzo di vcpu rapporto di suddivisione vcpu Utilizzo della GPU Rapporto di suddivisione della GPU Utilizzo della memoria Rapporto di suddivisione della memoria
Pod 1 Namespace 1 0,242 0 0.125 0 0,205 0.227
Cialda 2 Namespace 2 0,277 0 0,375 0 0,287 0,318
Cialda 3 Namespace 1 0,242 0 0.25 0 0,205 0.227
Cialda 4 Namespace 2 0,242 0 0.25 0 0,205 0.227
Inutilizzato Inutilizzato 0 0,098
1 0 1 0 1 1

Fase 4: Calcola il costo suddiviso e i costi non utilizzati

Suddivisione del costo

L'allocazione del costo «pay per use» del costo dell' EC2 istanza in base all'utilizzo di CPU e memoria allocato dai Kubernetes Pods

Costo dell'istanza non utilizzata

Il costo delle risorse di CPU o memoria non utilizzate sull'istanza

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

[Nota: costo non utilizzato = rapporto di utilità inutilizzato * risorsa totale* costo orario della risorsa]

Tabella 4 - Riepilogo dei costi suddivisi e non utilizzati calcolati ogni ora per tutti i pod in esecuzione all'interno del cluster
Nome del pod Spazio dei nomi Costo diviso Costo non utilizzato Costo totale
Pod 1 Namespace 1 1,85$ $0,06 $1,91
Pod 2 Namespace 2 3,18$ $0,09 3,26$
Cialda 3 Namespace 1 $2,35 $0,06 $2,41
Cialda 4 Namespace 2 $2,35 $0,06 $2,41
Totale $10