Ejemplo de datos de asignación de costes 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 costes divididos para instancias aceleradas

El propósito del siguiente ejemplo es mostrarle cómo se calculan los datos de asignación de costos divididos calculando el costo del espacio de nombres y los pods 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 una proporción relativa de GPU :( cpu: memoria) de 9:1. Esto implica que una unidad de GPU cuesta 9 veces más que una unidad de CPU y memoria. A continuación, se asigna un peso de 9:1. a la CPU y a la memoria. Para una EC2 instancia no acelerada, se adoptará el comportamiento predeterminado actual, que es la CPU: el peso de la memoria por defecto es 9:1.

Paso 1: Calcule el 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 coste unitario
instancia Tipo de instancia vCPU disponible GPU disponible ** Memoria disponible Coste amortizado por hora Coste por hora de CPU virtual Coste por hora de GPU Coste por GB-hora
Instancia 1 p3.16xlarge 64 8 488 10 dólares 0,05 USD 0,50$ 0,005

Paso 2: Calcular la capacidad asignada y no utilizada

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 no utilizada de la instancia

La 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 el Pod 2 utilizó más GPU y vcpu de lo que estaba reservado.

Tabla 2: Calcule la capacidad asignada y no utilizada
Nombre del pod Espacio de nombres vcpu reservado vcpu utilizada vcpu asignada GPU reservada GPU utilizada GPU asignada Memoria reservada Memoria utilizada 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
Cápsula 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: Calcule las tasas divididas de uso y utilización

Proporción de uso dividida

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

Proporción no utilizada

El porcentaje de CPU o memoria que utiliza el pod de Kubernetes en comparación con la CPU o memoria totales utilizadas 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 del cómputo
Nombre del pod Espacio de nombres Utilización de la vcpu Relación de división de la vcpu Utilización de la GPU Proporción de división de la GPU Utilización de memoria Relación de división de 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: calcule el costo dividido y los costos no utilizados

Coste dividido

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

Coste de la instancia no utilizada

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: Coste no utilizado = ratio de tiempo útil no utilizado * Recurso total * coste 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 del pod Espacio de nombres Coste dividido Coste no utilizado Coste 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