XenServer

Supervisa el uso de la CPU

La cantidad óptima de vCPU por PCPU en un host depende del caso de uso. Durante la operación, asegúrese de supervisar el rendimiento del entorno de XenServer y ajustar la configuración en consecuencia.

Términos y condiciones

En esta área, hay varios términos que a veces se usan indistintamente. En este artículo, utilizamos los siguientes términos y significados:

  • CPU (CPU física): el hardware físico conectado a un socket de procesador.
  • Núcleo: Una unidad de procesamiento físico, capaz de realizar un subproceso de ejecución independiente, que contiene todas las unidades funcionales necesarias para soportar esa ejecución.
  • Hyperthread: Unidad de procesamiento físico, capaz de ejecutar un subproceso independiente, que comparte algunas unidades funcionales con otro hiperhilo (también denominado “subproceso hermano”).
  • CPU lógica (pCPU): Unidad capaz de crear un subproceso de ejecución independiente que incluye un conjunto de registros y un puntero de instrucciones. En un sistema con hyperthreads habilitados, se trata de un hyperthread. En otros casos, es un núcleo.
  • PCPU del host: el número total de CPU lógicas del host.
  • vCPU (CPU virtual): CPU lógica virtualizada. Se trata de una unidad lógica capaz de ejecutar un subproceso de ejecución independiente, que se proporciona a las máquinas virtuales. En XenServer, las vCPU pueden “compartir el tiempo” en las PCPU mediante un programador para determinar qué vCPU se está ejecutando en qué PCPU en un momento dado.
  • CPU virtuales invitadas: las vCPU que se presentan a un sistema operativo invitado dentro de una máquina virtual.
  • vCPUDom0: las vCPUque están visibles para el dominio de control de XenServer (dom0).
  • Total de vCPU del host: suma de vCPU dom0 y todas las vCPU invitadas del host.

Comportamiento general

La cantidad total de vCPU en un host es la cantidad de vCPU utilizadas por dom0 que se suma a la cantidad total de vCPU asignadas a todas las máquinas virtuales del host. A medida que aumenta la cantidad de vCPU en un host, puede experimentar los siguientes tipos de comportamiento:

  • Cuando la cantidad total de vCPU en el host es menor o igual a la cantidad de CPU en el host, el host siempre proporciona la cantidad de CPU solicitada por las máquinas virtuales.

  • Cuando la cantidad total de vCPU en el host es mayor que la cantidad de PCPU en el host, el host comparte el tiempo de las PCPU del host con las máquinas virtuales. Este comportamiento no suele afectar a las máquinas virtuales porque sus vCPU suelen estar inactivas durante parte del tiempo y, en la mayoría de los casos, el host no alcanza el 100% de uso de la CPU.

  • Cuando la cantidad total de vCPU en el host es mayor que la cantidad de PCPU en el host y, en ocasiones, el host alcanza el 100% de uso de la CPU del host, las vCPU de las máquinas virtuales no reciben la cantidad de CPU que solicitan durante los picos. En cambio, durante estos picos, las máquinas virtuales se ralentizan para recibir una parte de la PCPU disponible en el host.

  • Cuando la cantidad total de CPU virtuales en el host es mayor que la cantidad de PCPU en el host y el host suele alcanzar el 100% de uso de la CPU del host, las vCPU de las máquinas virtuales se ralentizan continuamente para recibir una parte de las CPU disponibles en el host. Si las máquinas virtuales tienen requisitos de tiempo real, esta situación no es ideal y puede solucionarla reduciendo la cantidad de vCPU en el host.

La cantidad óptima de vCPU en un host puede depender de la percepción de los usuarios de la máquina virtual sobre la velocidad de sus máquinas virtuales, especialmente cuando las máquinas virtuales tienen requisitos de tiempo real.

Obtener información sobre sus CPU

Para encontrar el número total de PCPU en su host, ejecute el siguiente comando:

xe host-cpu-info --minimal

Para averiguar el número total de vCPU (guest y dom0) que hay actualmente en el host, ejecute el siguiente comando:

xl vcpu-list | grep -v VCPU | wc -l

Supervisión del uso de la CPU con métricas RRD

XenServer proporciona métricas de RRD que describen el rendimiento de las vCPU de las máquinas virtuales.

Cuando el uso de la CPU del host es del 100%

Cuando un host alcance el 100% del uso de la CPU del host, utilice estas métricas de VM para decidir si quiere mover la VM a otro host:

