• Escrito por 
  • Publicado en Blog
  • 14 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. 

14 comentarios

  • Fede
    Fede Miércoles, 14 Junio 2017 13:25 Enlace al Comentario

    Hola David,

    vROps es la herramienta ideal para monitorizar entornos VMware. Los baremos de alerta y crítico bienen por defecto y en realidad son correctos. Si bien es posible cambiar las políticas en vROps eso es útil unicamente en casos de excepción y no creo que sea el caso de la CPU que estás comentando.
    Tanto si tenes un pico de consumo o bien una carga alta constante, el propio vROps te va a alertar y además te recomendará el número correcto de vCPUs para cada VM en concreto así como también si te hace falta más recursos de CPU en un Cluster.

    Un saludo

  • David Nieto
    David Nieto Martes, 13 Junio 2017 22:28 Enlace al Comentario

    Hola buenos tardes, tengo una consulta, necesito monitorear mi infraestructura y lo estoy planenando con vrops, la duda que tengo es que dato es el correcto para considerar como consumo del servidor a nivel hardware, veo muchos metricas y me confundo. Agradeceria mucho tu ayuda.

    Saludos !!!

  • Fede
    Fede Miércoles, 18 Enero 2017 08:37 Enlace al Comentario

    Carlos,

    Tendrías que buscar ese Hardware en la lista de compatibilidad de Hardware para la versión de vSphere que vas a utilizar.

    Un saludo.

  • carlos
    carlos Martes, 17 Enero 2017 00:58 Enlace al Comentario

    tengo un servidor hp proliant dl380 gen 4 y no me funciona VMware . alguna solucion ?

  • Fede
    Fede Jueves, 07 Enero 2016 05:39 Enlace al Comentario

    Hola Jesus,

    Todo es muy relativo. En realidad lo más adecuado sería analizar (vía Capacity Planning) el consumo en MHz que tendrán esas VMs. Tendrás el total de GHz producto de la suma de los MHz de todos tus procesadores físicos. Personalmente no me gusta contar con los procesadores lógicos aunque sea positivo su uso.
    En ese punto tendrás la comparativa de recursos y de consumo previsto.
    Otra opción es partir de una base de un ratio 6 a 1 y luego ir revisando contadores de rendimiento para ver cómo se comporta. No olvides considerar los recursos extra para HA.
    Espero haberte ayudado ;-)

  • Jesus
    Jesus Miércoles, 06 Enero 2016 19:48 Enlace al Comentario

    Hola federico,

    Actualmente tengo este host con las siguientes caracteristicas:

    sockets: 1
    cores por socket: 6
    procesadores logicos: 12
    hyperthreading activo


    Cuantas vCPU podria sacar de este servidor?

  • Daniel
    Daniel Viernes, 15 Agosto 2014 21:13 Enlace al Comentario

    Gracias por tu pronta respuesta Federico, asigné esos recursos a las MVs porque así nos sugerió nuestro proveedor de software. La MV que contiene 10 vCPUs porque es una centralita Asterisk.

    Hemos contactado con nuestro proveedor y hemos realizado varias pruebas, entre ellas puedo citar, cambio de módulos de RAM, cambio de tarjeta de red, cambio de placa base y por último cambio de los 2 procesadores con el mismo resultado en cada uno de los cambios. El "cuelgue" se produce en cualquier día y hora; a partir de ahí no hay manera que responda el host, ni Web Client, SSH, consola...

    Gracias por tu tiempo,

    Un saludo,
    Daniel

  • Fede
    Fede Viernes, 15 Agosto 2014 06:43 Enlace al Comentario

    Hola Daniel,

    primero comentarte que no comprendo porqué has aprovisionado una VM con 10 vCPU y 2GB de RAM.
    Al aprovisionar más de 6 vCPU estás utilizando dos nodos NUMA del Host y eso no es recomendable desde el punto de vista de rendimiento. Realmente necesitas esos recursos de CPU y tan poca RAM?

    En cuanto al cuelgue del Host no debería tener que ver con el aprovisionamiento realizado ya que el propio Kernel se asegura la esabilidad del sistema en caso de sobreasignación de recursos.

    Si quisieras salir de dudas no tienes más que apagar la VM de 10 vCPU's y ver qué ocurre.
    Yo contactaría con el soporte del fabricante del Host para que te ayuden a hacer un testeo del Hardware.

  • Daniel
    Daniel Jueves, 14 Agosto 2014 17:38 Enlace al Comentario

    Buenas tardes Federico,

    Quería consultarte sobre el post. En mi entorno tengo un host físico con 2 procesadores y 6 cores cada procesador; así mismo provisionado con 32 GB de RAM. He provisionado una MV con 10 vCPUs y 2 GB de RAM. Así mismo tengo otra MV con 6 vCPus y 16 GB de RAM (SQL Server 2012 R2). En el artículo comentas que existe una limitación de asignación de vCPU para cada MV según la licencia, en mi caso tengo Essentials y por tanto el número máximo de vCPUs es 8.

    Estoy experimentando "cuelgues" del servidor físico que no responde ni por SSH, Web Client, ni consola física ¿puede ser debido a esta asignación de vCPU?

    Gracias por tu tiempo y felicidades por el blog :)

    Un saludo,
    Daniel

  • Federico
    Federico Miércoles, 14 Mayo 2014 13:55 Enlace al Comentario

    Hola Luciano,

    el ratio de consolidación es una recomendación propia de VMware: 4-6 por cada Core.

Deja un comentario

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

Utilizamos cookies propias y de terceros para facilitar y mejorar nuestros servicios. Al navegar por nuestra página web aceptas nuestras cookies.

Para más información, o para conocer cómo cambiar la configuración, lee nuestra Política de cookies. Saber más

Acepto

Mis Partners