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 par seconde : 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 Mo/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, (avec une longueur de file d’attente de 1) si votre disque peut gérer 5 000 IOPS, mais que le traitement de chaque opération prend 10 ms, votre 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.

Pour les disques Ultra et les disques managés SSD Premium v2, cela fonctionne un peu différemment étant donné que vous pouvez ajuster indépendamment la taille du disque, les IOPS et le débit. Les ajustements des IOPS ou du débit pour les disques Ultra et les disques managés SSD Premium v2 peuvent être effectués au moment de l’exécution, sans détacher le disque de la machine virtuelle.

IOPS de disque Ultra

Les disques Ultra prennent en charge des limites d’IOPS de 300 IOPS/Gio, avec au maximum 160 000 IOPS par disque. Pour atteindre l’IOPS cible pour le disque, vérifiez que le nombre d’IOPS du disque sélectionné est inférieur à la limite d’IOPS de la machine virtuelle.

La limite maximale actuelle pour les IOPS pour une seule machine virtuelle dans les tailles généralement disponibles est de 160 000. Les disques Ultra avec un plus grand IOPS peuvent être utilisés en tant que disques partagés pour prendre en charge plusieurs machines virtuelles.

Le nombre minimal d’IOPS garanti par disque est de 1 IOPS/Gio avec une base de référence globale minimale de 100 IOPS. Par exemple, si vous avez provisionné un disque Ultra de 4 Gio, le nombre minimal d’E/S par seconde (IOPS) pour ce disque est de 100, au lieu de quatre.

Débit du disque Ultra

La limite de débit d’un seul disque Ultra est de 256 Kio/s pour chaque IOPS provisionnée, avec au maximum 4000 Mo/s par disque (où 1 Mo/s = 10^6 octets par seconde). Le débit minimal garanti par disque est de 4 Kio/s pour chaque IOPS provisionnée, avec une base de référence globale minimale de 1 Mo/s.

IOPS des disques SSD Premium SSD v2

Tous les disques Premium SSD v2 bénéficient gratuitement d’IOPS de base de 3 000. Au-delà de 6 Gio, le nombre maximal d'IOPS d’un disque peut augmenter à raison de 500 par Gio, jusqu'à 80 000 IOPS. Ainsi, un disque de 8 Gio peut avoir jusqu’à 4 000 IOPS, et un disque de 10 Gio jusqu’à 5 000 IOPS. Pour pouvoir définir 80 000 IOPS sur un disque, ce disque doit avoir au moins 160 Gio. Augmenter vos IOPS au-delà de 3 000 augmente le prix de votre disque.

Débit des disques SSD Premium v2

Tous les disques SSD Premium v2 bénéficient gratuitement d’un débit de base de 125 Mo/s. Au-delà de 6 Gio, le débit maximal pouvant être défini augmente de 0,25 Mo/s par IOPS défini. Si un disque a 3 000 IOPS, le débit maximal qu’il peut définir est de 750 Mo/s. Pour augmenter le débit de ce disque au-delà de 750 Mo/s, ses IOPS doivent être augmentés. Par exemple, si vous avez augmenté les IOPS à 4 000, le débit maximal pouvant être défini est de 1 000. 1 200 Mo/s est le débit maximal pris en charge pour les disques disposant de 5 000 IOPS ou plus. Augmenter votre débit au-delà de 125 Mo/s augmente le prix de votre disque.

Limitation des E/S de machine virtuelle

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.

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:

Diagram that depicts virtual machine input output capping.

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.

Diagram that depicts disk input output capping.

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 des disques n’est pas disponible sur les disques Ultra et SSD Premium v2.

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 vous utilisez la mise en cache en écriture, 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/Mo/s (taille du cache en Gio) Débit du disque non mis en cache max. : IOPS/Mo/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.