Pourquoi l'IOPS est-il important?


32

Je comprends ce que sont IOPS et le débit. Le débit mesure le flux de données en Mo / s et IOPS indique le nombre d'opérations d'E / S effectuées par seconde.

Ce que je ne comprends pas, c'est pourquoi de nombreux services de stockage affichent simplement les IOPS qu'ils fournissent. Je ne vois vraiment aucun scénario où je préférerais connaître l'IOPS au lieu du débit.

Pourquoi l'IOPS est-il important? Pourquoi AWS affiche principalement ses dispositions de stockage dans IOPS? Où les IOPS sont-ils plus pertinents que le débit (Mo / s)?


MODIFIER:

Certaines personnes se penchent sur cette question comme si je leur demandais ce qu'est l'accès aléatoire et quel en est l'impact sur les performances ou le fonctionnement des disques durs et SSD ... bien que je pense que cette information est utile pour les nouveaux utilisateurs du comportement de stockage, beaucoup d'attention est appliquée à cela et ce n'est pas le but de la question, la question porte sur "Quelle nouvelle information puis-je obtenir lorsque je vois un numéro IOPS, que je ne verrais pas voir un nombre de débits (Mo / s)?"



3
Si vous souhaitez déplacer des données volumineuses, le débit vous tient à cœur. Si vous avez besoin de stocker beaucoup de petites données, vous avez besoin de plus d'IOPS. eg1 Si une seule opération peut lire des Mo de données à partir du périphérique, une seule opération suffit pour obtenir un débit élevé. eg2 Si vous devez lire des dizaines d'attributs de fichier, vous ne regardez pas une grande quantité de données à chaque fois, mais vous devez effectuer de nombreuses opérations pour extraire de petits morceaux de données. Le débit serait faible mais vous auriez besoin de nombreuses opérations.
TafT

Réponses:


32

Débit

Le débit est utile lorsque vous effectuez des tâches telles que la copie de fichiers. Lorsque vous faites presque n'importe quoi d'autre, des lectures et écritures aléatoires sur le disque vous limitent.

IOPS

IOPS spécifie généralement la taille de chaque paquet de données. Par exemple, AWS gp2 peut effectuer 10 000 IOPS avec une taille de charge utile de 16 Ko . Cela se multiplie à 160 Mo / sec. Cependant, il est peu probable que vous utilisiez constamment la taille de la charge utile totale, de sorte que le débit réel sera probablement plus faible. NB: le Ko est de 1024 octets et KB de 1000 octets.

Parce que IOPS spécifie une taille de paquet qui vous donne également un débit total. Considérant que le débit élevé ne signifie pas que vous avez des IOPS élevées.

Scénarios

Considérez ces scénarios:

  • Démarrer votre PC. Considérez la différence entre un disque SSD et un disque en rotation sur votre ordinateur, ce que de nombreuses personnes ont déjà expérimenté. Avec un disque en rotation, le temps de démarrage peut être d'une minute, alors que pour un SSD, il peut atteindre 10 à 15 secondes. En effet, des IOPS plus élevés entraînent une latence plus faible lorsque des informations sont demandées. Le débit du disque en rotation est assez bon, 150 Mo / s, bien que le SSD soit probablement plus élevé, ce n’est pas pour cela qu’il est plus rapide: c’est la latence plus faible pour renvoyer des informations.
  • Exécuter une mise à jour du système d'exploitation. Il parcourt le disque, ajoute et corrige des fichiers. Si vous aviez de faibles IOPS, cela serait lent, quel que soit le débit.
  • Exécution d'une base de données, par exemple en sélectionnant une petite quantité de données dans une base de données volumineuse. Il lit dans l'index, dans plusieurs fichiers, puis renvoie un résultat. Encore une fois, il faut parcourir le disque pour rassembler les informations.
  • Jouer à un jeu sur votre PC. Il charge probablement un grand nombre de textures de partout sur le disque. Dans ce cas, le débit IOPS et le débit sont probablement requis.

Bande LTO

