Azure Native Qumulo Maintenant disponible dans l'UE, au Royaume-Uni et au Canada - En savoir plus

La route du tout-flash (Partie 2)

Rédigé par:

Par Daniel Pehush et Gunter Zink

La mission: le moteur que nous avons choisi

In notre dernier post de cette série, nous avons expliqué comment notre équipe s’est efforcée de créer le nœud le plus flash possible avec une bande passante maximale en utilisant des composants prêts à l’emploi. Plusieurs éléments devaient être pris en compte une fois que la technologie matérielle était enfin prête pour notre vision définie par logiciel.

Après avoir analysé les processeurs disponibles, nous avons choisi le Processeur Intel Xeon Gold 6126, qui possède des noyaux 12 / 24 à la base 2.6 GHz et 3.7 GHz max Turbo, avec un TDP de 125 watts. Cela a été choisi pour sa fréquence plus élevée, son nombre de cœurs et sa puissance.

La solution suivante consistait à équilibrer la conception en termes de bande passante, de bande passante réseau frontale, de bande passante réseau back-end et de bande passante E / S de disque local; tous optimisés pour le Architecture logicielle Qumulo.

Dans un cluster Qumulo à quatre nœuds, un système client donné se connecte via NFS ou SMB à l'un des nœuds. Avec ce schéma de connexion, le pourcentage 75 des lectures de ce client provient d'autres nœuds du cluster via le réseau principal, et le pourcentage 25 des données du disque du nœud auquel ce client est attaché.

Lorsqu'un client écrit sur un seul noeud, ces données sont alors code à effacement et distribués aux trois autres nœuds du cluster via le réseau back-end. La bande passante nécessaire pour le back-end a tendance à être égale à celle du réseau frontal (en supposant des écritures volumineuses). Lorsque de nombreux clients sont connectés à tous les nœuds du cluster, nous avons idéalement le même réseau frontal, le réseau principal et la même bande passante d'E / S de disque local.

En examinant les composants et en prédisant les goulots d'étranglement liés aux performances, le réseau constituait une cible facile.

Nous avons envisagé de mettre trois cartes réseau double port sur un seul serveur! Cette idée était un peu répandue, car nous aurions créé une boîte avec un solde réseau inégal pour le trafic frontal ou final, et nous devions développer un logiciel permettant de transférer le trafic vers la troisième carte réseau en fonction du canal de réseau qui en avait besoin. . Cependant, il est devenu évident que cela ne valait pas l'effort de développement logiciel et a rapidement été abandonné en tant qu'idée.

Nous avons décidé que le jeûne rapide, plate-forme tout flash besoin de deux cartes réseau 100GbE PCIe x16 à double port. Cela était non seulement suffisant pour une première version rapide, mais également pour des performances optimales, le logiciel étant optimisé par la suite, le matériel ne pouvait donc pas servir de limiteur de bande passante pour la plate-forme.

Performance en chiffres

Maintenant, passons en revue quelques-uns des chiffres de performances matérielles juteuses.

Pour une voie PCIe Gen3, le maximum théorique est 8GT / s ou 985 Mo / s, la carte réseau est une carte x16 largeur Gen3, nombre total de voies physiques 16, présentant un maximum théorique de 15,760 MB / s. Pour une carte réseau 100GbE à deux ports, chaque port est capable de 100Gbps, ce qui équivaut à 12,500 Mo / s. Nous avons deux ports pour une bande passante totale de 25,000 Mo / s. Il s’agit de la bande passante Ethernet. Du côté PCIe, la carte réseau est une carte Gen16 x3 avec un maximum théorique de 15,760 Mo / s. Ceux-ci ne correspondent évidemment pas, mais c'est le meilleur disponible sur le marché avant que le PCIe Gen4 soit largement répandu. La bande passante PCIe de la carte réseau est donc le véritable goulot d’étranglement.

En raison des logiciels et de la surcharge des protocoles, nous avons arrondi au maximum théorique d’une seule voie PCIe3 Gen, de 985 Mo / s à 800 MB / s pour chaque paire de réception et transmission.

En utilisant nos nombres arrondis pour tenir compte de la surcharge, notre bande passante PCIe vers la carte réseau est de 12.8 Go / s. Dans notre logiciel, nous divisons le trafic back-end et le trafic front-end, de sorte que notre limite de bande passante frontale pour la connectivité client est de 12.8 Go / s et que notre réseau back-end pour la bande passante de connectivité intra-cluster est de 12.8 GB / s.

