Pregunta Asignación de CPU para máquinas virtuales en ESXi


Soy un completo experto en VMware, pero recientemente configuré 4 máquinas virtuales en ESXi. 3 de las máquinas virtuales son muy intensivas en recursos (un servidor de archivos poco utilizado, un controlador de dominio de dominio poco utilizado y un host VMMA vMA), y una requiere más recursos (un servidor de terminal utilizado por una docena de personas en mi pequeña oficina).

La máquina virtual del servidor de terminal ha estado funcionando muy lentamente durante las horas pico. Mirando el resumen de rendimiento en vSphere, parece que la CPU ha subido bastante por encima del 90% bastante, el gráfico de latencia de Mi disco también tiene algunos picos, y ocasionalmente aumenta hasta 500 ms aproximadamente.

No he configurado ninguna de las configuraciones de asignación de recursos en VMware, y siempre asumí que sería lo suficientemente inteligente como para permitir que las máquinas virtuales más ocupadas usen los recursos disponibles cuando las máquinas virtuales menos ocupadas no las necesitaban. Sin embargo, parece que este no es el caso, porque el gráfico de CPU para el servidor en general nunca supera el 10%, y la latencia del disco nunca supera los 4 ms.

Entonces, eso me dice que quizás deba configurar algunas de las asignaciones de recursos en VMware, pero no entiendo muy bien qué debo configurar en esta situación. ¿Debo aumentar el número de vCPU o configurar la afinidad del procesador? ¿O debo usar las características de las acciones o reservas? Esencialmente, no quiero matar por completo a las otras VM de recursos, pero sí quiero que el servidor de terminal pueda usar los recursos del sistema que parecen estar disponibles.

Gracias de antemano por cualquier orientación.


5
2017-09-04 11:47


origen


Le sugiero que compre discos duros más rápidos y los saquee. La mayoría de los problemas de rendimiento con las máquinas virtuales se deben a que quienquiera que construya el sistema se basta en los discos duros. - Ardesco


Respuestas:


En ESXi, una vCPU se asignará a un núcleo en un núcleo de CPU real para el cálculo. Esto significa que una VM configurada con 1 vCPU en un sistema con 4 núcleos nunca puede usar más de alrededor de 1/4 de la capacidad del sistema. En términos generales, no desea configurar máquinas virtuales con demasiadas vCPU (ya que la sobrecarga adicional de vCPU agrega), ni muy pocas (ya que no puede usar la capacidad total del hardware).

Para un escenario tan simple como lo describe, no debería tener que perder el tiempo con el sistema de asignación de recursos o la afinidad del procesador. De forma predeterminada, ESXi utiliza un sistema que asigna una parte justa de los recursos a cada vm, donde los recursos configurados se utilizan para calcular cuántas acciones obtiene una VM. Así que realmente no tienes que preocuparte por la inanición.

Hay mucho que aprender sobre el rendimiento en ESXi, pero recomendaría comenzar con la lectura a través de mejores prácticas Si desea saber cómo configurar el sistema para un rendimiento razonable.


4
2017-09-04 12:14



En aras de la brevedad, sí, podría agregar una vCPU más y ver si eso ayuda, pero no solo agregarlas a la ligera, cada una requiere una sobrecarga de administración para que no solo obtenga rendimientos decrecientes sino que eventualmente esté desperdiciando recursos si no hace que las cosas funcionen. aun mas lento - TheFiddlerWins
@TheFiddlerWins: Mi experiencia con ESXi es que la programación ha mejorado significativamente y la sobrecarga para configurar sistemas con múltiples vCPU se ha reducido con cada generación. Si bien fue cierto para algunas versiones anteriores de ESXi que podría respaldar el sistema en una esquina ejecutando máquinas virtuales con demasiadas vCPU. No he visto ese comportamiento en años. ¿Está seguro de que aún es posible hacer que las cosas vayan más lentas agregando vCPU's a un vm en escenarios sin una sobrecarga excesiva de vCPU y carga? - pehrs
El último seminario de VMware al que asistí estuvo de acuerdo con usted, aparte de decir que el problema no ha desaparecido por completo. - Keith Stokes
Gracias, esto es útil. Esta máquina tiene 12 núcleos, y solo tengo 1 vCPU predeterminada configurada para cada una de las 4 máquinas virtuales. Por lo tanto, si cada VM se asigna a un solo núcleo, supongo que tiene sentido que el servidor de Terminal Server no tenga suficientes recursos y que la caja general esté infrautilizada. Si no estoy suscribiendo en exceso las CPU, ¿hay algo que perder al dar a esta VM, por ejemplo, 4 vCPU? ¿O sigue siendo una posibilidad que al hacerlo podría empeorar el rendimiento? - Martin
Dar a cada servidor 4 vCPU debería estar bien en su escenario. Obtendrá un gran aumento de rendimiento para las máquinas virtuales y utilizará su hardware de manera más eficiente. Pero eso es una sobresuscripción de la CPU, ya que habría asignado 4 * 4 = 16 vCPU a 12 núcleos. La sobresuscripción significa que ha asignado más recursos a sus máquinas virtuales que los que están disponibles en el hardware físico, y confía en el hecho de que todas las máquinas no usan los recursos al mismo tiempo. - pehrs


Este puede ser un caso de recursos inadecuados en el lado de la máquina virtual del servidor de terminal.

  • ¿Qué recursos ha asignado a esta máquina virtual en particular?
  • ¿Qué recursos están disponibles en el host ESXi?

Podría haber un uso intensivo de la memoria que lleve a la paginación / intercambio de la memoria virtual. Eso podría afectar la E / S de disco de su máquina virtual de servidor de terminal individual sin tener un efecto mayor en el hipervisor.

Mira el uso de memoria del servidor de terminal. Posiblemente aumentarlo si puedes. Evaluar la utilización de CPu también. Ajuste en consecuencia si tiene los recursos de repuesto.


4
2017-09-04 12:11



El sistema tiene 48 GB de RAM, de los cuales 24 GB están asignados al servidor de terminal. El uso de RAM en la máquina virtual es bastante bajo, así que asumo que este no es el problema. El sistema tiene 2 CPU con 6 núcleos cada una (Xeon 2.3GHz). Gracias. - Martin
¿Cuántas vCPU se asignan a la máquina virtual? - ewwhite
Nunca configuré las vCPU, así que todas están configuradas con el valor predeterminado de 1. Según el otro comentario a continuación, parece que este podría ser mi problema; Puede parecer obvio, pero no sabía que esto limitaría mi máquina virtual a usar un núcleo físico. - Martin