Considérons un instant un système de sauvegarde sur bande. Le LTO6 peut faire 400 Mo / s, mais (je devine ici) ne peut probablement même pas faire une PIO aléatoire, il pourrait être aussi bas que quelques secondes par PIO. D'autre part, il peut probablement effectuer un grand nombre d'IOPS séquentiels, si un IOPS est défini comme lisant ou écrivant un paquet de données sur une bande.

Si vous essayez d’amorcer un système d’exploitation hors bande, cela prendra du temps, si cela fonctionne. C'est pourquoi l'IOPS est souvent plus utile que le débit.

Pour comprendre un périphérique de stockage, vous voulez probablement savoir s’il s’agit d’E / S par seconde ou aléatoires, ainsi que de la taille des E / S. Vous pouvez en déduire un débit.

AWS

Notez qu'AWS publie les chiffres d'IOPS et de débit pour tous ses types de stockage sur cette page . Le SSD à usage général (gp2) peut générer 10 000 E / S 16 Ko, ce qui donne un maximum de 160 Mo / s. IOPS provisionné (io1) est de 20 000 IOPS 16 Ko, ce qui donne un maximum de 320 Mo / s.

Notez qu'avec les volumes gp2, vous obtenez 30IOPS par Go provisionné. Pour obtenir 10 000 IOPS, vous avez besoin d'un volume de 333,33 Go. Je ne me souviens pas si les volumes de io1 ont une limitation similaire (cela fait longtemps que je n'ai pas passé les examens d'associé où ce genre de chose est testé), mais je suppose que oui, et si c'est le cas, il s'agit probablement de 60IOPS par Go.

Conclusion

Un débit séquentiel élevé est utile et constitue parfois le facteur limitant des performances, mais une IOPS élevée sera probablement plus important dans la plupart des cas. Bien entendu, vous avez toujours besoin d’un débit raisonnable, quelle que soit l’impact IOPS.


Je comprends que IOPS mesure les performances d'accès aléatoire, mais cela ne montre pas à quelle vitesse vous faites les choses ... vous pourriez faire 10000 IOPS, mais cela pourrait être quelque chose de lent ou rapide, la seule façon de savoir est de savoir combien Mo / s l'opération consomme.
mFeinstein

Les IOPS spécifient généralement la taille de la charge de données. AWS dit 16 Ko. Donc, 10 000 IOPS à 16 Ko / s vous donne 160 Mo / s.
Tim

2
10000 IOPS à 16 Ko ne se traduira pas par 20000 IOPS à 8 Ko, cependant (peut-être ~ 11 000). Cela signifie que vous devez connaître à la fois l'IOPS et le débit pour évaluer un lecteur / une charge de travail.
boot4life

4
Juste pour être pédant, il reste 1 IOPS, pas 1 IOP. Le s n'est pas un pluriel
Matthew Steeples

1
Je ne peux penser à aucun autre. La plupart des choses qui sont IOPS élevées ont un débit raisonnablement élevé, mais sont dans la plupart des cas utiles en raison des IOPS et non du débit. Un autre exemple pourrait être une base de données relationnelle, bien que ce ne soit pas un périphérique de stockage, c'est un logiciel. Je ne sais pas ce que vous voulez de plus dans cette question, je pense que le concept vous a été expliqué en détail. Tout ce qui a un temps de recherche ou une latence élevé a probablement de faibles IOPS, mais le débit peut être découplé et même élevé dans certains cas.
Tim

57

Cela s'explique par le fait que le débit séquentiel ne correspond pas à la majorité des activités d'E / S.

Les opérations de lecture / écriture aléatoires sont plus représentatives de l'activité normale du système et sont généralement liées à l'IOPS.

La diffusion de contenu pornographique depuis l' un de mes serveurs vers nos clients (ou le téléchargement sur notre CDN) est de nature plus séquentielle et vous verrez l'impact du débit à cet endroit.

Mais maintenir la base de données qui catalogue le porno et suit l'activité des utilisateurs sur le site va être de nature aléatoire et limité par le nombre de petites opérations d'E / S / seconde que le stockage sous-jacent est capable de faire.

