Ejemplo de datos de asignación de costos divididos para instancias aceleradas - Exportaciones de datos de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplo de datos de asignación de costos divididos para instancias aceleradas

El objetivo del siguiente ejemplo es mostrarle cómo se calculan los datos de asignación de costos divididos mediante el cómputo del costo de los pods y espacio de nombres de Kubernetes en los clústeres de Amazon EKS. Las tasas utilizadas en todo el ejemplo tienen únicamente fines ilustrativos.

Tiene el siguiente uso en una sola hora:

  • EC2 Instancia única que ejecuta cuatro pods en dos espacios de nombres y desea conocer los costos de cada espacio de nombres.

  • La EC2 instancia es p3.16xlarge con 8 GPU, 64 vCPU y 488 GB de RAM.

  • El costo amortizado de la instancia es de 10$ por hora.

Los datos de asignación de costos divididos normalizan el costo por recurso en función de un índice relativo de la GPU:(cpu:memoria) de 9:1. Esto implica que una unidad de GPU cuesta nueve veces más que una unidad de CPU y memoria. Por ello, a la CPU y a la memoria se les asigna entonces un peso de 9:1. Para una EC2 instancia no acelerada, se adoptará el comportamiento predeterminado actual, que es la CPU: el peso de la memoria se establece de forma predeterminada en 9:1.

Paso 1: cálculo del costo unitario

En función de los recursos de CPU y memoria de la EC2 instancia y utilizando la relación mencionada anteriormente, los datos de asignación de costes divididos calculan primero el coste unitario por GPU, vCPU-hora y GB-hora.

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

Tabla 1: Cálculo del costo unitario
Instancia Tipo de instancia vCPU disponible GPU disponible ** Memoria disponible Costo amortizado por hora Costo por hora de vCPU Costo por hora de GPU Costo por hora de GB
Instancia 1 p3.16xlarge 64 8 488 10$ 0,05 USD 0,50$ 0,005

Paso 2: cálculo de la capacidad asignada y sin utilizar

Capacidad asignada

La GPU, la vcpu y la memoria asignadas al pod de Kubernetes desde la EC2 instancia principal, definidas como la capacidad máxima (reservada, utilizada)

Capacidad sin utilizar de la instancia

Capacidad no utilizada de la GPU, la vcpu y la 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

En este ejemplo, la instancia tiene una sobresuscripción de CPU, lo que se atribuye a que Pod 2 ha utilizado más GPU y vcpu de la que estaba reservada.

Paso 2: cálculo de la capacidad asignada y sin utilizar
Nombre de pod Namespace vcpu reservada vcpu utilizada vcpu asignada GPU reservada GPU usada GPU asignada Memoria reservada Memoria usada Memoria asignada
Pod 1 Espacio de nombres 1 16 4 16 1 1 1 100 60 100
Pod 2 Espacio de nombres 2 16 18 18 2 3 3 100 140 140
Pod 3 Espacio de nombres 1 16 4 16 2. 1 2 100 60 100
Pod 4 Espacio de nombres 2 16 4 16 2 2 2. 100 40 100
No utilizado No utilizado 0 34 0 1 1 0 88 188 48
*** 64 32 66 8 8 8 488 488 488

Paso 3: cálculo de los índices de uso dividido y de utilización

Índice de uso dividido

El porcentaje de CPU o memoria que utiliza el pod de Kubernetes en comparación con el total de CPU o memoria disponible en la instancia. EC2

Índice no utilizado

El porcentaje de CPU o memoria que usa el pod de Kubernetes en comparación con la CPU o memoria total utilizada en la EC2 instancia (es decir, sin tener en cuenta la CPU o la memoria no utilizadas de la instancia).

El porcentaje de CPU o memoria que utiliza el pod de Kubernetes en comparación con el total de CPU o memoria disponible en la instancia. 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

Tabla 3: Índices de utilización de la computación
Nombre de pod Namespace Utilización de vcpu Índice de uso dividido de vcpu Uso de la GPU Índice de uso dividido de la GPU Utilización de la memoria Índice de uso dividido de la memoria
Pod 1 Espacio de nombres 1 0,242 0 0.125 0 0,205 0.227
Pod 2 Espacio de nombres 2 0,277 0 0,375 0 0,287 0,318
Pod 3 Espacio de nombres 1 0,242 0 0,25 0 0,205 0.227
Cápsula 4 Espacio de nombres 2 0.242 0 0,25 0 0,205 0.227
No utilizado No utilizado 0 0,098
1 0 1 0 1 1

Paso 4: cálculo del costo dividido y los costos no utilizados

Costos divididos

La asignación del costo de pago por uso del costo de la EC2 instancia en función del uso de CPU y memoria asignado por los pods de Kubernetes

Costo de las instancias sin utilizar

Es el costo de los recursos de CPU o memoria no utilizados de la instancia.

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 no utilizado = ratio de tiempo útil no utilizado * Recurso total * Costo por hora del recurso]

Tabla 4: Resumen de los costos divididos y no utilizados calculados cada hora para todos los pods que se ejecutan en el clúster
Nombre de pod Namespace Costos divididos Costo no utilizado Costo total
Pod 1 Espacio de nombres 1 1,85$ 0,06 USD 1,91$
Pod 2 Espacio de nombres 2 3,18 DÓLARES 0,09$ 3,26 DÓLARES
Pod 3 Espacio de nombres 1 2,35 DÓLARES 0,06 USD 2,41 DÓLARES
Cápsula 4 Espacio de nombres 2 2,35 DÓLARES 0,06 USD 2,41 DÓLARES
Total 10 DÓLARES