• Escrito por 
  • Publicado en Blog
  • 15 comentarios

Todo sobre vCPUs en VMware vSphere de forma simple

Aprovisionamiento vCPU

Si bien las contenciones de CPU en una infraestructura de virtualización están generalmente al final de la lista en cuanto a cuellos de botella se refiere, en este Post explicaremos los principales conceptos de CPU. Comentaremos también principios de diseño para un correcto aprovisionamiento de recursos de Procesador y por último explicaremos los contadores de rendimiento de cara a identificar posibles contenciones a nivel de CPU en las Máquinas Virtuales.

 

Comenzamos con los conceptos.

 

World: es un contexto de ejecución, como un proceso, asignado a un procesador. Una Máquina Virtual es una colección o grupo de Worlds como MKS, VMM, vCPU0 y vCPU1.

 

CPU Scheduler: aprovisiona recursos de CPU a los diferentes Worlds asignándolos a los diferentes CPUs del Procesador Físico. Asigna (y balancea) vCPUs a CPUs físicas.

El CPU Scheduler se encarga de priorizar el aprovisionamiento de recursos de CPU considerando los Shares, Reservas y Límites.

 

NUMA Scheduler: el servicio de CPU Scheduler tiene como característica adicional la gestión de los CPU NUMA Aware.

Los CPU NUMA (Non-Uniform Memory Access) cuentan con bancos de memoria gestionados por cada procesador de forma particular. Los procesos gestionados por un CPU acceden de forma más rápida a la memoria “local” del CPU a diferencia de la memoria “remota” gestionada por otro CPU del mismo Host físico.

El NUMA Scheduler restringe a los vCPUs de las Máquinas Virtuales para que trabajen sobre el mismo Socket Físico y siempre que se pueda con memoria “local” gestionada por el propio Socket.

 

Co-Scheduling: se trata de la tecnología que coordina los procesos ejecutados en múltiples procesadores al mismo tiempo. Aplica a Máquinas Virtuales con múltiples vCPUs.

 

Wide-VM: se considera una Wide-VM cuando el número de vCPUs de una Máquina Virtual es superior al número de Cores de un nodo NUMA. Para este cálculo únicamente hay que considerar los Cores y la características Hyperthreading no cuenta.

Como ejemplo podríamos poner una Máquina Virtual de 8 vCPUs en un Host con 2 Sockets de 4 Cores cada uno.

 

Procesador o Socket: Procesador del Host físico. Un Procesador cuenta con Cores, Caché y GHz entre las características más importantes.

Conceptos CPU, Socket y Core 

Core: número de núcleos del que dispone un Procesador. Los procesadores pueden ser de 2, 4, 6, 8 o más núcleos. A mayor cantidad de cores/nucleos, mayor capacidad de procesamiento dispondremos.

 

HyperThreading: tecnología propietaria de Intel que permite optimizar el uso de los Procesadores pudiendo utilizar múltiples procesos de forma paralela.

Si un Procesador de un Host en vSphere tiene el HyperThreading habilitado, se duplicará el número de Cores identificándolos como Procesadores Lógicos.

 

A continuación veremos las opciones de aprovisionamiento disponibles dependiendo del número de Sockets y Cores.

 
vCPUs y Cores
El número de vCPU o vSocket de una Máquina Virtual nunca puede ser superior al número máx. de Cores del Host

 

También tendremos una limitación de asignación de vCPUs por cada Máquina Virtual que estará limitado por la licencia de vSphere que utilicemos.

Número máximo de vCPUs en vSphere Estándar*: 8

Número máximo de vCPUs en vSphere Enterprise: 16

Número máximo de vCPUs en vSphere Enterprise Plus: 64

*Incluye las versiones Essentials y Essentials Plus

 

 Consideraciones de aprovisionamiento de vCPUs en una Infraestructura Virtual

La forma correcta y más adecuada de diseñar un aprovisionamiento de vCPUs en un entorno virtual es ayudándonos de una herramienta como el Capacity Planner.

Esta herramienta (disponible únicamente para los Partners de VMware) analiza el consumo de CPU, los picos, promedio, etc y nos indica con total certeza el número de Sockets y Cores que necesitamos en total y para cada Máquina Virtual en particular.

 

Capacity Planner


En caso que no dispongamos del Capacity Planner podemos utilizar otro método respondiendo a las siguientes preguntas:

 

-Número total de Máquinas Virtuales

-Número de vCPUs por Máquina Virtual (sumando el total de vCPUs)

-Ratio de consolidación vCPU/Core a utilizar

-Capacidad adicional para crecimiento estimado

-Capacidad extra para Alta Disponibilidad

-Características de los Procesadores Físicos a utilizar en los Hosts (números de Cores)

-Número de Sockets a utilizar en cada Host

 

Para completar los datos podemos hacer el siguiente supuesto:

Entorno con 60 Máquinas Virtuales de las cuales 35 tendrán un único vCPU, 20 serán aprovisionadas con 2 vCPUs y las 5 restantes contarán con 4 vCPU.

El Ratio de consolidación a utilizar será muy conservador, de 4 a 1 (4 vCPUs por cada Core).

El objetivo es soportar la caída de un Host dentro del Cluster y contar con una estimación de crecimiento del 35% en los próximos tres años.

Los Procesadores Físicos a utilizar serán Intel Xeon de 6 Cores con HyperThreading y funcionarán sobre Hosts de 2 Sockets cada uno.

 

Pasando a números el supuesto presentados tenemos:

Número total de Máquinas Virtuales: 60

Número de vCPUs a aprovisionar: 95

Ratio de consolidación: 4 a 1 = 24 Cores.

Capacidad adicional del 35% por crecimiento futuro: 8 Cores adicionales, igual a 32 Cores.

Características de los Procesadores 6 Cores = 5,6 Procesadores de 6 Cores para los 32 Cores.

Capacidad extra para Alta Disponibilidad: Al considerar Hosts con 2 Sockets entonces serían 2 Procesadores adicionales que es igual a un Host.

 

Se utilizaría entonces un Cluster de 4 Hosts con 2 Sockets de 6 Cores cada uno con una capacidad total de hasta 192 vCPUs pudiendo soportar tanto la caída de 1 Host a la vez que hasta un 35% de crecimiento futuro sobre el mismo Cluster.

 

Si bien en esta estimación no se han considerado los GHz que necesitamos, la capacidad de procesamiento de la que se dispondrá y el número de vCPUs por cada Máquina Virtual, debería cubrir con creces los requerimientos de GHz para todas las Máquinas Virtuales.

 

En el próximo Post aprenderemos a analizar el consumo de CPU así como a identificar posibles cuellos de botella en el rendimiento utilizando ESXTOP.

 

Como siempre, ha sido un placer. Espero que os haya sido útil. 

15 comentarios

Deja un comentario

Muchas gracias por tus comentarios!!
Tras la revisión rutinaria, será publicado.

Mis Partners