Performances des disques et des machines virtuelles

S’applique aux : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Groupes identiques flexibles ✔️ Groupes identiques uniformes

Cet article vous aide à clarifier les performances des disques et la procédure lorsque vous combinez des machines virtuelles Azure et des disques Azure. Il explique également comment vous pouvez diagnostiquer les goulots d’étranglement des E/S de disque et les modifications que vous pouvez apporter pour optimiser les performances.

Fonctionnement des performances des disques

Les machines virtuelles Azure ont des limites de performances d’IOPS et de débit qui dépendent du type et de la taille des machines virtuelles. Les disques de système d’exploitation et les disques de données peuvent être attachés à des machines virtuelles. Les disques ont leurs propres limites d’IOPS (E/S par seconde) et de débit.

Les performances de votre application sont limitées lorsqu’elle nécessite plus d’IOPS ou de débit que ce qui est alloué pour les machines virtuelles ou les disques attachés. Lorsqu’elle est limitée, l’application fonctionne avec des performances non optimales. Cela peut entraîner des conséquences négatives, comme une latence accrue. Passons en revue quelques exemples pour clarifier ce concept. Pour que ces exemples soient faciles à suivre, nous allons seulement examiner les IOPS. Mais la même logique s’applique au débit.

Limitation d’E/S disque

Configuration :

  • Standard_D8s_v3
    • E/S par seconde non mises en cache : 12 800
  • Disque de système d’exploitation E30
    • IOPS : 500
  • Deux disques de données E30 x 2
    • IOPS : 500

Diagramme montrant l’encapsulation au niveau du disque.

L’application en cours d’exécution sur la machine virtuelle effectue une requête qui requiert 10 000 IOPS sur la machine virtuelle. Toutes ces opérations sont autorisées par la machine virtuelle, car la machine virtuelle Standard_D8s_v3 peut exécuter jusqu’à 12 800 IOPS.

Les requêtes de 10 000 IOPS sont divisées en trois requêtes différentes sur les différents disques :

  • 1 000 IOPS sur le disque du système d’exploitation.
  • 4 500 IOPS sont demandées à chaque disque de données.

Tous les disques attachés sont des disques E30 et peuvent uniquement gérer des 500 IOPS. Par conséquent, ils répondent avec 500 IOPS chacun. Les performances de l’application sont limitées par les disques attachés et ne peuvent traiter que 1 500 IOPS. L’application peut fonctionner avec des performances de pointe à 10 000 IOPS si des disques plus performants sont utilisés, comme des disques SSD Premium P30.

Limitation des E/S de machine virtuelle

Configuration :

  • Standard_D8s_v3
    • E/S par seconde non mises en cache : 12 800
  • Disque de système d’exploitation P30
    • IOPS : 5 000
  • Deux disques de données P30 x 2
    • IOPS : 5 000

Diagramme montrant l’encapsulation au niveau de la machine virtuelle.

L’application en cours d’exécution sur la machine virtuelle effectue une requête qui requiert 15 000 IOPS. Malheureusement, la machine virtuelle Standard_D8s_v3 est configurée pour gérer au plus 12 800 IOPS. L’application est limitée par les contraintes de la machine virtuelle et doit allouer les 12 800 IOPS affectées.

Ces requêtes de 12 800 IOPS sont divisées en trois requêtes différentes sur les différents disques :

  • 4 267 IOPS sur le disque du système d’exploitation.
  • 4 266 IOPS sont demandées à chaque disque de données.

Tous les disques attachés sont des disques P30 qui peuvent gérer des 5 000 IOPS. Ils répondent donc aux montants demandés.

Limites des machines virtuelles sans mise en cache et avec mise en cache

Les machines virtuelles pour lesquelles le stockage Premium et la mise en cache du stockage Premium sont activés présentent deux limites différentes en matière de bande passante de stockage. Examinons la machine virtuelle Standard_D8s_v3 à titre d’exemple. Voici la documentation relative à la série Dsv3 et à la machine virtuelle Standard_D8s_v3 :

