miércoles, 6 de octubre de 2010

VMware vSphere: Cuantas vCPU asignar por Virtual Machine?


Cuando creamos nuevas maquinas virtuales o realizamos una migración P2V con vCenter Converter frecuentemente surge la duda respecto de cuantas vCPU asignar a dicha maquina virtual.  A continuación detallaré algunas recomendaciones respecto a este tema, de manera de tener más claridad a la hora de configurar este recurso.

El numero de vCPUs requeridas para una VM depende del sistema operativo, aplicaciones y carga de trabajo.

  1. Por defecto asignar solo una vCPU, a menos que haya una clara necesidad por más recursos:
  2. Si hay una necesidad de mas vCPUs, entonces el sistema operativo y las aplicaciones deben soportarlas.  El sistema operativo debe soportar symmetric multiprocessing (SMP), y las aplicaciones deben ser multithreaded.  En el caso de las aplicaciones multithreaded, se debe consultar la documentación de la aplicación para determinar el numero de vCPU recomendadas por el fabricante.
  3. Si la carga de trabajo requiere multiples vCPU, configurar tan pocas como sea posible, esto con el fin de lograr una mejor perfomance a nivel de maquina virtual y a nivel de host.
  4. Mientras más vCPUs tenga una maquina virtual, mas recursos de CPU y Memoria son necesarios para administrarla.  Esta carga adicional desperdicia recursos innecesariamente si las vCPUs adicionales no son requeridas (Sistema Operativo sin soporte SMP o aplicaciones sin soporte Multithread).
  5. Si la aplicacion no soporta multithread y se requiere mayor capacidad de procesamiento, se recomienda utilizar una estrategia scale-out, instalando múltiples maquinas virtuales con una única vCPU, cada una proveyendo el mismo servicio o aplicacion a diferentes usuarios.



Tener en cuenta lo siguiente en caso de decidir utilizar más de una vCPU por virtual machine:

  1. Las vCPU consumen interrupciones del reloj aun cuando dichas vCPU no estén siendo utilizadas por la Virtual Machine.
  2. Mantener la memoria consistente entre multiples vCPU consume recursos adicionales
  3. Algunos sistemas operativos obsoletos ejecutan ciclos vacíos sobre las vCPU no utilizadas, lo cual consume recursos que podrían ser reasignados y mejor utilizados para otros fines.
  4. Debe ser posible para todas las vCPU ser programadas sobre un Core físico al mismo tiempo, cuando la Virtual Machine esta programada para ejecutarse.  Esto no significa que cada vCPU será programada para ejecutarse sobre un procesador fisico cuando la VM esta programada para ejecutarse.  Cuantas vCPUs están ejecutándose a la vez, depende de la operacion que este siendo realizada en dicho momento.
    Este punto es muy importante, ya que si nuestra Virtual Machine tiene, por ejemplo, 4 vCPU y una operación requiere el uso de todas las vCPU a la vez, la operación debe esperar hasta que se encuentren 4 Cores físicos disponibles a la vez para atender la solicitud, de lo contrario no se podrá ejecutar dicha operación.  Esto puede provocar problemas de performance importantes si la espera por disponibilidad de Cores fisicos se prolonga.
  5. El numero de vCPU no puede exceder el numero de Cores físicos en el host.  Por ejemplo, si un host tiene 1 CPU Quadcore, el numero máximo de vCPU a asignar es de 4.  En el mismo ejemplo, si los cores tienen soporte Hyperthreading, el numero máximo de vCPU es de 8.



Finalmente, cuando se realicen migraciones de maquinas físicas a virtuales, las maquinas virtuales deben ser creadas con hardware virtual que coincida con la capa de abstracción de hardware (HAL) del servidor físico.  Esto evita problemas de performance asociados con un host físico multiprocesador siendo virtualizado a una maquina virtual con un solo procesador.  Se recomienda revisar la documentación especifica del sistema operativo a ser virtualizado.
En caso contrario, VMware recomienda cambiar la HAL en la virtual machine a uniprocesador, si el servidor físico esta configurado con HAL multiprocesador, y la maquina virtual de destino esta configurada para usar una unica vCPU.

Espero que estas recomendaciones les sean de utilidad a la hora de crear una maquina virtual, o realizar una conversión P2V.  En un próximo articulo entregaré recomendaciones respecto a la gestión de la memoria en una plataforma VMware.

0 comentarios:

Publicar un comentario