J'ai peut-être besoin de 2 000 IOPS pour pouvoir utiliser les bases de données au maximum de mon utilisation, mais je ne peux voir qu'un débit de 30 Mo / s au niveau du disque en raison du type d'activité. Les disques sont capables de 1200 Mo / s, mais les IOPS sont la limitation dans l'environnement.

C'est une façon de décrire le potentiel de capacité d'un système de stockage. Un SSD peut avoir une capacité de 80 000 IOPS et un débit de 600 Mo / s. Vous pouvez obtenir ce débit avec 6 disques SAS 10k standard, mais cela ne donnerait qu’environ 2 000 IOPS.


Pourriez-vous me donner un exemple où IOPS me donnerait un aperçu des performances de mon système où le MB / s ne serait pas utile?
mFeinstein

@mFeinstein Voir l'exemple porno ci-dessus.
ewwhite

33
+1 par exemple lol
mFeinstein

2
En outre, un système d'exploitation est probablement en train de faire un tas de petits accès aléatoires. Le débit de Seq ne va pas aider. C'est une raison pour exécuter le système d'exploitation sur un SSD, du moins sur les PC.
Sudo

3
Je vois souvent des disques pleinement utilisés qui font ~ 2 Mo / s. C'est parce que c'est 100% aléatoire IO. Parfois, des gains de performances incroyables sont éventuellement obtenus en disposant les données de manière séquentielle sur le disque (par exemple, suppression de la fragmentation, indexation dans des bases de données).
boot4life

6

Bien que la réponse de ewwhite soit tout à fait correcte, je souhaitais fournir des chiffres plus concrets, simplement pour aider à mettre en perspective la différence.

Comme ewwhite l’a déjà dit correctement, la plupart des applications autres que la diffusion en continu exécutent principalement des opérations de disque non séquentielles, c’est pourquoi l’IPS est important en plus du débit de pointe théorique.

Lorsqu'un collègue et moi-même avons installé pour la première fois les disques SSD dans nos systèmes de développement pour remplacer les disques durs que nous utilisions auparavant, nous avons effectué des mesures de performance qui ont vraiment mis en évidence l'importance de cette situation:

Résultats SATA HDD:

Débit de lecture séquentielle: ~ 100 Mo / s
Débit de lecture non séquentielle (blocs 2k, IIRC): ~ 1 Mo / s

Résultats SSD attachés PCIe:

Débit de lecture séquentielle: ~ 700 Mo / s
Débit de lecture non séquentiel (blocs 2k, IIRC): ~ 125 Mo / s

Comme vous pouvez le voir clairement dans l'exemple, le seul fait d'indiquer un débit maximal pour chaque périphérique donnerait une image extrêmement inexacte de la façon dont ils se comparent. Le SSD n’est qu’environ 6 à 7 fois plus rapide que le disque dur lors de la lecture séquentielle de gros fichiers, mais il est 100 fois plus rapide lors de la lecture de petits morceaux de données à partir de différentes parties du disque. Bien entendu, avec les disques durs, cette limitation est due en grande partie au fait que les disques durs doivent déplacer physiquement la tête de lecture sur la piste souhaitée, puis attendre que les données souhaitées tournent sous la tête, tandis que les disques SSD n’ont aucune pièce physique à déplacer.

Nos temps de compilation se sont nettement améliorés par rapport à une simple comparaison des débits maximaux suggérée. Les builds qui prenaient précédemment plus de 30 minutes s’achèvent maintenant en une minute environ, car lors d’une compilation de grande taille, l’entrée / la sortie d’un disque consiste en la lecture et l’écriture de nombreux fichiers sources distincts qui ne sont pas très volumineux et peuvent être dispersés physiquement sur le disque. .

En fournissant à la fois le débit et les nombres IOPS, vous pouvez avoir une bien meilleure idée de la performance d'une charge de travail donnée sur un périphérique de stockage donné. Si vous ne faites que diffuser en continu de grandes quantités de données qui ne sont pas fragmentées, vous obtiendrez un débit proche du débit maximal. Toutefois, si vous effectuez de nombreuses petites lectures et / ou écritures qui ne sont pas stockées séquentiellement sur le disque, vous serez limité par IOPS.


