Performances des disques et des machines virtuelles

S’applique à : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Ensembles de mise à l’échelle flexibles ✔️ Ensembles de mise à l’échelle uniformes

Cet article explique comment les Machines virtuelles Azure (machines virtuelles) et les limites de performances de disque managé interagissent. Il décrit également comment diagnostiquer les goulots d’étranglement des E/S de disque et optimiser les performances du stockage.

Interaction des limites de performances des machines virtuelles et des disques managés Azure

Azure les machines virtuelles ont des opérations d’entrée/sortie par seconde (IOPS) et des limites de débit en fonction du type et de la taille de la machine virtuelle. Les disques de système d’exploitation managé et les disques de données ont leurs propres E/S par seconde et leurs propres limites de débit.

Allocation de disque et performances

Les disques attachés à une machine virtuelle Azure utilisent trois chemins d’E/S. Le diagramme suivant montre comment Azure alloue des opérations de bande passante et d’entrée/sortie par seconde (IOPS) sur ces chemins en temps réel.

Diagramme des E/S de disque managé non mis en cache passant par les limites du réseau de disque et de machine virtuelle. Les E/S mises en cache utilisent également des limites ssd, tandis que les accès au cache et les E/S de disque temporaire utilisent le disque SSD du serveur.

Le premier chemin d’E/S est le chemin du disque managé non mis en cache. Les opérations d’E/S utilisent ce chemin lorsque vous utilisez un disque managé et que vous définissez la mise en cache nonede l’hôte sur . Les opérations d’E/S qui utilisent ce chemin d’accès sont exécutées en fonction du provisionnement au niveau du disque, puis du provisionnement au niveau du réseau de la machine virtuelle pour les IOPS et le débit.

Le deuxième chemin d’E/S est le chemin du disque managé mis en cache. Les E/S de disque managé mis en cache utilisent un disque SSD proche de la machine virtuelle. Ce disque SSD dispose de ses propres IOPS et de son propre débit alloués, et il apparaît sous l’intitulé « provisionnement au niveau du SSD » dans le diagramme.

Lorsqu’un disque managé mis en cache lance une lecture, la demande vérifie d’abord si les données se trouve dans le disque SSD du serveur. Si les données ne sont pas présentes, un défaut de cache se produit. Ensuite, les E/S s’exécutent en fonction de l’approvisionnement au niveau SSD, de l’approvisionnement au niveau du disque, puis de l’approvisionnement au niveau du réseau de machines virtuelles pour les IOPS et le débit.

Lorsque le disque SSD du serveur lance des lectures sur des E/S mises en cache présentes sur le disque SSD du serveur, un accès au cache se produit. Les E/S s’exécutent ensuite en fonction du provisionnement au niveau SSD. Indique que les initialisations d’un disque managé avec mise en cache activée suivent toujours le chemin d’un défaut de cache. Ils passent par le provisionnement au niveau ssd, au niveau disque et au niveau du réseau de machines virtuelles.

Le troisième chemin d’accès concerne le disque temporaire. Elle est disponible uniquement sur les machines virtuelles qui prennent en charge les disques temporaires. Une opération d’E/S empruntant ce chemin d’accès fonctionne selon le provisionnement au niveau du SSD des IOPS et du débit.

Le diagramme suivant illustre un exemple de ces limitations. Le système empêche une machine virtuelle Standard_D2s_v3 d’atteindre le potentiel de 5 000 IOPS d’un disque P30, qu’il soit mis en cache ou non, en raison de limites au niveau du disque SSD et du réseau.

Diagramme d’une machine virtuelle Standard_D2s_v3 limitant les performances du disque P30 à 3 200 E/S par seconde et 32 Mbits/s pour les E/S non mises en cache ou 4 000 IOPS et 32 Mbits/s pour les E/S mises en cache.

Azure utilise un canal réseau hiérarchisé pour le trafic disque. Le trafic disque est prioritaire sur le trafic réseau de faible priorité. Cette hiérarchisation aide les disques à maintenir leurs performances attendues en cas de contention réseau.

De même, stockage Azure gère les conflits de ressources et d’autres problèmes en arrière-plan avec l’équilibrage de charge automatique. stockage Azure alloue les ressources requises lorsque vous créez un disque et applique un équilibrage proactif et réactif des ressources pour gérer le niveau de trafic. Ce comportement garantit davantage que les disques peuvent maintenir leurs objectifs d’E/S par seconde et de débit attendus. Utilisez des métriques au niveau de la machine virtuelle et au niveau du disque pour suivre les performances et configurer des alertes selon les besoins.

Plafonnement des E/S disque

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. Cette condition peut entraîner des conséquences négatives comme une latence accrue. Les exemples suivants utilisent des IOPS, mais la même logique s’applique au débit.

Exemple de configuration de plafonnement au niveau du disque :

  • 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 d’une requête de 10 000 IOPS répartie sur trois disques E30, chacun limité à 500 IOPS, ce qui entraîne une réponse de 1 500 IOPS.

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 sont demandées pour 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

Exemple de configuration de plafonnement au niveau de la machine virtuelle :

  • 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 d’une demande de 15 000 IOPS sur trois disques P30 limités par la machine virtuelle Standard_D8s_v3 à 12 800 IOPS.

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 sont demandés au 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. Donc, ils répondent en indiquant les montants qu’ils demandent.

