Comprendre les caractéristiques des performances du disque

Effectué

Les performances de l’application dépendent souvent de la vitesse à laquelle l’application peut lire et écrire les données. Pour comprendre comment améliorer les performances, vous devez d’abord comprendre la façon dont elles sont mesurées, ainsi que les paramètres et les choix qui les affectent.

Caractéristiques des performances du disque

Pour choisir le type de disque approprié, il est important de comprendre les indicateurs de performance. Les indicateurs suivants expriment les performances :

  • E/S. Le nombre d’E/S par seconde est le nombre de demandes que votre application envoie aux disques en une seconde. L’IOPS affecte directement les performances de votre application. Certaines applications, telles que les sites Web de vente au détail, ont besoin d’un nombre d’entrées/sorties par seconde élevé pour gérer toutes les demandes d’E/S petites et aléatoires qui doivent être traitées rapidement pour que le site reste réactif. Plus les valeurs des IOPS sont élevées, plus les disques ont un niveau de performance élevé.
  • Débit. Le débit est la quantité de données que votre application envoie aux disques dans un intervalle spécifié. Le débit est également appelé taux de transfert de données et se mesure en Mbit/s. Si votre application effectue des E/S avec de grands blocs de données, elle nécessite un débit élevé. Plus le débit est élevé, plus les disques ont des performances élevées.
  • Latence. La latence est le temps nécessaire à votre application pour envoyer une demande au disque et obtenir une réponse. La latence limite le nombre d’E/S par seconde. Par exemple, si notre disque peut gérer 5 000 E/S par seconde, mais que le traitement de chaque opération prend 10 ms, notre application est limitée à 100 opérations par seconde en raison du temps de traitement. La latence est considérablement améliorée si vous activez la mise en cache de l’hôte en lecture seule.

IOPS et débit

Le débit et les E/S par seconde ont une relation directe. Si l’un subit des modifications, l’autre est directement affecté. Pour obtenir une limite de débit théorique, vous pouvez utiliser la formule suivante : E/S par seconde x Taille des E/S = débit. Il est important de tenir compte de ces deux valeurs quand vous planifiez votre application.

Maintenant que vous savez quels disques sont disponibles dans Azure, vous devez faire correspondre chacune de vos machines virtuelles avec le type de disque approprié. Les machines virtuelles ont leurs propres limites d’E/S par seconde liées au stockage, ce qui peut affecter les performances globales de l’application lorsqu’elles sont combinées avec les E/S par seconde du disque.

Limitation des E/S de machine virtuelle

Si vous ne dimensionnez pas correctement la machine virtuelle pour les performances de stockage requises par une application, la machine virtuelle elle-même devient un goulot d’étranglement.

Supposons, par exemple, que votre application effectue une requête qui requiert 15 000 E/S par seconde. Vous avez configuré une machine virtuelle Standard_D8s_v3, avec un disque de système d’exploitation P30 et deux disques de données SSD Premium avec la référence SKU P40. Chaque disque de données peut gérer 7 500 E/S par seconde et éventuellement répondre à la demande des applications, mais la machine virtuelle elle-même a une limite maximale de 12 800 E/S par seconde, qui est le nombre d’E/S par seconde réel que l’application obtiendra. La figure suivante illustre cet exemple:

Diagramme représentant la limitation des E/S de la machine virtuelle.

Le scénario illustré dans l’exemple précédent est appelé limitation des E/S de machine virtuelle. Dans ce scénario, l’application demande une quantité de débit et d’E/S par seconde que le disque peut gérer, mais la machine virtuelle ne peut pas prendre en charge ces exigences.

Vous pouvez diagnostiquer les problèmes de performances provoqués par la limitation d’E/S de machine virtuelle à l’aide des mesures suivantes :

  • Pourcentage d'E/S par seconde en cache consommé par la machine virtuelle
  • Pourcentage de bande passante en cache consommée par la machine virtuelle
  • Pourcentage d’E/S par seconde non mises en cache de machine virtuelle consommé
  • Pourcentage de bande passante non mise en cache consommée par la machine virtuelle

Limitation des E/S du disque

Vous pouvez vous trouver dans d’autres situations où la solution de stockage ne répond pas aux demandes de l’application. Toutefois, le goulot d’étranglement peut être provoqué si vous sélectionnez le niveau de performance incorrect pour les disques.

Considérez le même exemple dans lequel l’application requiert 15 000 E/S par seconde à partir de la machine virtuelle. Vous choisissez la configuration suivante :

  • D16s_v4 standard avec 25 600 E/S par seconde
  • Disque du système d’exploitation P20 avec 2 300 E/S par seconde
  • Deux disques de données P30, chacun prenant en charge 5 000 E/S par seconde

Dans ce scénario, la demande de l’application est divisée en trois demandes différentes :

  • 2 300 E/S par seconde sur le disque du système d’exploitation
  • 5 000 E/S par seconde pour chaque disque de données

