Impact des niveaux RAID sur les IOPS [fermé]

11

En ce qui concerne les IOPS, j'ai vu plusieurs sources sur le Web qui suggèrent que les IOPS d'un nombre donné de disques sont simplement les IOPS d'un seul disque multiplié par le nombre de disques.

Si ma compréhension des IOPS est correcte (et je ne suis pas du tout sûr), j'aurais pensé que la réalité dépendrait - parmi de nombreux autres facteurs - du niveau RAID. Avec RAID 1/10, toutes les données sont dupliquées sur au moins deux disques, ce qui réduit les conflits sur un disque particulier pour certains modèles d'E / S. Cependant, dans les niveaux RAID entrelacés tels que RAID 0/5/6, les données sont distribuées plutôt que dupliquées, ce qui signifie que des demandes de lecture consécutives pourraient concerner la même broche, entraînant un blocage pendant la fin de l'IO précédent. Les écritures sont encore plus contestées.

Je dois ajouter que j'apprécie que la réalité est beaucoup plus complexe en raison de diverses optimisations et d'autres facteurs. Ma question consiste simplement à déterminer si, à un niveau très basique, ma compréhension de ce que signifie l'IOPS est sur la bonne voie. Il se pourrait que mon affirmation selon laquelle les IOPS puissent même être influencés par les niveaux RAID de cette manière indique un malentendu fondamental du concept.

dbr
la source
4
Vous simplifiez cela au point où vous excluez l'impact du cache du contrôleur RAID, du système d'exploitation, du comportement de l'application, des E / S synchrones ou asynchrones et du type de disque. Alors ... que cherchez-vous?
ewwhite
@ewwhite Désolé, j'aurais dû être plus clair. J'espère vraiment voir si le principe de base de ma pensée est correct, plutôt que de faire des prédictions réelles. J'apprécie qu'en réalité les choses soient grandement influencées par toutes sortes d'optimisations et d'autres complexités. Il y a une situation réelle en arrière-plan, mais comme c'est souvent le cas lorsque vous examinez quelque chose que vous ne connaissez pas très bien, j'ai décidé de partir et de faire un apprentissage de base, donc je me sens un peu plus à l'aise avec les principes de base.
dbr
J'ai été tenté de demander si quelqu'un avait des recommandations sur une lecture de bonne qualité concernant la théorie et les concepts entourant le stockage et ses performances, mais je ne l'ai pas fait car je pensais que cela pourrait être considéré comme une question inappropriée pour ServerFault. Il semble y avoir assez peu d'écrits de haute qualité sur le sujet sur le Web que j'ai trouvés jusqu'à présent - peut-être parce que c'est un sujet assez complexe que peu de gens comprennent vraiment.
dbr
Les performances RAID dépendent beaucoup plus du matériel du contrôleur et des limites d'implémentation que du niveau RAID. Par exemple, RAID0, RAID1, RAID5 et RAID6 peuvent théoriquement utiliser tous les disques pour des lectures longues, afin qu'ils puissent avoir exactement la même vitesse de lecture sur un contrôleur idéal.
Zac67 du

Réponses:

12

Pour le disque dur , les IOPS sont généralement dominés par le temps d'accès au disque, qui est la somme de la latence de recherche + du retard de rotation + du retard de transfert. Comme ces variables dépendent fortement des modèles d'accès et ont des interactions non évidentes avec la configuration RAID spécifique (par exemple: la taille de la bande) et le contrôleur (par exemple: le réglage anticipé de la lecture), toute réponse simple SERA FAUX.

Cependant, essayons d'avoir un chiffre approximatif. En première approximation, les IOPS garantis par une matrice à n disques doivent être n fois les IOPS d'un seul disque. Cependant, le niveau RAID et le modèle d'accès aux données , en déplaçant le poids entre la latence de recherche / rotation / transfert, modifient considérablement cette approximation de premier ordre.

