XenServer

Surveiller l’utilisation du CPU

Le nombre optimal de vCPU par pCPU sur un hôte dépend de votre cas d’utilisation. Pendant le fonctionnement, assurez-vous de surveiller les performances de votre environnement XenServer® et d’ajuster votre configuration en conséquence.

Termes

Dans ce domaine, divers termes sont parfois utilisés de manière interchangeable. Dans cet article, nous utilisons les termes et significations suivants :

  • CPU (processeur physique) : Le matériel physique connecté à un socket de processeur.
  • Cœur : Une unité de traitement physique, capable d’un thread d’exécution indépendant, qui contient toutes les unités fonctionnelles nécessaires pour prendre en charge cette exécution.
  • Hyperthread : Une unité de traitement physique, capable d’un thread d’exécution indépendant, qui partage certaines unités fonctionnelles avec un autre hyperthread (également appelé son « thread frère »).
  • CPU logique (pCPU) : Une unité capable d’un thread d’exécution indépendant qui inclut un ensemble de registres et un pointeur d’instruction. Dans un système avec hyperthreads activés, il s’agit d’un hyperthread. Dans d’autres cas, il s’agit d’un cœur.
  • pCPU de l’hôte : Le nombre total de CPU logiques dans l’hôte.
  • vCPU (CPU virtuel) : Un CPU logique virtualisé. Il s’agit d’une unité logique capable d’un thread d’exécution indépendant, fournie aux machines virtuelles. Dans XenServer, les vCPU peuvent « partager le temps » des pCPU, en utilisant un ordonnanceur pour déterminer quel vCPU s’exécute sur quel pCPU à un moment donné.
  • vCPU invités : Les vCPU qui sont présentés à un système d’exploitation invité au sein d’une machine virtuelle.
  • vCPU Dom0 : Les vCPU qui sont visibles par le domaine de contrôle XenServer (dom0).
  • Total des vCPU de l’hôte : La somme des vCPU Dom0 et de tous les vCPU invités de l’hôte.

Comportement général

Le nombre total de vCPU sur un hôte est le nombre de vCPU utilisés par dom0 ajouté au nombre total de vCPU attribués à toutes les machines virtuelles sur l’hôte. Lorsque vous augmentez le nombre de vCPU sur un hôte, vous pouvez rencontrer les types de comportement suivants :

  • Lorsque le nombre total de vCPU sur l’hôte est inférieur ou égal à le nombre de pCPU sur l’hôte, l’hôte fournit toujours autant de CPU que demandé par les machines virtuelles.

  • Lorsque le nombre total de vCPU sur l’hôte est supérieur à le nombre de pCPU sur l’hôte, l’hôte partage le temps des pCPU de l’hôte avec les machines virtuelles. Ce comportement n’affecte généralement pas les machines virtuelles car leurs vCPU sont généralement inactives une partie du temps et, dans la plupart des cas, l’hôte n’atteint pas 100 % d’utilisation des pCPU.

  • Lorsque le nombre total de vCPU sur l’hôte est supérieur à le nombre de pCPU sur l’hôte et que l’hôte atteint parfois 100 % d’utilisation des pCPU de l’hôte, les vCPU des machines virtuelles ne reçoivent pas autant de pCPU qu’elles en demandent pendant les pics. Au lieu de cela, pendant ces pics, les machines virtuelles ralentissent pour recevoir une part des pCPU disponibles sur l’hôte.

  • Lorsque le nombre total de vCPU sur l’hôte est supérieur à le nombre de pCPU sur l’hôte et que l’hôte atteint souvent 100 % d’utilisation des pCPU de l’hôte, les vCPU des machines virtuelles sont continuellement ralenties pour recevoir une part des CPU disponibles sur l’hôte. Si les machines virtuelles ont des exigences en temps réel, cette situation n’est pas idéale et vous pouvez y remédier en réduisant le nombre de vCPU sur l’hôte.

Le nombre optimal de vCPU sur un hôte peut dépendre de la perception qu’ont les utilisateurs des machines virtuelles de la vitesse de leurs machines virtuelles, en particulier lorsque les machines virtuelles ont des exigences en temps réel.

Obtenir des informations sur vos CPU

Pour connaître le nombre total de pCPU sur votre hôte, exécutez la commande suivante :

xe host-cpu-info --minimal

Pour connaître le nombre total de vCPU (invité et dom0) actuellement sur votre hôte, exécutez la commande suivante :

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

Surveillance de l’utilisation du CPU avec les métriques RRD

XenServer fournit des métriques RRD qui décrivent les performances des vCPU sur vos machines virtuelles.

