Test de matrices RAID logicielles pour les périphériques NVMe à l'aide de la méthodologie SNIA



Il y a quelques mois, alors qu'ils travaillaient sur le prochain projet, les gars de notre laboratoire de recherche ont étudié les disques NVMe et les solutions logicielles afin de trouver la meilleure option pour assembler une matrice logicielle.

Les résultats des tests étaient alors étonnamment décourageants - l'énorme potentiel de vitesse des disques NVMe n'était pas du tout en corrélation avec les performances démontrées des produits logiciels existants.

Nos développeurs ne l'ont pas aimé. Et ils ont décidé d'écrire leur produit ... Un produit que les spécialistes du marketing ont ensuite joyeusement proposé avec le nom RAIDIX ERA.

Aujourd'hui, plus d'une douzaine d'entreprises produisent des serveurs adaptés à l'utilisation des disques NVMe. Le marché des produits qui soutiennent et développent cette technologie a un énorme potentiel. Dans le rapport analytique G2M, des chiffres assez convaincants sont présentés, convaincant que ce protocole de transfert de données dominera dans un avenir proche.


Graphique du rapport G2M

Actuellement, Intel est l'un des leaders de la production de composants NVMe. C'est sur leur équipement que nous avons effectué des tests pour évaluer les capacités des logiciels existants à gérer un matériel aussi «innovant».

En collaboration avec notre partenaire Promobit (fabricant de serveurs et de systèmes de stockage de données sous la marque BITBLAZE), nous avons organisé des tests des disques NVMe d'Intel et des logiciels courants pour la gestion de ces appareils. Les tests ont été effectués selon la méthode SNIA.

Dans cet article, nous partagerons les chiffres obtenus lors des tests du système matériel Intel NVMe, des baies logicielles de MDRAID, Zvol sur ZFS RAIDZ2 et, en fait, de notre nouveau développement.

Configuration matérielle


Pour la base de la plateforme de test, nous avons pris le système serveur Intel Server System R2224WFTZS. Il dispose de 2 sockets pour l'installation de processeurs évolutifs Intel Xeon et de 12 canaux de mémoire (24 DIMM au total) DDR 4 avec une fréquence allant jusqu'à 2666 MHz.

Vous trouverez plus d'informations sur la plate-forme serveur sur le site Web du fabricant .

Tous les disques NVMe connectés via 3 backplanes F2U8X25S3PHS .

Au total, nous avons obtenu 12 disques NVMe INTEL SSDPD2MD800G4 avec le firmware CVEK6256004E1P0BGN dans le système.

La plate-forme serveur était équipée de deux processeurs Intel® Xeon® Gold 6130 à 2,10 GHz avec Hyper-Threading activé, permettant de lancer deux threads à partir de chaque cœur. Ainsi, en sortie, nous avons reçu 64 threads de calcul.

Préparation au test


Tous les tests de cet article ont été effectués conformément aux spécifications de la méthodologie SNIA SSS PTSe v 1.1. Y compris, une préparation préliminaire du stockage a été effectuée afin d'obtenir un résultat stable et honnête.

SNIA permet à l'utilisateur de définir les paramètres du nombre de threads et de la profondeur de file d'attente, nous avons donc défini 64/32, avec 64 threads de calcul sur 32 cœurs.

Chaque test a été effectué en 16 cycles pour amener le système à un niveau stable d'indicateurs et exclure les valeurs aléatoires.

Avant de commencer les tests, nous avons effectué une préparation préalable du système:

  1. Installation de la version 4.11 du noyau sur CentOS 7.4.
  2. Désactivez C-STATES et P-STATES.
  3. Exécutez l'utilitaire tuned-adm et définissez le profil de performances de latence.

Les tests de chaque produit et article ont été effectués selon les étapes suivantes:

Préparation des appareils selon la spécification SNIA (dépendante et indépendante du type de charge).

  1. Test IOps en blocs de 4k, 8k, 16k, 32k, 64k, 128k, 1m avec des variations de combinaisons de lecture / écriture 0/100, 5/95, 35/65, 50/50, 65/35, 95/5, 100/0 .
  2. Tests de latence avec des blocs 4k, 8k, 16k avec des variations de combinaisons de lecture / écriture 0/100, 65/35 et 100/0. Le nombre de threads et la profondeur de file d'attente est de 1-1. Les résultats sont enregistrés en tant que retards moyens et maximaux.
  3. Test de rendement avec blocs de 128k et 1M, en 64 lignes de 8 équipes.

Nous avons commencé par tester les performances, la latence et le débit de la plate-forme matérielle. Cela nous a permis d'évaluer le potentiel de l'équipement proposé et de comparer avec les capacités des solutions logicielles appliquées.

Test 1. Test matériel


Pour commencer, nous avons décidé de voir de quoi un disque Intel DCM D3700 NVMe est capable.
Dans la spécification, le fabricant déclare les paramètres de performances suivants:
Lecture aléatoire (100%) 450 000 IOPS
Écriture aléatoire (100%) 88000 IOPS

Test 1.1 Un lecteur NVMe. Test IOPS


Résultat de performance (IOps) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k84017.891393.8117271.6133059.4175086.8281131.2390969.2
8k42602.645735.858980.267321.4101357.2171316.8216551.4
16k21618.822834.829703.633821.252552,689731.2108347
32k10929.411322147871681126577,647185.250670.8
64k5494,45671,67342,68285.813130.22388427249.2
128k2748,42805.23617,84295.26506,611997,613631
1m351,6354,8451,2684,8830.21574,41702.8

Résultat de performance (IOps) sous forme graphique. Lecture / écriture Mix%.



A ce stade, nous avons obtenu des résultats qui n'atteignent pas tout à fait ceux de l'usine. Très probablement, NUMA (le schéma d'implémentation de la mémoire informatique utilisé dans les systèmes multiprocesseurs, lorsque le temps d'accès à la mémoire est déterminé par son emplacement par rapport au processeur) a joué son rôle, mais pour l'instant nous n'y prêterons pas attention.

Testez 1.2 Un lecteur NVMe. Tests de retard


