Gestion dynamique des ressources de nouvelle génération


Les VM N4, basées sur des processeurs Intel Xeon de 5e génération et sur Titanium, exploitent la gestion dynamique des ressources de nouvelle génération pour optimiser la rentabilité en optimisant l'utilisation des ressources physiques disponibles sur les machines hôtes. Elles utilisent en outre un programmeur de processeur personnalisé ainsi qu'une migration à chaud tenant compte des performances pour équilibrer les besoins en performances des charges de travail avec les ressources disponibles. Ce sont les mêmes technologies que celles utilisées par les services Google Ads, Google Maps, YouTube et de la recherche Google pour exécuter efficacement leurs charges de travail sensibles à la latence.

La gestion dynamique des ressources de nouvelle génération offre également une meilleure affinité avec l'architecture NUMA, une prédiction plus précise des besoins en ressources et un rééquilibrage plus rapide, qui exploite la migration à chaud tenant compte des performances.

Fonctionnement de la gestion dynamique des ressources

Les processeurs virtuels (vCPU) sont implémentés sous la forme de threads planifiés à la demande comme n'importe quel autre thread sur un hôte. Lorsque le processeur virtuel doit effectuer une tâche, le travail est confié à un processeur physique disponible sur lequel il doit s'exécuter jusqu'à ce qu'il repasse en veille. De même, la RAM virtuelle est mappée sur des pages hôtes physiques à l'aide de tables de pagination, qui sont renseignées lors du premier accès à une page physique d'invité. Ce mappage reste fixe jusqu'à ce que la VM indique qu'une page physique d'invité n'est plus nécessaire.

La gestion dynamique des ressources permet à Compute Engine de mieux utiliser les processeurs physiques disponibles en programmant des VM sur les serveurs en fonction des besoins en ressources et en planifiant les threads des vCPU sur les processeurs physiques de manière à réduire le temps d'attente. Dans la plupart des cas, ce processus est parfaitement fluide, ce qui permet à Google Cloud d'exécuter les VM plus efficacement sur moins de serveurs.

Composants de la gestion dynamique des ressources

Compute Engine utilise les technologies suivantes pour la gestion dynamique des ressources :

Serveurs physiques plus grands et plus efficaces

Le nombre de cœurs et la densité de mémoire RAM ont progressivement augmenté de sorte que les serveurs hôtes disposent désormais de beaucoup plus de ressources que n'importe quelle VM individuelle. Google effectue en permanence des analyses comparatives sur de nouveaux matériels, et est en quête permanente de plates-formes offrant des performances et une rentabilité optimales pour le plus grand panel possible de charges de travail et services cloud, ce qui vous permet de bénéficier des toutes dernières technologies dès lors lorsqu'elles sont disponibles.

Emplacement de VM intelligent

Le système de gestion des clusters de Google observe les demandes de processeur, de RAM, de bande passante mémoire et d'autres ressources des VM exécutées sur un serveur physique. Il utilise ces informations pour prédire le fonctionnement et les performances d'une VM nouvellement ajoutée sur ce serveur. Il recherche ensuite parmi des milliers de serveurs afin de trouver l'emplacement idéal pour ajouter une VM. Ces observations garantissent que lorsqu'une nouvelle VM est placée, elle est compatible avec ses voisins et ne risque pas de rencontrer des interférences depuis ces instances.

Migration à chaud tenant compte des performances

Une fois les VM placées sur un hôte, Compute Engine surveille en permanence les performances et les temps d'attente des VM. Si les besoins en ressources des VM augmentent, Compute Engine peut utiliser la migration à chaud pour répartir de manière transparente les charges de travail vers d'autres hôtes dans le centre de données. La stratégie de migration à chaud est régie par une approche prédictive qui donne à Compute Engine le temps de transférer la charge, bien souvent avant que les VM ne subissent un temps d'attente.

Programmeur de processeur hyperviseur

Le programmeur de processeur de l'hyperviseur mappe de manière dynamique le processeur virtuel et la mémoire avec le processeur physique et la mémoire du serveur hôte à la demande. Cette gestion dynamique améliore la rentabilité des VM en utilisant mieux les ressources physiques. L'utilisation efficace des ressources signifie que Compute Engine peut exécuter les VM plus efficacement sur moins de serveurs, Google Cloud répercutant alors les économies réalisées sur les utilisateurs.

Gestion dynamique des ressources de première génération

