XenServer

Supervisar el uso de la CPU

El número óptimo de vCPU por pCPU en un host depende de su caso de uso. Durante el funcionamiento, asegúrese de supervisar el rendimiento de su entorno XenServer® y ajuste su configuración en consecuencia.

Términos

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

  • CPU (CPU física): El hardware físico conectado a un zócalo de procesador.
  • Núcleo: Una unidad de procesamiento física, capaz de un hilo de ejecución independiente, que contiene todas las unidades funcionales necesarias para soportar esa ejecución.
  • Hyperthread: Una unidad de procesamiento física, capaz de un hilo de ejecución independiente, que comparte algunas unidades funcionales con otro hyperthread (también conocido como su “hilo hermano”).
  • CPU lógica (pCPU): Una unidad capaz de un hilo de ejecución independiente que incluye un conjunto de registros y un puntero de instrucción. En un sistema con hyperthreads habilitados, esto es un hyperthread. En otros casos, es un núcleo.
  • pCPU del host: El número total de CPU lógicas en el host.
  • vCPU (CPU virtual): Una CPU lógica virtualizada. Esta es una unidad lógica capaz de un hilo de ejecución independiente, proporcionada a las máquinas virtuales. En XenServer, las vCPU pueden “compartir tiempo” las pCPU, utilizando un planificador para determinar qué vCPU se está ejecutando en qué pCPU en un momento dado.
  • vCPU de invitado: Las vCPU que se presentan a un sistema operativo invitado dentro de una máquina virtual.
  • vCPU de Dom0: Las vCPU que son visibles para el dominio de control de XenServer (dom0).
  • vCPU totales del host: La suma de las vCPU de dom0 y todas las vCPU de invitado en el host.

Comportamiento general

El número total de vCPU en un host es el número de vCPU utilizadas por dom0 sumado al número total de vCPU asignadas a todas las máquinas virtuales en el host. A medida que aumenta el número de vCPU en un host, puede experimentar los siguientes tipos de comportamiento:

  • Cuando el número total de vCPU en el host es menor o igual que el número de pCPU en el host, el host siempre proporciona tanta CPU como solicitan las VM.

  • Cuando el número total de vCPU en el host es mayor que el número de pCPU en el host, el host comparte el tiempo de las pCPU del host con las VM. Este comportamiento no suele afectar a las VM 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 pCPU.

  • Cuando el número total de vCPU en el host es mayor que el número de pCPU en el host y el host a veces alcanza el 100% de uso de pCPU del host, las vCPU de las VM no reciben tanta pCPU como solicitan durante los picos. En su lugar, durante estos picos, las VM se ralentizan para recibir una parte de la pCPU disponible en el host.

  • Cuando el número total de vCPU en el host es mayor que el número de pCPU en el host y el host a menudo alcanza el 100% de uso de pCPU del host, las vCPU de las VM se ralentizan continuamente para recibir una parte de las CPU disponibles en el host. Si las VM tienen requisitos en tiempo real, esta situación no es ideal y puede solucionarla reduciendo el número de vCPU en el host.

El número óptimo de vCPU en un host puede depender de la percepción de los usuarios de la VM sobre la velocidad de sus VM, especialmente cuando las VM tienen requisitos en tiempo real.

Obtener información sobre sus CPU

Para averiguar 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 (invitado y dom0) actualmente en su 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 RRD que describen el rendimiento de las vCPU en sus VM.

Cuando el uso de pCPU del host es del 100%

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

runstate_concurrency_hazard

  • runstate_concurrency_hazard > 0% indica que a veces, al menos una vCPU se está ejecutando mientras al menos otra vCPU quiere ejecutarse pero no puede obtener tiempo de pCPU. Si las vCPU deben coordinarse, este comportamiento causa problemas de rendimiento.

  • runstate_concurrency_hazard acercándose al 100% es una situación que debe evitarse.

    Acciones sugeridas:

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

    • Disminuya el número de vCPU en la VM.
    • Mueva la VM a otro host.
    • Disminuya el número total de vCPU en el host migrando otras VM o disminuyendo su número de vCPU.

runstate_partial_contention

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

  • runstate_concurrency_hazard approaching 100% es una situación que debe evitarse.

    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, realice una de las siguientes acciones:

    • Disminuya el número de vCPU en la VM.
    • Mueva la VM a otro host.
    • Disminuya el número total de vCPU en el host migrando otras VM o disminuyendo su número 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 tiempo de pCPU.

  • runstate_full_contention acercándose al 100% es una situación que debe evitarse.

    Acciones sugeridas:

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

    • Disminuya el número de vCPU en la VM.
    • Mueva la VM a otro host.
    • Disminuya el número total de vCPU en el host migrando otras VM o disminuyendo su número de vCPU.

Cuando el uso de pCPU del host es inferior al 100%

Si un host no alcanza el 100% del uso de pCPU del host, utilice estas métricas de VM para decidir si una VM tiene el número correcto de vCPU:

runstate_fullrun

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

    Acción sugerida:

    Disminuya el número de vCPU en esta VM.

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

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

    Acción sugerida:

    Puedes aumentar el número de vCPU en esta VM, hasta que runstate_fullrun < 100%. No aumentes más el número de vCPU, de lo contrario puede aumentar la probabilidad de un riesgo de concurrencia si el host alcanza el 100% del uso de pCPU.

runstate_partial_run

  • runstate_partial_run = 0% indica que o bien todas las vCPU se están utilizando siempre (full-run=100%) o ninguna vCPU se está utilizando (idle=100%).

  • 0% < runstate_partial_run < 100% indica que, a veces, al menos una vCPU está bloqueada, ya sea porque no tienen nada que hacer o porque están esperando a que se complete una 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, la VM probablemente tiene demasiadas vCPU y puede reducir el número de vCPU en esta VM. Tener demasiadas vCPU en una VM puede aumentar el riesgo de que la VM entre en un estado de riesgo de concurrencia cuando el uso de la CPU del host alcanza el 100%.

Supervisar el uso de la CPU