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
| 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.
| 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
| 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]
| 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 |