lunes, 11 de marzo de 2019

Como calcular la sobresuscripcion de CPU

La principal ventaja que podemos encontrar a la visualización de nuestras máquinas reside en la posibilidad de aprovechar mejor los recursos de nuestro hardware, normalmente infrautilizados con un único servicio por servidor. O lo que es lo mismo, donde antes teníamos un servidor cuya única función podía ser, por ejemplo, un Domain Controller que normalmente nunca en su vida vería su CPU llegando ni al 10% de uso, ahora en esa misma máquina física podemos montar un ESXi que soporte, un número x de máquinas virtuales que nos permita exprimir esos recursos. Esto es posible mendiante la sobresuscripcion de recursos.



Dejando fuera el espacio en disco, que normalmente estará alojado en un datastore, los recursos que vamos a exprimir normalmente son CPU y RAM. En este post, nos centraremos en la CPU.

Primero, vamos a diferenciar entre el procesador físico y el virtual. Por una parte tenemos los pCPU, los procesadores que trae el host que soportará el funcionamiento de las máquinas virtuales. Vamos a tomar como ejemplo, el siguiente caso:


Aquí vemos un servidor con un solo socket instalado. Ese socket contiene 6 cores, o pCPUs, que con hyperthreading activado, funcionan como si hubiera 12 pCPUs. Por eso vemos que indica que tiene 6 cores, pero 12 procesadores lógicos.

Por otra parte tenemos los vCPUs, los procesadores virtuales asociados a este equipo. Supongamos que este servidor aloja 6 VM´s con 4 vCPUs cada una. Esto haría un total de 24 vCPUs corriendo solo tan solo 12 pCPUs. Esto es posible porque las vCPUs son, eso, virtuales. Realmente lo que asignas son una serie de recursos físicos máximos a esa máquina virtual. O dicho de otra manera, un porcentaje máximo de tiempo de procesador del que puede hacer uso del pool de recursos del host físico que la soporta. Y como normalmente las máquinas no hacen un uso intensivo del procesador, esto significa que puedes asignar más recursos virtuales que recursos físicos tiene la máquina.

¿Y cuantos vCPUs puedes asignar por pCPU? 

Pues según las tablas de máximos asignables en vSphere 6.7, nos encontramos con 32 vCPUs por núcleo. En la imagen de arriba vemos que tenemos un vSphere 5 licenciado para un unico socket, con lo que no da para jugar con muchas máquinas, pero si fuera un vSphere 6.7 significa que podríamos tener hasta 12x32 CPUs = 384 vCPUs corriendo en ese host. Menuda salvajada, ¿verdad?

Esto no quiere decir que aunque podamos asignar tantos procesadores a las VMs, debamos hacerlo. Existe un ratio recomendado de sobresuscripcion de procesadores, que varia según distintas fuentes de información. Un ratio clásico seria un 4:1, o sea, 4 vCPUs por pCPU, pero otros recomiendan hasta un ratio 8:1.

Ahora bien, lo suyo es realmente hacer el cálculo de uso en función del consumo de tus VM´s. Como decía, no es lo mismo una VM con una función de File Server que una VM con un Oracle BI, por ejemplo.

Cómo realizar un cálculo de vCPUs

El valor más valioso con el que vamos a contar para realizar el cálculo de las vCPUs que necesitamos en nuestra VM es el valor "CPU Ready" en el host. Este valor nos informa del tiempo que la VM está esperando a que el host asigne recursos de pCPU a nuestros vCPUs

Se recomienda que el CPU Ready esté por debajo del 5%. Para ello, recurriremos a la gráfica del vCenter. Los cálculos se realizan mediante la siguiente fórmula: 

(x ms / 20.000 ms) * 100 = %rdy

Pero es más fácil utilizar una tabla de cálculo rápido, por ejemplo, esta:

1% = 200ms
5% = 1000ms
10% = 2000ms
100% = 20000ms

Estos cálculos son por vCPU, de forma que mirando las máquinas que estamos tomando como ejemplo, con 4 vCPUs, las cifras se cuadruplicarán. O sea, una máquina con un Average de 4.000 ms pero con 4 vCPUs tendra un equivalente a 1.000 ms/vCPU, y por tanto un 5% de tiempo de espera de planificacion de procesador, algo aceptable.

Click en la imagen para agrandar

En este caso, he puesto en la gráfica los siguientes valores:


Esto ayuda a leer la gráfica sin entrar en los cálculos de antes. Si os fijáis en la imagen grande anterior, obtenemos para la VM del ejemplo un tiempo de planificación ligeramente superior al 5%, lo que es aceptable, en los límites. Habría que ver cómo se comporta la VM con una carga de trabajo intensa.

Espero que no haya resultado muy confuso. Al final, una vez pones los valores de Usage Average Percentual en la gráfica, la cosa se simplifica mucho.

A modo de curiosidad, os dejo este LINK a los valores máximos de configuración de vSphere 6.5, para que veais a dónde se puede llegar con esta herramienta

2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Yo hasta ahora he estado utilizando la aplicación llamada wingedbox disco virtual que me ha funcionado bien, pero no está de más tener más opciones disponibles y te agradezco por el aporte.

    ResponderEliminar

¡Gracias por colaborar en este blog con tus comentarios! :)