Lorsque l’utilisation des pCPU de l’hôte est de 100 %

Lorsqu’un hôte atteint 100 % d’utilisation des pCPU de l’hôte, utilisez ces métriques de machine virtuelle pour décider s’il faut déplacer la machine virtuelle vers un autre hôte :

runstate_concurrency_hazard

  • runstate_concurrency_hazard > 0 % indique que parfois, au moins une vCPU est en cours d’exécution tandis qu’au moins une autre vCPU souhaite s’exécuter mais ne peut pas obtenir de temps pCPU. Si les vCPU doivent se coordonner, ce comportement entraîne des problèmes de performances.

  • runstate_concurrency_hazard approchant 100 % est une situation à éviter.

    Actions suggérées :

    S’il y a des problèmes de performances, effectuez l’une des actions suivantes :

    • Diminuez le nombre de vCPU dans la VM.
    • Déplacez la VM vers un autre hôte.
    • Diminuez le nombre total de vCPU sur l’hôte en migrant d’autres VM ou en diminuant leur nombre de vCPU.

runstate_partial_contention

  • runstate_partial_contention > 0% indique à la fois qu’au moins un vCPU souhaite s’exécuter mais ne peut pas obtenir de temps pCPU, et aussi qu’au moins un autre vCPU est bloqué (soit parce qu’il n’y a rien à faire, soit parce qu’il attend la fin d’une E/S).

  • runstate_concurrency_hazard approaching 100% est une situation à éviter.

    Action suggérée :

    Vérifiez si les serveurs de stockage d’E/S back-end sont surchargés en examinant les métriques back-end fournies par votre fournisseur de stockage. Si les serveurs de stockage ne sont pas surchargés et qu’il y a des problèmes de performances, effectuez l’une des actions suivantes :

    • Diminuez le nombre de vCPU dans la VM.
    • Déplacez la VM vers un autre hôte.
    • Diminuez le nombre total de vCPU sur l’hôte en migrant d’autres VM ou en diminuant leur nombre de vCPU.

runstate_full_contention

  • runstate_full_contention > 0% indique que parfois les vCPU veulent s’exécuter toutes en même temps mais qu’aucune ne peut obtenir de temps pCPU.

  • Un runstate_full_contention approchant 100 % est une situation à éviter.

    Actions suggérées :

    En cas de problèmes de performances, effectuez l’une des actions suivantes :

    • Diminuez le nombre de vCPU dans la VM.
    • Déplacez la VM vers un autre hôte.
    • Diminuez le nombre total de vCPU sur l’hôte en migrant d’autres VM ou en réduisant leur nombre de vCPU.

Lorsque l’utilisation du pCPU de l’hôte est inférieure à 100 %

Si un hôte n’atteint pas 100 % de l’utilisation du pCPU de l’hôte, utilisez ces métriques de VM pour décider si une VM a le bon nombre de vCPU :

runstate_fullrun

  • runstate_fullrun = 0 % indique que les vCPU ne sont jamais toutes utilisées en même temps.

    Action suggérée :

    Diminuez le nombre de vCPU dans cette VM.

  • 0 % < runstate_fullrun < 100 % indique que les vCPU sont parfois toutes utilisées en même temps.

  • runstate_fullrun = 100 % indique que les vCPU sont toujours toutes utilisées en même temps.

    Action suggérée :

    Vous pouvez augmenter le nombre de vCPU dans cette VM, jusqu’à ce que runstate_fullrun < 100 %. N’augmentez pas davantage le nombre de vCPU, sinon cela peut augmenter la probabilité de risque de concurrence si l’hôte atteint 100 % d’utilisation du pCPU.

runstate_partial_run

  • runstate_partial_run = 0 % indique que soit tous les vCPU sont toujours utilisés (full-run=100 %), soit aucun vCPU n’est utilisé (idle=100 %).

  • 0 % < runstate_partial_run < 100 % indique que, parfois, au moins un vCPU est bloqué, soit parce qu’il n’a rien à faire, soit parce qu’il attend la fin d’une opération d’E/S.

  • runstate_partial_run=100 % indique qu’il y a toujours au moins un vCPU bloqué.

    Action suggérée :

    Vérifiez si les serveurs de stockage d’E/S back-end sont surchargés. S’ils ne le sont pas, la VM a probablement trop de vCPU et vous pouvez réduire le nombre de vCPU dans cette VM. Avoir trop de vCPU dans une VM peut augmenter le risque que la VM entre dans l’état de risque de concurrence lorsque l’utilisation du CPU de l’hôte atteint 100 %.

Surveiller l’utilisation du CPU