Le nombre total d’E/S par seconde que la VM renvoie à l’application est de 12 300 comme une somme de toutes les E/S par seconde fournies par le système d’exploitation et les disques de données.

Ce scénario est connu sous le nom de limitation d’E/S du disque, alors que le disque lui-même ne peut pas répondre aux demandes de l’application.

Diagramme qui représente la limitation d’E/S de disque.

Pour diagnostiquer la limitation des E/S du disque, utilisez les mesures suivantes :

  • Pourcentage d'E/S par seconde du disque de données consommé
  • Pourcentage de bande passante du disque de données consommée
  • Pourcentage d'E/S par seconde du disque de système d'exploitation consommé
  • Pourcentage de bande passante du disque de système d'exploitation consommée

Mise en cache du disque

Un cache est un composant spécialisé qui stocke des données, généralement en mémoire afin que l’application puisse y accéder plus rapidement. Les données dans un cache sont souvent des données qui ont été lues précédemment, ou bien des données résultant d’un calcul antérieur. L’objectif est que les applications accèdent aux données plus rapidement à partir du cache qu’à partir du disque.

La mise en cache utilise un stockage temporaire spécialisé, et parfois coûteux, ayant de meilleures performances en lecture et en écriture qu’un stockage permanent. Étant donné que le stockage de cache est souvent limité, il est nécessaire de déterminer les opérations de données qui en bénéficieront le plus. Mais même dans les cas où le cache peut être rendu largement disponible, comme dans Azure, il est tout de même important de connaître les modèles de charge de travail de chaque disque avant de décider du type de mise en cache à utiliser.

La mise en cache en lecture tente d’accélérer l’extraction de données. Au lieu de lire à partir d’un stockage permanent, l’application lit les données à partir du cache plus rapide.

Il est important de noter que la mise en cache en lecture est bénéfique quand il existe une certaine prévisibilité de la file d’attente de lecture, comme un ensemble de lectures séquentielles. Pour les E/S aléatoires, où les données auxquelles vous accédez sont disséminées dans le stockage, la mise en cache apporte peu d’avantages, voire aucun, et elle peut même réduire les performances des disques.

La mise en cache en écriture tente d’accélérer l’écriture des données vers le stockage persistant. En utilisant un cache en écriture, l’application peut prendre en compte les données à enregistrer.

En réalité, lorsque la mise en cache en écriture est utilisée, les données sont mises en file d'attente dans un cache, en attendant d'être écrites sur un disque. Comme vous pouvez l’imaginer, ce mécanisme peut être un point de défaillance, par exemple, quand le système s’arrête avant que les données mises en cache n’aient été écrites. Certains systèmes, tels que SQL Server, gèrent eux-mêmes l’écriture des données mises en cache vers un stockage persistant sur disque.

Limites des machines virtuelles en cache et hors cache

Maintenant que vous comprenez comment la mise en cache peut améliorer les performances de lecture ou d’écriture de données sur le disque, vous devez être conscient de la façon dont la mise en cache affecte les performances de la machine virtuelle.

Les performances de la machine virtuelle dépendent de l’E/S par seconde et des limites de débit imposées en fonction de la taille de la machine virtuelle. Toutes les machines virtuelles du niveau Premium ont des limites différentes pour les E/S par seconde et le débit en fonction des configurations mises en cache et hors du cache. Vous pouvez améliorer les performances de la machine virtuelle pour répondre à la demande plus élevée d’E/S par seconde et de débit en activant la mise en cache de l’hôte de machine virtuelle.

Le tableau suivant répertorie des exemples qui illustrent la différence de performances pour le débit et la bande passante des disques mis en cache et sans mise en cache.

Nom de la taille de la VM Débit de stockage temporaire et mis en cache max. : IOPS/Mbits/s (taille du cache en Gio) Débit du disque non mis en cache max. : E/S par seconde/Mbit/s
Standard_D2s_v3 4 000/32 (50) 3 200/48
Standard_D4s_v3 8 000/64 (100) 6 400/96
Standard_D8s_v3 16 000/128 (200) 12 800/192
Standard_D64s_v3 128 000/1 024 (1,600) 80 000/1 200

La mise en cache de l’hôte peut vous aider à éviter les scénarios de goulot d’étranglement.

Dans l’exemple précédent de limitation d’E/S de la machine virtuelle, l’application nécessitait 15 000 E/S par seconde. Les deux disques de données peuvent gérer cette demande, mais la machine virtuelle Standard_D8s_v3 ne peut offrir que 12 800 E/S par seconde dans l’état non mis en cache.

Si vous configurez la mise en cache de l’hôte sur la machine virtuelle Standard_D8s_v3, vous pouvez obtenir 16 000 E/S par seconde mises en cache, ce qui est supérieur à ce qui est exigé par l’application.