Avez-vous également mesuré l'IOPS?
mFeinstein

3

Pour effectuer une opération d'entrée-sortie, le ou les lecteurs doivent effectuer une série d'opérations. Pour un disque dur mécanique, ils doivent le faire.

  1. Cherchez la bonne piste et sélectionnez la bonne tête.
  2. Attendez que le plateau tourne dans la bonne position.
  3. Transférez réellement les données.

Le temps pris pour 3 dépend de la taille du bloc de données, mais le temps pris pour 1 et 2 est indépendant de la taille de la demande.

Le débit nominal et les valeurs des PIO représentent des cas extrêmes. Les chiffres de débits de titre représentent le cas où chaque opération implique un bloc de données volumineux, de sorte que le lecteur passe le plus clair de son temps à déplacer des données.

Le chiffre de la PIO en titre représente le cas où les blocs de données sont très petits, de sorte que la majorité du temps est consacrée à la recherche des têtes et à l'attente de la rotation des plateaux.

Pour de nombreuses charges de travail, les blocs sont suffisamment petits pour que le nombre de blocs à transférer soit bien plus important que la taille des blocs.


2

Il existe deux types de goulot d'étranglement que vous pouvez rencontrer sur les volumes d'E / S (ou les E / S en général).

Les performances réelles sont en effet mesurées pour inclure un composant basé sur le volume de données déplacées, mis à l’échelle par la bande passante disponible ou une taille similaire, le coût unitaire *, mais il existe également une surcharge associée aux demandes, qui est constante, que ce soit le disque, le réseau ou le serveur. nombreuses autres choses.

unitcost * size + overhead. l'équation d'une ligne.

Si le coût unitaire est élevé ou si la taille est grande, il est logique de facturer des charges basées sur ces volumes, tels que les réseaux de téléphonie mobile, par contre, les frais généraux sont parfois beaucoup plus critiques.

Vous pouvez en faire une expérience simple, créer un répertoire avec quelques fichiers de 1 Go (ou tout ce qui est pratique, quelque chose d'aussi grand qu'il faut plusieurs secondes pour le lire / l'écrire), puis créer un dossier contenant un million de fichiers de 100 octets. (notez que c'est 0,1 Go de données), puis voyez ce qu'il advient de votre débit lorsque vous essayez de déplacer tout ce que vous faites entre différentes partitions / disques - vous obtiendrez des performances limitées par le débit des fichiers volumineux, ainsi que par le nombre de fichiers pour les petites choses.

Je suppose que Amazon est au courant des deux modèles de charge et a tout simplement constaté que l'un d'eux représentait mieux les capacités de leur infrastructure.

La taille d'une PIO est généralement limitée en fonction du montant que le magasin peut transférer dans un "cycle" de toute façon. Par conséquent, les demandes volumineuses vous coûtent toujours plusieurs IOPS.

Amazon a publié un article intéressant sur les coûts et les E / S IOPS, ainsi que sur les «économies» qu’ils réalisent grâce à des optimisations.

Caractéristiques I / O et surveillance

Pas tout lire mais ça a l'air intéressant, si vous êtes curieux de connaître ce domaine.


2

Répondre à votre question

"Quelle nouvelle information puis-je obtenir lorsque je vois un numéro IOPS, que je ne parviendrai pas à voir un numéro de débit (Mo / s)?"

directement, il représente le nombre d'opérations d'E / S de la profondeur de la file d'attente spécifiée et de la taille du fichier que le stockage peut effectuer par seconde . Vous pouvez calculer le débit à des conditions données à l'aide de la formule suivante:

Taille du fichier IOPS * = débit