runstate_concurrency_hazard

  • runstate_concurrency_hazard > 0% indica que, en ocasiones, al menos una vCPU está en ejecución mientras que al menos otra vCPU quiere ejecutarse, pero no puede obtener el tiempo de la CPU. Si las vCPU deben coordinarse, este comportamiento provoca problemas de rendimiento.

  • El hecho de querunstate_concurrency_hazard se acerque al 100% es una situación que hay que evitar.

    Acciones sugeridas:

    Si hay problemas de rendimiento, realice una de las siguientes acciones:

    • Reduzca la cantidad de vCPU en la máquina virtual.
    • Mueva la máquina virtual a otro host.
    • Reduzca la cantidad total de vCPU en el host migrando otras máquinas virtuales o disminuyendo su cantidad de vCPU.

runstate_partial_contention

  • runstate_partial_contention > 0% indica que al menos una vCPU quiere ejecutarse pero no puede obtener el tiempo de la CPU, y también que al menos otra vCPU está bloqueada (ya sea porque no hay nada que hacer o porque está esperando a que se complete la E/S).

  • El hecho de querunstate_concurrency_hazard se acerque al 100% es una situación que hay que evitar.

    Acción sugerida:

    Compruebe si los servidores de almacenamiento de E/S de back-end están sobrecargados consultando las métricas de back-end proporcionadas por su proveedor de almacenamiento. Si los servidores de almacenamiento no están sobrecargados y hay problemas de rendimiento, lleve a cabo una de las siguientes acciones:

    • Reduzca la cantidad de vCPU en la máquina virtual.
    • Mueva la máquina virtual a otro host.
    • Reduzca la cantidad total de vCPU en el host migrando otras máquinas virtuales o disminuyendo su cantidad de vCPU.

runstate_full_contention

  • runstate_full_contention > 0% indica que, a veces, las vCPU quieren ejecutarse todas al mismo tiempo, pero ninguna puede obtener el tiempo de la CPU.

  • El hecho de querunstate_full_contention se acerque al 100% es una situación que debe evitarse.

    Acciones sugeridas:

    Si hay problemas de rendimiento, realice una de las siguientes acciones:

    • Reduzca la cantidad de vCPU en la máquina virtual.
    • Mueva la máquina virtual a otro host.
    • Reduzca la cantidad total de vCPU en el host migrando otras máquinas virtuales o disminuyendo su cantidad de vCPU.

Cuando el uso de la PCPu del host es inferior al 100 %

Si un host no alcanza el 100% del uso de la CPU del host, utilice estas métricas de VM para decidir si una VM tiene la cantidad correcta de vCPU:

runstate_fullrun

  • runstate_fullrun = 0% indica que las vCPU nunca se utilizan todas al mismo tiempo.

    Acción sugerida:

    Reduzca la cantidad de vCPU en esta máquina virtual.

  • 0% < runstate_fullrun < 100% indica que las vCPU a veces se utilizan todas al mismo tiempo.

  • runstate_fullrun = 100% indica que las vCPU se utilizan siempre al mismo tiempo.

    Acción sugerida:

    Puede aumentar la cantidad de vCPU en esta máquina virtual hasta que runstate_fullrun sea inferior al 100%. No aumente aún más la cantidad de vCPU; de lo contrario, puede aumentar la probabilidad de peligro de concurrencia si el host alcanza el 100% del uso de la CPU.

runstate_partial_run

  • runstate_partial_run = 0% indica que siempre se usan todas las vCPU (ejecución completa = 100%) o no se usa ninguna vCPU (inactiva = 100%).

  • 0% < runstate_partial_run < 100% indica que, en ocasiones, al menos una vCPU está bloqueada, ya sea porque no tiene nada que hacer o porque está esperando a que se complete la E/S.

  • runstate_partial_run= 100% indica que siempre hay al menos una vCPU bloqueada.

    Acción sugerida:

    Compruebe si los servidores de almacenamiento de E/S de back-end están sobrecargados. Si no lo están, es probable que la máquina virtual tenga demasiadas vCPU y usted pueda reducir la cantidad de vCPU en esta máquina virtual. Tener demasiadas vCPU en una VM puede aumentar el riesgo de que la VM entre en estado de peligro de concurrencia cuando el uso de la CPU del host alcance el 100%.

Supervisa el uso de la CPU