Graphique présentant les spécifications Dsv3.

  • Le débit disque maximum non mis en cache est la limite maximale de stockage par défaut que la machine virtuelle est en mesure de gérer.
  • La limite de débit de stockage mis en cache maximale est une limite distincte lorsque vous activez la mise en cache de l’hôte.

La mise en cache de l’hôte rapproche le stockage de la machine virtuelle sur laquelle vous pouvez écrire ou lire rapidement. La quantité de stockage disponible pour la machine virtuelle pour la mise en cache de l’hôte se trouve dans la documentation. Par exemple, Standard_D8s_v3 correspond à 200 Gio de stockage cache.

Vous pouvez activer la mise en cache de l’hôte lorsque vous créez votre machine virtuelle et que vous attachez des disques. Vous pouvez également activer et désactiver la mise en cache de l’hôte de vos disques sur une machine virtuelle existante. Par défaut, les disques de données compatibles prenant en charge le cache disposent de l’activation de la mise en cache en lecture seule uniquement. Les disques de système d’exploitation prenant en charge le cache disposent de l’activation de la mise en cache en lecture/écriture.

Capture d’écran montrant la mise en cache de l’hôte.

Vous pouvez ajuster la mise en cache de l’hôte pour correspondre à vos exigences de charge de travail pour chaque disque. Vous pouvez définir la mise en cache de l’hôte :

  • Lecture seule : Pour les charges de travail qui effectuent uniquement des opérations de lecture
  • Lecture/écriture : Pour les charges de travail qui effectuent un équilibre entre opérations de lecture et d’écriture

Si votre charge de travail ne suit pas l’un de ces modèles, il est déconseillé d’utiliser la mise en cache de l’hôte.

Examinons quelques exemples de différents paramètres de mise en cache de l’hôte pour voir comment ils agissent sur le flux de données et les performances. Dans ce premier exemple, nous allons examiner ce qui se passe avec les demandes d’E/S lorsque le paramètre de mise en cache de l’hôte est défini sur Lecture seule.

Configuration :

  • Standard_D8s_v3
    • E/S par seconde mises en cache : 16 000
    • E/S par seconde non mises en cache : 12 800
  • Disque de données P30
    • IOPS : 5 000
    • Mise en cache de l’hôte : Lecture seule

Lorsqu’une lecture est effectuée et que les données souhaitées sont disponibles dans le cache, celui-ci renvoie les données demandées. Il n’est pas nécessaire de lire depuis le disque. Cette lecture est comptabilisée dans les limites mises en cache de la machine virtuelle.

Diagramme montrant une correspondance de lecture avec mise en cache de l’hôte sur lecture.

Lorsqu’une lecture est effectuée et que les données souhaitées ne sont pas disponibles dans le cache, la demande de lecture est relayée au disque. Ensuite, le disque la met à la disposition à la fois au cache et de la machine virtuelle. Cette lecture est comptabilisée dans la limite non mise en cache ainsi que dans celle mise en cache de la machine virtuelle.

Diagramme montrant une non-correspondance de lecture avec mise en cache de l’hôte sur lecture.

Lorsqu’une écriture est effectuée, elle doit être écrite dans le cache et dans le disque pour être considérée comme terminée. Cette écriture est comptabilisée dans la limite non mise en cache ainsi que dans celle mise en cache de la machine virtuelle.

Diagramme montrant une écriture avec mise en cache de l’hôte sur lecture.

Ensuite, examinons ce qui se passe avec les demandes d’E/S lorsque le paramètre de mise en cache de l’hôte est défini sur Lecture/écriture.

Configuration :

  • Standard_D8s_v3
    • E/S par seconde mises en cache : 16 000
    • E/S par seconde non mises en cache : 12 800
  • Disque de données P30
    • IOPS : 5 000
    • Mise en cache de l’hôte : Lecture/écriture