Permet de faire quelques exemples, en supposant 100 IOPS par disque unique (une valeur typique pour les disques à 7200 tr / min) et les tableaux à 4 disques (sauf pour RAID1, souvent limité à 2 voies uniquement):

  • un seul disque représente 100 IOPS, à la fois en lecture et en écriture (remarque: en raison de la coalescence en écriture, les IOPS en écriture sont généralement plus élevés que les IOPS en lecture, mais permet d'ignorer cela pour plus de simplicité)
  • RAID0 (répartition à 4 voies) a jusqu'à 4x les IOPS aléatoires et jusqu'à 4x les IOPS séquentiels. Le mot clé ici est "jusqu'à": en raison de la nature de l'entrelacement et de l'alignement des données, si les secteurs à accès aléatoire résident généralement sur un seul disque, vous vous retrouverez avec des IOPS beaucoup plus faibles.
  • RAID1 (mise en miroir bidirectionnelle) est plus complexe à profiler. Comme différents disques peuvent rechercher des données différentes, il a jusqu'à 2x les IOPS de lecture aléatoire mais les mêmes IOPS d'écriture aléatoire 1x (ou légèrement inférieur, en raison de la surcharge). Si tout s'aligne bien (c.-à-d. Grandes lectures séquentielles mais pas à 100%, un contrôleur RAID utilisant le concept / la manipulation de morceaux / bandes même en mode miroir, la lecture anticipée fonctionne correctement, etc.), les lectures séquentielles peuvent parfois atteindre jusqu'à 2x la seule la valeur du disque, tandis que les écritures séquentielles restent plafonnées à 1x le disque unique (c'est-à-dire: pas d'accélération)
  • RAID10 (mise en miroir à 4 voies) est, en termes de performances, à mi-chemin entre la répartition RAID0 à 4 voies et la mise en miroir à 2 voies. Il a jusqu'à 4x les IOPS de lecture aléatoire et jusqu'à 2x les IOPS d'écriture aléatoire. Pour les transferts séquentiels, la mise en garde RAID1 s'applique: elle a parfois jusqu'à 4x les IOPS de lecture séquentielle, mais seulement 2x les IOPS d'écriture séquentielle. Veuillez noter que certaines implémentations RAID10 (à savoir Linux MDRAID) fournissent différentes dispositions pour les matrices RAID10, avec un profil de performances différent .
  • RAID5 (parité entrelacée) a jusqu'à 4x les IOPS de lecture aléatoire, tandis que les IOPS d'écriture aléatoire, en fonction d'un certain nombre de facteurs tels que la taille de l'écriture par rapport à la taille de la bande, la disponibilité d'un grand cache de bande, l'algorithme de reconstruction de bande lui-même (lecture-reconstruction-écriture vs lecture-modification-écriture), etc., peut être compris entre 0,5x (ou moins) et 2x les IOPS d'un seul disque. Les charges de travail séquentielles sont plus prévisibles, avec 3x les IOPS d'un seul disque (à la fois pour la lecture et l'écriture)
  • RAID6 (double parité rayée) se comporte un peu comme son frère RAID5, mais avec des performances d'écriture inférieures. Il a jusqu'à 4x les IOPS de lecture aléatoire d'un seul disque, mais ses performances d'écriture aléatoire sont encore inférieures à RAID5, avec les mêmes valeurs absolues (0,5x - 2x) mais avec une moyenne de mots réels inférieure. Les lectures et écritures séquentielles sont plafonnées à 2 fois les IOPS d'un seul disque.

Permettez-moi de répéter: ce qui précède sont des approximations simples et presque brisées. Quoi qu'il en soit, si vous voulez jouer avec une calculatrice RAID IOPS (très incomplète), jetez un œil ici .

Maintenant, retournez dans le monde réel. Sur les charges de travail du monde réel, RAID10 est souvent le choix le plus rapide et préféré , conservant des performances élevées même face à une baie dégradée . RAID5 et RAID6 ne doivent pas être utilisés sur des charges de travail sensibles aux performances, sauf si elles sont de nature centrée sur la lecture ou séquentielle. Il convient de noter que les contrôleurs RAID sérieux ont un cache d'écriture différée protégé contre les pertes de puissance, principalement pour surmonter (par une mise en cache de bande lourde) les faibles performances d'écriture aléatoire RAID5 / 6. Ne jamais utiliser RAID5 / 6 avec les contrôleurs RAID cache-moins , à moins que vous ne se soucie pas de la vitesse de tableau.

Les SSD sont des bêtes différentes, pensait-on. Comme ils ont un temps d'accès moyen beaucoup plus faible, les RAID basés sur la parité entraînent une surcharge de performances beaucoup plus faible et sont une option beaucoup plus viable que sur les disques durs. Cependant, dans une petite charge de travail centrée sur l'écriture aléatoire, j'utiliserais de toute façon une configuration RAID10.

shodanshok
la source
N'utilisez jamais RAID5 / 6 avec des contrôleurs RAID sans cache, sauf si vous ne vous souciez pas vraiment de la vitesse de la baie. Vous pouvez vous en sortir si vous savez vraiment ce que vous faites et contrôlez étroitement votre modèle d'E / S. Si vous ne faites rien d'autre que des E / S séquentielles correspondant à la taille de bande de la baie, vous pouvez vous en sortir en utilisant RAID5 / 6 sans cache. Et le cache ne peut pas sauver les performances si vous effectuez suffisamment d'opérations d'écriture aléatoires en petits blocs sur une matrice RAID5 / 6, bien que la valeur de «suffisamment d'opérations d'E / S» qui tue les performances puisse être un nombre énorme pour un très bon contrôleur RAID.
Andrew Henle
@AndrewHenle Bien sûr, si seulement la lecture / écriture séquentielle est alignée sur une bande, même un contrôleur sans cache en mode RAD5 / 6 peut vous donner de bons résultats. Cependant, il s'agit d'un modèle d'utilisation très étroit (c'est-à-dire: streaming et sauvegardes). Pour la charge de travail à usage général, un contrôleur sans cache combiné à tout RAID de parité sera très lent. Certains contrôleurs nécessitent même un cache d'écriture différée protégé contre les pertes de puissance pour vous permettre de créer un RAID de parité.
shodanshok
Je pensais davantage aux administrateurs qui se demandent pourquoi leur baie RAID6 de stockage de courrier d'entreprise à 21 disques avec une taille de bande de 19 Mo car plus grande doit être plus rapide est lente ...
Andrew Henle
1

C'est juste une question de définitions. Vous pouvez mesurer les IOPS à différents niveaux du système et vous obtiendrez différentes valeurs. Par exemple, supposons que vous ayez deux disques en miroir et que vous écrivez aussi vite que possible. Les IOPS allant aux disques seront deux fois le nombre d'IOPS qu'un seul disque peut gérer avec une charge d'écriture similaire. Mais les IOPS entrant dans le contrôleur seront égaux au nombre d'IOPS qu'un seul disque peut gérer.

Généralement, ce qui nous importe, c'est le nombre d'E / S logiques que nous pouvons intégrer dans la baie et nous ne nous soucions pas particulièrement de ce qui se passe au niveau du disque. Dans ce cas, vous avez raison et l'IOPS dépend du niveau RAID, du nombre de disques, des performances des disques individuels et, dans certains cas, des caractéristiques spécifiques des opérations.

David Schwartz
la source