Les tests de stockage peuvent générer un nombre différent d'IOPS en fonction de la taille du fichier et de la profondeur de la file d'attente. À la profondeur de la file d'attente = 1 ou 2, le contrôleur ne tire pas parti de la mise en cache, tandis qu'à la profondeur de la file d'attente 32, 256, 512 le nombre augmente plusieurs fois et ne change pas beaucoup. Avec une taille de fichier de 128 Ko, le nombre d'E / S par seconde peut être inférieur pour les fichiers de 4 Ko, mais pour un débit supérieur.

Le meilleur moyen d'évaluer les performances d'un stockage consiste à rechercher des tests d'IOPS et de débit à différentes tailles de blocs et de profondeurs de files d'attente.


Je pense que vous pouvez confondre un peu le débit IOPS ... Le débit n’est pas synonyme d’accès continu, mais la quantité totale de Mo / s que le stockage a pu traiter à un moment donné ... Alors, quand vous dites le disque dur et le SSD aurait le même débit, c’est pour un accès continu ... Comme il existe également un débit pour un accès aléatoire ... Juste beaucoup moins pour les disques durs en général à cause du temps de recherche.
mFeinstein

Vous devez donc indiquer dans votre réponse que vous faites référence à l'accès continu au début et à l'accès aléatoire à la fin, car IOPS n'est pas synonyme d'accès aléatoire également ... Juste au moment où il est plus logique d'utiliser IOPS en tant que mesure
mFeinstein

@ mFeinstein J'ai modifié la réponse, jetez un coup d'oeil.
Eugene

1

De manière générale, l'IOPS est plus difficile à obtenir que le débit. Si vous avez beaucoup d'IOPS, vous aurez la plupart du temps un débit suffisant.

Avec les disques durs classiques, le nombre d'axes est votre facteur limitant, car la tête doit être physiquement déplacée sur chaque lecteur: et elle est terriblement lente. Les disques SSD ont une bien meilleure capacité IOPS.

Si vous avez juste un utilisateur, copiant un gros fichier sur le réseau, vous ne pouvez avoir qu'une douzaine de recherches pour obtenir les données, et le reste ne sera diffusé qu'en continu à partir du disque.

Toutefois, si vous utilisez une base de données ou si vous avez beaucoup d'utilisateurs simultanés, vous devrez accéder à différentes parties de votre stockage en même temps, avec la montée en flèche d'IOPS.

La mise à jour parallèle de 10 lignes sur une base de données relationnelle peut générer des centaines d’IO: lecture des index, lecture des données, ajout du fichier journal, mise à jour des index et des données. La plupart des systèmes d'exploitation et des bases de données s'efforcent de limiter le nombre d'E / S en mettant en cache et en retardant / groupant les E / S lorsque cela est possible.


1

Je vais également répondre à ma propre question car je pense que la plupart des réponses vont beaucoup au sujet et la réponse pourrait être beaucoup plus simple:

Si vous ne regardez que le débit de vos périphériques de stockage, vous pouvez rater ce qui se passe ... Si le débit est faible (Mo / s bas), vous pourriez avoir un périphérique lent OU avoir beaucoup d'accès aléatoire sur un disque dur ou un autre périphérique cela ne gère pas bien l'accès aléatoire.

En examinant les IOPS et en connaissant la taille de bloc de chaque opération d'E / S, vous pouvez savoir combien d'accès peuvent être gérés par le périphérique de stockage et quel est le débit de ces IOPS (taille de bloc * IOPS).

Vous pouvez donc conclure que votre périphérique de stockage gère de nombreux accès aléatoires, même si cela implique un faible débit ... ou peut-être envisagez-vous des faibles IOPS qui ont le même débit faible, ce qui signifie que votre périphérique est juste tourner au ralenti.

Ainsi, en examinant les IOPS, nous pouvons avoir une idée de ce que signifie réellement le débit, ils se complètent.


IOPS = Entrées / Sorties par seconde, il ne s’agit pas de pluriel et le point final S ne doit pas être omis. :)
Eugene

1
Il n’est pas question de pluriel, j’ai déjà vu certaines personnes se référer à IOP comme un raccourci pour "Opération d’E / S" car cela ressemble à ... Mais oui, cela pourrait prêter à confusion, donc je vais le remplacer, merci
mFeinstein
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.