Une lecture est gérée de la même façon qu’une lecture seule. Les écritures sont la seule chose qui est différente pour la mise en cache en lecture/écriture. Lors de l’écriture avec la mise en cache de l’hôte définie sur Lecture/écriture, il suffit d’écrire l’écriture dans le cache de l’hôte pour que l’opération soit considérée comme terminée. L’écriture est ensuite écrite de manière tardive sur le disque lorsque le cache est vidé régulièrement. Les clients peuvent également forcer un vidage en émettant une commande f/sync ou fua. Cela signifie qu’une écriture est comptabilisée pour les E/S de mise en cache lors de son écriture dans le cache. Lorsqu’elle est écrite tardivement sur le disque, elle est comptabilisée vers les E/S non mises en cache.

Diagramme montrant une écriture avec mise en cache de l’hôte sur lecture/écriture.

Poursuivons avec notre machine virtuelle Standard_D8s_v3. La différence est que cette fois, nous allons activer la mise en cache de l’hôte sur les disques. Cela limite les IOPS de la machine virtuelle à 16 000 IOPS. Trois disques P30 sous-jacents qui peuvent gérer chacun 5 000 IOPS sont attachés à la machine virtuelle.

Configuration :

  • Standard_D8s_v3
    • E/S par seconde mises en cache : 16 000
    • E/S par seconde non mises en cache : 12 800
  • Disque de système d’exploitation P30
    • IOPS : 5 000
    • Mise en cache de l’hôte : Lecture/écriture
  • Deux disques de données P30 x 2
    • IOPS : 5 000
    • Mise en cache de l’hôte : Lecture/écriture

Diagramme montrant un exemple de mise en cache de l’hôte.

L’application utilise une machine virtuelle Standard_D8s_v3 avec mise en cache activée. Une requête de 16 000 IOPS est créée. Les requêtes sont effectuées dès qu’elles sont lues ou écrites dans le cache. Les écritures sont ensuite écrites tardivement sur les disques attachés.

Limites combinées de mise en cache et de non mise en cache

Les limites de mise en cache d’une machine virtuelle sont séparées de ses limites de non-mise en cache. Cela signifie que vous pouvez activer la mise en cache de l’hôte sur les disques attachés à une machine virtuelle tout en désactivant la mise en cache de l’hôte sur d’autres disques. Cette configuration permet à vos machines virtuelles d’obtenir un total d’E/S de stockage égal à la limite mise en cache plus la limite non mise en cache.

Nous allons parcourir un exemple pour vous aider à comprendre comment ces limites fonctionnent ensemble. Nous allons continuer avec la machine virtuelle Standard_D8s_v3 et la configuration avec disques Premium attachés.

Configuration :

  • Standard_D8s_v3
    • E/S par seconde mises en cache : 16 000
    • E/S par seconde non mises en cache : 12 800
  • Disque de système d’exploitation P30
    • IOPS : 5 000
    • Mise en cache de l’hôte : Lecture/écriture
  • Deux disques de données P30 x 2
    • IOPS : 5 000
    • Mise en cache de l’hôte : Lecture/écriture
  • Deux disques de données P30 x 2
    • IOPS : 5 000
    • Mise en cache de l’hôte : Désactivé

Diagramme montrant un exemple de mise en cache de l’hôte avec stockage étendu.

Dans ce cas, l’application qui s’exécute sur cette machine virtuelle Standard_D8s_v3 est activée pour une demande de 25 000 IOPS. La requête est divisée en 5 000 IOPS sur chacun des disques attachés. Trois disques utilisent la mise en cache de l’hôte et deux disques ne l’utilisent pas.

  • Étant donné que les trois disques qui utilisent la mise en cache de l’hôte se trouvent dans les limites de 16 000, ces demandes sont correctement honorées. Aucune limitation des performances de stockage ne se produit.
  • Étant donné que les deux disques qui n’utilisent pas la mise en cache de l’hôte se trouvent dans les limites de non-mise en cache de 12 800, ces requêtes sont également effectuées correctement. Aucune limitation ne se produit.