Limites en cache et hors cache de la machine virtuelle

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 :

  • Les données de disque « Non mises en cache » sous le Stockage distant sont les limites maximales de stockage par défaut que la machine virtuelle peut gérer. Capture d’écran de la Standard_D8s_v3 limites de stockage à distance montrant 16 disques, 12 800 IOPS non mises en cache, un débit de 192 Mbits/s et des limites de rafale de 16 000 IOPS et 400 Mbits/s.

  • Les données de disque « Mises en cache » sous l’onglet Stockage local sont des limites distinctes quand vous activez la mise en cache de l’hôte. Capture d’écran de la Standard_D8s_v3 limites de stockage locales montrant un disque temporaire de 64 Gio, un cache de 200 Gio, 16 000 IOPS mis en cache et un débit mis en cache de 128 Mbits/s.

Configurer la mise en cache de l’hôte

La mise en cache de l’hôte consiste à rapprocher le stockage de la machine virtuelle afin de permettre des opérations de lecture et d’écriture rapides. 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, la mise en cache n’est pas activée sur les disques de données prenant en charge le cache. Les disques de système d’exploitation prenant en charge le cache ont la mise en cache en lecture/écriture activée.

Capture d’écran des paramètres de disque du portail Azure montrant la mise en cache en lecture/écriture pour le disque du système d’exploitation, la mise en cache en lecture seule pour un disque de données et la mise en cache en lecture/écriture pour un autre disque de données.

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.

Mise en cache de l’hôte en lecture seule

L’exemple suivant montre comment les demandes d’E/S circulent lorsque vous définissez la mise en cache de l’hôte sur Lecture seule.

Exemple de mise en cache de l’hôte en lecture seule :

  • Standard_D8s_v3
    • IOPS en cache : 16 000
    • IOPS sans mise 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 à partir du disque. Cette lecture est comptabilisée dans les limites mises en cache de la machine virtuelle.

Diagramme d’une demande de lecture Standard_D8s_v3 servie par le cache hôte sans accéder au disque de données P30.

Quand 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 présente au cache et à 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 d’une lecture avec défaut de cache allant de la machine virtuelle Standard_D8s_v3 au disque de données P30 via le cache de l’hôte, la réponse revenant via le cache.

Quand 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.

Schéma d’une écriture avec cache hôte en lecture seule, circulant de la machine virtuelle Standard_D8s_v3 via le cache hôte jusqu’au disque de données P30 avant sa finalisation.

Mise en cache de l’hôte en lecture/écriture

L’exemple suivant montre comment les demandes d’E/S circulent lorsque vous définissez la mise en cache de l’hôte sur Lecture/écriture.

Exemple de mise en cache de l’hôte en lecture/écriture :

  • Standard_D8s_v3
    • IOPS 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

Avec la mise en cache de l’hôte en lecture/écriture, les lectures d’accès au cache sont comptabilisées dans les limites mises en cache de la machine virtuelle. Les lectures manquées de cache sont comptabilisées dans les limites mises en cache et non mises en cache de la machine virtuelle. Les écritures sont gérées différemment : une écriture doit atteindre uniquement le cache de l’hôte pour être considérée comme terminée. L’opération d’écriture n’est ensuite écrite sur le disque que plus tard, lorsque le cache est vidé périodiquement. Vous pouvez également forcer la purge en envoyant une commande fua ou f/sync. Une opération d’écriture est comptabilisée dans les E/S mises en cache lorsqu’elle est écrite dans le cache, et dans les E/S non mises en cache lorsqu’elle est écrite sur le disque de manière différée.

Schéma d’une écriture avec mise en cache lecture/écriture de l’hôte, qui s’achève dans le cache hôte et est écrite de manière différée sur le disque de données P30.

Exemple de limite mise en cache

L’exemple suivant utilise une machine virtuelle Standard_D8s_v3 avec la mise en cache de l’hôte activée et trois disques P30 attachés. La machine virtuelle a une limite mise en cache de 16 000 IOPS, et chaque disque P30 peut gérer 5 000 IOPS.

Exemple de configuration de limite mise en cache :

  • Standard_D8s_v3
    • IOPS en cache : 16 000
    • IOPS 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 d’une machine virtuelle Standard_D8s_v3 qui effectue une requête de 16 000 IOPS via le cache hôte, qui écrit en différé sur un disque de système d’exploitation P30 et deux disques de données P30.

L’application utilise une machine virtuelle Standard_D8s_v3 avec mise en cache activée. Il fait une demande de 16 000 IOPS. Les demandes 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. Cette séparation signifie que vous pouvez activer la mise en cache de l’hôte sur certains disques attachés à une machine virtuelle tout en n’activant pas la mise en cache de l’hôte sur d’autres disques. Cette configuration permet à vos machines virtuelles d’obtenir un nombre total d’E/S de stockage de la limite mise en cache plus la limite non mise en cache.

L’exemple suivant montre comment les limites mises en cache et non mises en cache fonctionnent ensemble sur une machine virtuelle Standard_D8s_v3 avec des DISQUES SSD Premium attachés.

Exemple de configuration de limite mise en cache et non mise en cache combinée :

  • Standard_D8s_v3
    • IOPS 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 d’une machine virtuelle Standard_D8s_v3 répondant à 25 000 IOPS en envoyant 15 000 IOPS mises en cache à trois disques P30 et 10 000 IOPS non mis en cache à deux disques de données P30.

Dans ce cas, l’application qui s’exécute sur une machine virtuelle Standard_D8s_v3 effectue 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.

  • Comme les trois disques qui utilisent la mise en cache de l’hôte restent dans la limite de cache de 16 000, ces requêtes sont traitées avec succès. 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. Aucun plafonnement n’est appliqué.