Temps de réponse moyen (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k0,027190,0721340,099402
8k0,0298640,0930920,121582
16k0,0467260,1370160,16405

Temps de réponse moyen (ms) sous forme graphique. Lecture / écriture Mix%.



Temps de réponse maximum (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k6,98564.71471.5098
8k7.00044.31181,4086
16k7.00684.64451.1064

Temps de réponse maximum (ms) sous forme graphique. Lecture / écriture Mix%.



Test 1.3 Débit


La dernière étape consiste à évaluer le débit. Voici les indicateurs suivants:
Enregistrement séquentiel de 1 Mo - 634 Mo / s.
Lecture séquentielle 1 Mo - 1707 Mo / s.
Enregistrement séquentiel de 128 Ko - 620 Mo / s.
Lecture séquentielle de 128 Ko - 1704 Mo / s.

Après avoir traité un lecteur, nous procédons à l'évaluation de la plate-forme entière, qui se compose de 12 lecteurs.

Test 1.4 Système sur 12 disques. Test IOPS


Ici, une décision volontaire a été prise pour gagner du temps et afficher les résultats uniquement pour travailler avec le bloc 4k, qui est de loin le scénario le plus courant et indicatif pour évaluer les performances.

Résultat de performance (IOps) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k1363078.6156234519441052047612217647634413114202364

Résultat de performance (IOps) sous forme graphique. Lecture / écriture Mix%.



Test 1.5 Système sur 12 disques. Tests de bande passante


Enregistrement séquentiel de 1 Mo - 8612 Mbps.
Lecture séquentielle 1 Mo - 20481 Mbps.
Enregistrement séquentiel de 128 Ko - 7500 Mbps.
Lecture séquentielle de 128 Ko - 20 400 Mo / s.

Nous examinerons à nouveau les indicateurs de performances matérielles obtenus à la fin de l'article, en les comparant avec les numéros des logiciels testés dessus.

Test 2: Test de MDRAID


Lorsque nous parlons d'un ensemble de logiciels, MDRAID vient à l'esprit en premier. Rappelons qu'il s'agit du logiciel RAID de base pour Linux, qui est distribué gratuitement.

Voyons comment MDRAID gère le système à 12 disques proposé avec un niveau de matrice RAID 0. Nous comprenons tous que la construction de RAID 0 sur 12 disques nécessite un courage particulier, mais maintenant nous avons besoin de ce niveau de matrice pour démontrer les capacités maximales de cette solution.

Test 2.1 MDRAID. RAID 0. Test IOPS


Résultat de performance (IOps) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k10103961049306.61312401.41459698.61932776.82692752.82963943.6
8k513627.8527230.4678140771887.81146340.61894547.82526853.2
16k261087.4263638.8343679.2392655.2613912.81034843.21288299.6
32k131198.6130947.4170846.6216039.4309028.2527920.6644774.6
64k65083.465099.285257.2131005.6154839.8268425322739
128k32550.232718.243378,666999.878935.8136869.8161015.4
1m38023718,43233.43467,235466150.88193.2

Résultat de performance (IOps) sous forme graphique. Lecture / écriture Mix%.



Test 2.2 MDRAID. RAID 0. Tests de délai


Temps de réponse moyen (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k0,030150,0675410,102942
8k0,032810,0821320.126008
16k0,0500580,1142780,170798

Temps de réponse moyen (ms) sous forme graphique. Lecture / écriture Mix%.



Temps de réponse maximum (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k6.70423.72570,8568
8k6.59182.26010,9004
16k6.34662,777412,5678

Temps de réponse maximum (ms) sous forme graphique. Lecture / écriture Mix%.



Test 2.3 MDRAID. RAID 0. Tests de bande passante


Écriture séquentielle de 1 Mo - 7820 MBPS.
Lecture séquentielle de 1 Mo - 20418 MBPS.
Écriture séquentielle de 128 Ko - 7622 Mo / s.
Lecture séquentielle de 128 Ko - 20 380 Mo / s.

Test 2.4 MDRAID. RAID 6. Test IOPS


Voyons maintenant ce que ce système a au niveau RAID 6.

Options de création de tableaux
mdadm --create --verbose --chunk 16K / dev / md0 --level = 6 --raid-devices = 12 / dev / nvme0n1 / dev / nvme1n1 / dev / nvme2n1 / dev / nvme3n1 / dev / nvme4n1 / dev / nvme5n1 / dev / nvme8n1 / dev / nvme9n1 / dev / nvme10n1 / dev / nvme11n1 / dev / nvme6n1 / dev / nvme7n1

Le volume total de la matrice était de 7450,87 Gio .

Nous commençons le test après l'initialisation préliminaire de la matrice RAID.

Résultat de performance (IOps) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k39907.64284961609.878167.6108594.6641950.41902561.6
8k19474.420701.630316.439737.857051.6394072.21875791.4
16k10371.410979.21602220992.829955,6225157.41267495.6
32k8505.68824.81289616657.823823173261.8596857.8
64k5679,459318576.211137.215906.4109469.6320874.6
128k3976,84170.25974.27716,61099668124.4160453.2
1m768,8811,21177,815152149,64880.45499

Résultat de performance (IOps) sous forme graphique. Lecture / écriture Mix%.



Test 2.5 MDRAID. RAID 6. Tests de délai


Temps de réponse moyen (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k0,1937020.1455650,10558
8k0,2665820,1866180,127142
16k0,4262940,2816670,169504

Temps de réponse moyen (ms) sous forme graphique. Lecture / écriture Mix%.



Temps de réponse maximum (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k6.13064.54164.2322
8k6.24744.51973,5898
16k5.40745.58614.1404

Temps de réponse maximum (ms) sous forme graphique. Lecture / écriture Mix%.



Il est à noter qu'ici MDRAID a montré un très bon niveau de retards.

Test 2.6 MDRAID. RAID 6. Tests de bande passante


Écriture séquentielle de 1 Mo - 890 Mo / s.
Lecture séquentielle de 1 Mo - 18800 MBPS.
Écriture séquentielle de 128 Ko - 870 Mo / s.
Lecture séquentielle de 128 Ko - 10400 MBPS.

Test 3. Zvol sur ZFS RAIDZ2


ZFS a une fonction de création RAID intégrée et un gestionnaire de volume intégré qui crée des périphériques de blocs virtuels, qui sont utilisés par de nombreux fabricants de stockage. Nous profiterons également de ces fonctionnalités en créant un pool avec protection RAIDZ2 (analogue à RAID 6) et un volume de bloc virtuel au-dessus.

La version 0.79 (ZFS) a été compilée. Options de création de baies et de volumes:
ashift = 12 / compression - off / dedup - off / recordsize = 1M / atime = off / cachefile = none / Type RAID = RAIDZ2

ZFS montre de très bons résultats avec le pool nouvellement créé. Cependant, avec un doublage répété, les performances sont considérablement réduites.

L'approche SNIA est bonne car elle vous permet de voir les résultats réels des tests de systèmes de fichiers similaires (celui basé sur ZFS) après des écrasements répétés sur eux.

Testez 3.1 ZVOL (ZFS). RAIDZ2. Test IOps


Résultat de performance (IOps) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k15719,615147.214190.215592,417965,644832.276314.8
8k15536.214929.415140.81655117898.844553.476187.4
16k16696,615937.215982,61735018546.244895.475549.4
32k11859,6109159698.210235.41126526741.838167.2
64k74446440.26313.26578.27465,614145.819099
128k4425,43785,64059,83859,44246.47143.410052,6
1m772730,2779,6784824,4995,81514.2

Résultat de performance (IOps) sous forme graphique. Lecture / écriture Mix%.



Les chiffres de performance ne sont absolument pas impressionnants. Dans le même temps, le zvol pur (avant réécriture) donne des résultats nettement meilleurs (5 à 6 fois plus élevés). Ici, le test a montré qu'après le premier doublage, les performances chutaient.

Testez 3.2 ZVOL (ZFS). RAIDZ2. Tests de retard


Temps de réponse moyen (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k0,3328240,25552250,218354
8k0,32990,2590130,225514
16k0.1397380,1804670,233332

Temps de réponse moyen (ms) sous forme graphique. Lecture / écriture Mix%.



Temps de réponse maximum (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k90,5569,971884.4018
8k91,621486.6109104,7368
16k108.219286.2194105,658

Temps de réponse maximum (ms) sous forme graphique. Lecture / écriture Mix%.



Test 3.3 ZVOL (ZFS). RAIDZ2. Tests de bande passante


Écriture séquentielle de 1 Mo - 1150 Mo / s.
Lecture séquentielle de 1 Mo - 5500 MBPS.
Écriture séquentielle de 128 Ko - 1100 Mo / s.
Lecture séquentielle de 128 Ko - 5300 Mo / s.

Test 4: RAIDIX ERA


Voyons maintenant les tests de notre nouveau produit - RAIDIX ERA.
Nous avons créé RAID6. Taille de la bande: 16 ko. Une fois l'initialisation terminée, exécutez le test.

Résultat de performance (IOps) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k354887363830486865.6619349.4921403.62202384.84073187.8
8k180914.8185371249927.2320438.8520188.41413096.42510729
16k92115.896327.2130661.2169247.4275446.6763307.41278465
32k59994.261765.283512.8116562.2167028.8420216.4640418.8
64k27660.428229.838687,656603.876976214958.8299137.8
128k14475,81473020674.230358.840259109258.2160141.8
1m2892,83031.84032,86331,67514.81587119078

Résultat de performance (IOps) sous forme graphique. Lecture / écriture Mix%.



Testez 4.2 RAIDIX ERA. RAID 6. Tests de délai


Temps de réponse moyen (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k0,163340,1363970,10958
8k0,2070560,1633250,132586
16k0,3137740,2257670,182928

Temps de réponse moyen (ms) sous forme graphique. Lecture / écriture Mix%.



Temps de réponse maximum (ms) sous forme de tableau. Lecture / écriture Mix%.
Taille de blocR0% / W100%R65% / W35%R100% / W0%
4k5.3713.42443,5438
8k5.2433,74153,5414
16k7.6284.28914.0562

Temps de réponse maximum (ms) sous forme graphique. Lecture / écriture Mix%.



Les délais sont similaires à ce que MDRAID produit. Mais pour des conclusions plus précises, une estimation des retards sous une charge plus grave doit être effectuée.

Testez 4.3 RAIDIX ERA. RAID 6. Tests de bande passante


Écriture séquentielle de 1 Mo - 8160 Mo / s.
Lecture séquentielle 1 Mo - 19700 MBPS.
Écriture séquentielle de 128 Ko - 6 200 Mo / s.
Lecture séquentielle de 128 Ko - 19700 MBPS.

Conclusion


À la suite des tests, il vaut la peine de comparer les chiffres obtenus à partir des solutions logicielles avec ce que la plate-forme matérielle nous fournit.

Pour analyser les performances de la charge aléatoire, nous comparerons la vitesse de RAID 6 (RAIDZ2) lorsque vous travaillez avec un bloc en 4k.
MD RAID 6RAIDZ2RAIDIX ERA RAID 6Matériel informatique
4k R100% / W0%19025617631440731874 494 142
4k R65% / W35%108594179659214031823432
4k R0% / W100%3990715719354887958054



Pour analyser les performances de la charge série, nous allons regarder RAID 6 (RAIDZ2) avec un bloc de 128k. Entre les threads, nous avons utilisé un décalage de 10 Go pour éliminer le hit du cache et afficher les performances réelles.
MD RAID 6RAIDZ2RAIDIX ERA RAID 6Matériel informatique
128k seq lu1040053001970020 400
128k d'écriture séquentielle870110062007500



Quel est le résultat?


Les matrices RAID logicielles populaires et abordables pour travailler avec des périphériques NVMe ne peuvent pas montrer les performances inhérentes au potentiel matériel.

Ici, il existe un besoin très évident d'un logiciel de contrôle capable d'agiter la situation et de montrer que la symbiose de contrôle de programme avec les disques NVMe peut être très productive et flexible.

Comprenant cette demande, notre société a créé un produit RAIDIX ERA, dont le développement s'est concentré sur la résolution des problèmes suivants:

  • Performances de lecture et d'écriture élevées (plusieurs millions d'IOps) sur des baies avec Parité en mode mix.
  • Performances de streaming à partir de 30 Go / s, y compris pendant le basculement et la récupération.
  • Prise en charge des niveaux RAID 5, 6, 7.3.
  • Initialisation et reconstruction du fond.
  • Paramètres flexibles pour différents types de charge (côté utilisateur).

Aujourd'hui, nous pouvons dire que ces tâches sont terminées et que le produit est prêt à l'emploi.

Dans le même temps, comprenant l'intérêt de nombreuses parties intéressées pour de telles technologies, nous avons préparé pour la sortie non seulement une licence payante, mais aussi une licence gratuite , qui peut être pleinement utilisée pour résoudre les problèmes sur les disques NVMe et SSD.

En savoir plus sur RAIDIX ERA sur notre site Web .

UPD Tests ZFS réduits avec taille d'enregistrement et taille de bloc 8k


Tableau des options ZFS
NOMPROPRIÉTÉVALEURSOURCE
réservoirtaille d'enregistrement8Klocal
réservoircompressionéteintdéfaut
réservoirdédoubleréteintdéfaut
réservoirsomme de contrôleéteintlocal
réservoirvolblocksize--
tank / raidtaille d'enregistrement--
tank / raidcompressionéteintlocal
tank / raiddédoubleréteintdéfaut
tank / raidsomme de contrôleéteintlocal
tank / raidvolblocksize8kdéfaut

L'enregistrement est devenu pire, la lecture est meilleure.
Mais tout de même, tous les résultats sont nettement pires que les autres solutions
Taille de blocR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k13703.814399.820903.8256693161066955.2140849.8
8k1512616227.222393,627720.234274.867008139480.8
16k11111.211412.416980.820812.824680.248803.683710.4

Source: https://habr.com/ru/post/fr420837/


All Articles