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