Certains CPU, notamment les modèles AMD SVM-V et Intel Xeon 5500, fournissent une prise en charge matérielle pour la virtualisation de mémoire à l'aide de deux couches de tables de page.

La première couche de tables de page stocke les translations client virtuelles-physiques ; la seconde couche de tables de page stocke les translations client physiques vers machine. Le TLB (translation look-aside buffer - Tampon de traduction) est un cache de translations conservé par le matériel de l'unité de gestion de mémoire (MMU) du processeur. Un élément non trouvé TLB est un élément non trouvé dans ce cache ; le matériel doit alors explorer la mémoire (certainement à plusieurs reprises) pour trouver la translation requise. Pour un élément non trouvé TLB d'une certaine adresse virtuelle client, le matériel consulte les deux tables de page pour translater l'adresse virtuelle client vers l'adresse physique de l'hôte.

Le diagramme illustre l'implémentation ESXi de la virtualisation de mémoire.

Figure 1. Mappage de mémoire ESXi


Cette figure illustre l'implémentation de la virtualisation de mémoire.

  • Les cases représentent les pages et les flèches indiquent les différents mappages de mémoire.

  • Les flèches partant de la mémoire virtuelle client vers la mémoire physique client indiquent le mappage conservé par les tables de page dans le système d'exploitation client. (le mappage entre la mémoire virtuelle et la mémoire linéaire pour les processeurs à architecture x86 n'est pas indiqué).

  • Les flèches entre la mémoire physique client et la mémoire de la machine indiquent le mappage conservé par VMM.

  • Les flèches en tirets indiquent le mappage entre la mémoire virtuelle client et la mémoire machine dans les pages de table fantômes et également conservé par VMM. Le processeur sous-jacent exécutant la machine virtuelle utilise les mappages de table de page fantôme.

La virtualisation introduit un niveau de mappage mémoire supplémentaire. ESXi peut donc gérer la mémoire de manière efficace dans toutes les machines virtuelles. Une partie de la mémoire physique d'une machine virtuelle peut être mappée vers des pages partagées ou vers des pages non mappées ou permutées.

Un hôte gère la mémoire virtuelle sans avoir la connaissance du système d'exploitation invité et sans interférer avec le propre sous-système de gestion de la mémoire du système d'exploitation client.

Considérations de performances

Lorsque vous utilisez l'assistance matérielle, vous éliminez le supplément de la virtualisation de mémoire logicielle. En particulier, l'assistance matérielle élimine le temps système requis pour maintenir les tables de page fantômes synchronisées avec les tables de page client. Toutefois, la latence d'élément non trouvé TLB est beaucoup plus élevée lorsque vous utilisez l'assistance matérielle. Par conséquent les bénéfices que tire une charge de travail de l'utilisation de l'assistance matérielle dépend essentiellement du supplément entraîné par la virtualisation de mémoire lors de l'utilisation de la virtualisation de mémoire logicielle. Si une charge de travail implique une faible quantité d'activité de table de page (création de processus, mappage de la mémoire ou commutations contextuelles), la virtualisation de logiciel n'entraîne pas de supplément significatif. Inversement, les charges de travail avec un grande quantité d'activité de table de page sont susceptibles de tirer avantage de l'assistance matérielle.