Alors, quelle est notre bande passante IO de lecteur NVMe?

Nous avons décidé de créer deux références afin d'offrir à nos clients des choix en matière de densité de stockage: l'un avec des disques 12, utilisant la moitié des emplacements du châssis choisi; et un avec des disques 24, utilisant tous les emplacements. Chaque disque SSD NVMe dispose de quatre voies PCIe Gen3, ce qui signifie que la bande passante avec notre numéro arrondi est 3.6 Go / s. Tous les lecteurs disponibles sur le marché ne sont pas capables de saturer ce bus, mais la norme de connexion des périphériques U.2 est telle qu'elle permet l'utilisation future de disques SSD NVMe plus rapides. Bien que chaque disque puisse offrir 3.6 Go / s, la carte mère que nous avons choisie ne dispose pas des pistes PCIe disponibles pour adresser tous les disques à pleine bande passante au processeur.

C’est là que les commutateurs PCIe entrent en jeu.

Sur la carte mère, nous avons utilisé quatre ports occulink intégrés: un commutateur PCIe à quatre ports qui est une carte x4 et deux commutateurs PCIe à huit ports qui sont des cartes x8. Chaque port de l'un de ces périphériques correspond à des voies x4 de PCIe Gen3 pour un périphérique NVMe. Ces périphériques se connectent donc à toute la bande passante à nos périphériques de stockage de données! L'histoire de l'autre côté n'est pas simplement attachée. Les ports occulink sont directement connectés au processeur et ils occupent toute la bande passante du processeur au NVMe SSD. Le commutateur à quatre ports correspond aux voies x8 et les commutateurs à huit ports à des voies x8 générant un débit 6.4 Go / s.

La manière dont les choses sont câblées a eu les conséquences suivantes pour la version 12:

  • La bande passante d’un SSD NVMe est 3.6 Go / s
  • La bande passante de quatre NVMe SSD est 14.4 GB / s
  • Un commutateur x8 PCIe peut restituer à la CPU 6.4 GB / s de bande passante

La bande passante des périphériques de stockage étant supérieure à celle des commutateurs, ceux-ci limitent la bande passante.

Configuration du lecteur 12:

  • Un commutateur x8 PCIe avec des lecteurs 4 NVME
  • Un commutateur x8 PCIe avec des lecteurs 4 NVME
  • Un commutateur x8 PCIe avec des lecteurs 4 NVME
  • Bande passante max. IO: 3 x 6.4GB / s = 19.2 GB / s

Configuration du lecteur 24:

  • Quatre ports d'Occulink vers les SSD 4 NVMe
  • Un commutateur PCIe x8 avec SSD 4 NVMe
  • Un commutateur PCIe x8 avec SSD 8 NVMe
  • Un commutateur PCIe x8 avec SSD 8 NVMe
  • Bande passante max. IO: 19.2 GB / s

Avec la configuration ci-dessus, si vous faites le calcul, vous déterminerez que la bande passante matérielle serait plus élevée pour la configuration de lecteur 24 que pour la configuration de lecteur 12. Bien que cela soit vrai, notre logiciel utilise des disques de manière uniforme. Le commutateur x8 à huit ports vers la bande passante PCIe du processeur est le facteur limitant, puisqu'il s'agit de la bande passante 6.4 Go / s.

Sur la configuration du lecteur 12, la bande passante maximale disponible pour tout périphérique NVMe est 1.6 Go / s. Les nombres 1.6 GB / s proviennent du fait qu'un commutateur x8 a une valeur de bande passante renvoyée vers la CPU de 6.4 GB / s, qui est répartie entre des périphériques 4 NVMe (6.4 / 4 = 1.6). Le même principe d’utilisation identique des lecteurs est valable dans la configuration de nos lecteurs 24, mais nous avons maintenant le système 6.4 Go / s réparti entre les lecteurs 8, d’où 800 Mo / s par lecteur. Notre logiciel limite donc la bande passante matérielle et la bande passante Max IO finit par être la même pour la configuration du lecteur 12 et la configuration du lecteur 24.

Les deux configurations de la technologie 100% flash sont limitées par les voies x16 de PCIe Gen3 allant à nos cartes réseau 100GbE. Tel est l'état actuel de la technologie matérielle pour les plates-formes basées sur x86.

Restez à l'écoute pour la troisième partie de cette série!

Articles Similaires

Remonter en haut