Un ingénieur de l'entreprise Clyso a résumé l'expérience de la création d'un cluster de stockage basé sur un système distribué à tolérance de pannes Ceph, avec une bande passante supérieure à un tébi-octet par seconde. Il est noté que c'est le premier cluster basé sur Ceph capable d'atteindre un tel niveau, mais avant d'obtenir ce résultat, les ingénieurs ont dû surmonter une série d'obstacles inattendus.
Par exemple, pour améliorer les performances de 10 à 20 %, il suffisait d'activer sur les serveurs dans les paramètres d'économie d'énergie du BIOS le mode de performance maximale et de désactiver le c-state (le c-state modifie les paramètres d'économie d'énergie en fonction de la charge, ce qui affecte Ceph). Il a également été constaté que lors de l'utilisation de disques NVMe, le noyau Linux dépense beaucoup de temps à traiter les verrouillages spin lors de la mise à jour du mapping IOMMU. La désactivation de l'IOMMU dans le noyau a conduit à une augmentation significative des performances lors des tests d'écriture et de lecture de blocs de 4 Mo.
Cependant, la désactivation de l'IOMMU n'a pas résolu le problème de la baisse des performances lors de l'écriture aléatoire de blocs de 4 Ko. En enquêtant sur cette question, les ingénieurs ont découvert des corrections dans les scripts de construction Ceph des projets Gentoo et Ubuntu, qui incluaient une construction avec l'option RelWithDebInfo, car elle permettait dans GCC d'utiliser le mode d'optimisation '-O2', ce qui augmentait considérablement les performances de Ceph. La compilation avec la bibliothèque TCMalloc a également entraîné une diminution des performances. Modifier les drapeaux de compilation et cesser d'utiliser TCMalloc a conduit à une réduction par trois du temps de compactage et à un doublement des performances des opérations d'écriture aléatoires en blocs de 4 Ko. Enfin, une optimisation supplémentaire des réglages de Reef RocksDB et des groupes de placement (PG) a été réalisée.
Le cluster est constitué de 68 nœuds basés sur serveurs Dell PowerEdge R6615 avec CPU AMD EPYC 9454P 48C/96T. Chaque nœud contient 10 disques NVMe Dell de 15,36 To, deux adaptateurs Ethernet 100GbE Mellanox ConnectX-6 et 192 Go de RAM. Le logiciel est basé sur Ubuntu 20.04.6 et Ceph 17.2.7. Le cluster de 63 nœuds abrite 630 OSD (Object Storage Daemon, un processus de fond gérant le stockage des données dans le stockage local, un OSD par disque NVMe), trois processus MON (monitor, surveillant l'état du cluster) et un processus MGR (Manager, gérant le service). La capacité de stockage est de 8,2 Po.
La bande passante lors des opérations de lecture séquentielle de blocs de 4 Mo était de 1025 GiB/s pour la lecture et de 270 GiB/s pour l'écriture. Pour la lecture aléatoire de blocs de 4 Ko, la performance était de 25,5 millions d'opérations de lecture par seconde et de 4,9 millions pour l'écriture. L'activation du chiffrement a réduit la bande passante en lecture à environ 750 GiB/s. Avec les codes de correction d'erreurs EC62, la bande passante était de 547 GiB/s en lecture et de 387 GiB/s en écriture (la vitesse d'écriture étant supérieure à celle sans codes de correction), et en accès aléatoire, 3,4M IOPS en lecture et 936K IOPS en écriture.


Il est également à noter qu'en septembre, un palier similaire de bande passante en tébioctets par seconde a été atteint dans le cluster de stockage exaoctet du CERN, réalisé sur la base du stockage distribué ouvert EOS, construit sur le protocole XRootD.
Source : opennet.ru