La série de VM E2 était la première à proposer la gestion dynamique des ressources, basée sur un dispositif d'allocation de pages mémoire virtio.

Dispositif d'allocation de pages mémoire virtio avec les VM E2

L'allocation de pages mémoire est un mécanisme d'interface entre l'hôte et l'invité, qui permet d'ajuster de manière dynamique la taille de la mémoire réservée pour l'invité. La série E2 utilise un dispositif d'allocation de pages mémoire virtio pour mettre en œuvre l'allocation de pages mémoire. Via le dispositif d'allocation de pages mémoire virtio, un hôte peut explicitement demander à un invité de dégager un certaine nombre de pages mémoire libres (également appelé inflation d'allocation de mémoire) et de récupérer la mémoire afin que l'hôte puisse utiliser la mémoire disponible pour les autres VM. De même, le dispositif d'allocation de pages mémoire virtio peut renvoyer des pages mémoire à l'invité en décompressant l'allocation de pages mémoire. Les VM E2 sont la seule famille de machines qui utilise le dispositif d'allocation de pages mémoire.

Les instances de VM E2 Compute Engine basées sur une image publique sont dotées d'un dispositif d'allocations de pages mémoire virtio, qui surveille l'utilisation de la mémoire du système d'exploitation invité. Le système d'exploitation invité communique sa mémoire disponible au système hôte. L'hôte redistribue la mémoire inutilisée à d'autres processus à la demande, ce qui permet une utilisation plus efficace de la mémoire. Compute Engine recueille ces données afin d'obtenir des recommandations de redimensionnement plus précises.

Vérifier l'installation du pilote

Pour vérifier si le dispositif d'allocation de pages mémoire est installé et chargé sur votre image, exécutez la commande suivante :

Linux

La plupart des distributions Linux incluent le pilote du dispositif d'allocation de pages mémoire virtio. Pour vérifier que le pilote est installé et chargé sur votre image, exécutez la commande suivante :

sudo modinfo virtio_balloon > /dev/null && echo Balloon driver is \
installed || echo Balloon driver is not installed; sudo lsmod | grep \
virtio_balloon > /dev/null && echo Balloon driver is loaded || echo \
Balloon driver is not loaded

Dans les noyaux Linux antérieurs à la version 5.2, le système de mémoire Linux empêche parfois à tort les allocations importantes lorsque le dispositif d'allocation est présent. En pratique, cela est rarement problématique, mais nous vous recommandons tout de même de remplacer le paramètre overcommit_memory de la mémoire virtuelle par 1 pour éviter le problème. Cette modification est déjà effectuée par défaut dans toutes les images fournies par Google publiées depuis le 9 février 2021.

Pour corriger le paramètre, utilisez la commande suivante afin de remplacer la valeur 0 par 1 :

sudo /sbin/sysctl -w vm.overcommit_memory=1

Pour conserver cette modification après un redémarrage, ajoutez les éléments suivants à votre fichier /etc/sysctl.conf :

vm.overcommit_memory=1

Windows

Les images Windows sur Compute Engine incluent le dispositif d'allocation de pages mémoire virtio. En revanche, ce n'est pas le cas des images Windows personnalisées. Pour vérifier si le pilote est installé sur votre image Windows, exécutez la commande suivante :

googet verify google-compute-engine-driver-balloon

Désactiver le dispositif d'allocation de pages mémoire virtio

L'utilisation du dispositif d'allocation de pages mémoire virtio permet à Compute Engine d'utiliser plus efficacement les ressources mémoire de manière à ce que Google Cloud puisse proposer des VM E2 à des prix inférieurs. Vous pouvez renoncer à utiliser le dispositif d'allocation de pages mémoire virtio en désactivant son pilote. Après avoir désactivé le dispositif d'allocation de pages mémoire virtio, vous continuerez à recevoir des recommandations de redimensionnement, mais elles pourraient s'avérer moins exactes.

Linux

Pour désactiver le dispositif sous Linux, exécutez la commande suivante :

sudo rmmod virtio_balloon

Vous pouvez ajouter cette commande au script de démarrage de la VM pour désactiver automatiquement le dispositif lors du démarrage de la VM.

Windows

Pour désactiver le dispositif sous Windows, exécutez la commande suivante :

googet -noconfirm remove google-compute-engine-driver-balloon

Vous pouvez insérer cette commande dans le script de démarrage de la VM pour désactiver automatiquement le dispositif lors du démarrage de la VM.

Étape suivante