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)?"
la source
Réponses:
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:
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.
la source
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.
la source
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.
la source
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.
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.
la source
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.
la source
Répondre à votre question
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.
la source
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.
la source
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.
la source