CPU – VMware(Partie 1)

Il existe énormément d’article sur les cycles CPU, mais je vais expliquer de manière simple sur plusieurs parties.

La première partie est un peu lourde (avoir des connaissances en Virtualisation) mais il faut comprendre les mécanismes. Je ne parlerai pas de Support SMP, Co-Scheduling, Performances.

Un World est un contexte d’exécution qui est planifié sur un noyau logique. Un World est comme un processus dans les systèmes d’exploitation conventionnels. Une VM est une collection, ou un groupe, de World.

il existe différents types de VM Worlds :

  • Un pour chaque vCPU (vmx-vcpu-0, vmx-vcpu-1,…)
  • Un pour la souris, clavier, filtre (vmx-mks)
  • Un pour le SVGA (vmx-svga)

Le rôle du planificateur CPU est d’attribuer des contextes d’exécution aux processeurs d’une manière qui répond aux objectifs du système tels que la réactivité, le débit et l’utilisation. Sur les systèmes d’exploitation classiques, le contexte d’exécution correspond à un processus ou à un thread. Sur les hôtes ESXi, le contexte d’exécution correspond à un World.

Des World non-VM existent également. Ces World non-VM sont des World VMkernel, qui sont utilisés pour effectuer diverses tâches système. Des exemples de ces World non-VM incluent les World inactif et vMotionServer.

Les fonctionnalités du planificateur (Scheduler) de processeur incluent :

  • Le planificateur de processeur (CPU Scheduler) alloue les ressources du processeur et coordonne l’utilisation du processeur.
  • Le planificateur CPU (CPU Scheduler) utilise une allocation de ressources CPU dynamique et transparente :
  • Il vérifie l’utilisation du processeur physique toutes les 2 à 30 millisecondes et migre les processeurs virtuels si nécessaire.
  • Le planificateur de CPU (CPU Scheduler) permet à un vCPU de s’exécuter sur un cœur logique pendant 50 millisecondes (la tranche de temps par défaut) avant qu’un autre vCPU de même priorité ne soit planifié.

Lorsqu’un vCPU s’exécute sur un cœur, les autres vCPU doivent attendre leur tour pour être planifiés sur ce cœur, ce qui peut introduire une mise en file d’attente.

  • Le planificateur CPU (CPU Scheduler) applique l’algorithme de partage proportionnel pour l’utilisation du CPU :
  • Il héberge des cœurs physiques de tranche de temps sur toutes les machines virtuelles lorsque les ressources CPU sont surchargées.
  • Il hiérarchise chaque vCPU par paramètres d’allocation de ressources (partages, réservations et limites).

L’une des tâches principales du programmateur CPU (CPU Scheduler) est de choisir quel World doit être programmé pour un processeur. Si le processeur cible est déjà occupé, le planificateur doit décider s’il préempte le World en cours d’exécution au nom du World choisi. Un World migre d’un processeur occupé vers un processeur inactif. Une migration World peut être initiée soit par un processeur physique qui devient inactif, soit par un monde qui devient prêt à être planifié. Un hôte ESXi implémente l’algorithme basé sur le partage proportionnel. Lorsque les ressources CPU sont surchargées, l’hôte ESXi répartit les CPU physiques sur toutes les machines virtuelles afin que chaque machine virtuelle s’exécute comme si elle avait son nombre spécifié de processeurs virtuels. L’hôte ESXi associe chaque World à une part de ressource CPU.

Ready Time

Le Ready Time (temps de préparation) est la durée pendant laquelle le vCPU attend que le processeur physique soit disponible. Les vCPU se voient allouer des cycles de CPU sur un CPU physique attribué en fonction de l’algorithme de partage proportionnel appliqué par le planificateur de CPU :

• Si un vCPU essaie d’exécuter une instruction CPU alors qu’aucun cycle n’est disponible sur le CPU physique, la demande est mise en file d’attente.

• Un processeur physique sans cycles disponibles peut être dû à une charge élevée sur le processeur physique ou à une préférence de réception vCPU de priorité plus élevée sur ce processeur physique.

Le Ready Time (temps de préparation) peut affecter les performances du système d’exploitation invité et de ses applications dans une machine virtuelle.

Pour obtenir les meilleures performances dans un environnement consolidé, vous devez tenir compte du Ready Time (temps de préparation). Le Ready Time (temps de préparation) est le temps pendant lequel une machine virtuelle doit attendre dans la file d’attente dans un état prêt à fonctionner avant de pouvoir être planifiée sur un processeur.

Lorsque plusieurs processus tentent d’utiliser le même processeur physique, ce processeur peut ne pas être immédiatement disponible et un processus doit attendre avant que l’hôte ESXi puisse lui allouer un processeur. Le planificateur de CPU gère l’accès aux CPU physiques sur le système hôte.

Transision

Lorsqu’il est ajouté pour la première fois, un World est soit à l’état d’exécution, soit à l’état prêt, en fonction de la disponibilité d’un processeur physique. Un World à l’état prêt est envoyé par le planificateur CPU (Scheduler) et passe à l’état d’exécution. Il peut être déprogrammé ultérieurement et passe soit à l’état prêt, soit à l’état d’arrêt simultané. Le World co-arrêté est co-démarré plus tard et entre dans l’état prêt. Un World en état d’exécution entre dans l’état d’attente en bloquant une ressource. Il est réveillé lorsque la ressource devient disponible.

Un World devenant inactif entre dans l’état wait_idle, un type spécial d’état d’attente, bien qu’il ne bloque pas explicitement une ressource. Un World inactif est réveillé chaque fois qu’il est interrompu.

Voilà, la première partie est finie, mais avec cela vous connaissez le fonctionnement général du CPU dans un environnement virtuel.

Posted on: septembre 8, 2021, by :