
Paradigm introduit Flood : un puissant outil de test de charge pour les nœuds blockchain
TechFlow SélectionTechFlow Sélection

Paradigm introduit Flood : un puissant outil de test de charge pour les nœuds blockchain
Dans cet article, nous présentons principalement Flood, un outil de test de charge qui offre une vue sans précédent sur les caractéristiques de performance des nœuds blockchain.
Rédaction : Storm Slivkoff, Georgios Konstantopoulos
Traduction : TechFlow

Introduction
Les tests de charge sont une étape clé pour concevoir des systèmes de données robustes et performants. Toutefois, ils ne sont pas largement utilisés dans le développement d'infrastructures cryptographiques. Nous sommes heureux de présenter Flood, un outil de benchmarking spécialement conçu pour analyser les performances des points de terminaison RPC, comblant ainsi ce manque.
Initialement, nous avons utilisé Flood comme outil pour optimiser Reth et comprendre les compromis entre latence et débit sous différentes charges. Par la suite, nous avons constaté que Flood avait une valeur pratique importante pour optimiser les performances de nombreux types d'infrastructures cryptographiques, bien au-delà de Reth.
Voyons cela de plus près.
Qu'est-ce qu'un test de charge, et pourquoi est-il important ?
Un test de charge consiste à mesurer comment les caractéristiques de performance d'un système évoluent sous différentes charges de travail. L'idée fondamentale derrière cette méthode est que, lorsque la charge augmente, des métriques telles que le débit, la latence ou le taux d'erreur se dégradent généralement. Ainsi, observer le comportement du système sous diverses charges contrôlées permet de révéler des goulets d'étranglement, des modes de défaillance et la capacité maximale de performance.
Les informations obtenues grâce aux tests de charge ont de nombreuses applications. Pendant le développement, ces tests permettent d'identifier quels goulets d'étranglement doivent être corrigés en priorité. En comparant deux systèmes, ils permettent de déterminer lequel est plus performant ou fiable. Dans un cas particulier, on peut comparer deux configurations matérielles ou logicielles différentes d’un même système. Dans tous les cas, les tests de charge favorisent un développement hautement optimisé.
Comment tester la charge d'un nœud blockchain ?
Nous concentrons notre attention sur les RPC, protocole de communication couramment utilisé pour extraire des données d’un nœud blockchain.
Actuellement, la méthode la plus répandue pour mesurer les performances RPC n’est pas le test de charge, mais le test de latence : vous envoyez une requête à un nœud RPC et mesurez le temps nécessaire pour recevoir une réponse. Des tests de latence pour divers fournisseurs RPC sont disponibles sur plusieurs sites web. Malheureusement, ce type de test offre une vision très limitée des performances du nœud, car il ne révèle presque rien sur son comportement sous charge.
Dans le contexte blockchain, la charge peut varier selon deux dimensions essentielles. La première est la taille : une charge de 10 000 requêtes par seconde exerce une pression bien plus grande sur le système qu'une charge de 100 requêtes par seconde. L'autre variable concerne la méthode RPC elle-même. Chaque type de données extraites d’un nœud blockchain utilise une méthode RPC différente — par exemple, blocs, transactions, journaux (logs), traces. Chaque méthode RPC impose un type de charge différent au système. Certaines sont limitées par les E/S de stockage, d'autres par la puissance CPU.
Qu'est-ce que Flood ?
Sur la base de ces principes, nous avons développé un outil de test de charge appelé Flood. Contrairement aux simples tests de latence, Flood fournit une vue sans précédent des caractéristiques de performance des points de terminaison RPC, grâce au test de charge et à une couverture étendue à toutes les méthodes RPC pertinentes.

Flood repose sur trois composants fondamentaux :
-
Moteur de génération d'appels : Flood génère un grand ensemble paramétrable d'appels RPC, dont l’échantillonnage aléatoire reflète des profils de charge variés typiques des blockchains. Flood s’appuie sur les jeux de données du Paradigm Data Portal pour garantir une couverture complète de l’historique blockchain.
-
Moteur de test de charge : Flood orchestre ensuite Vegeta (un outil de test de charge haute performance écrit en Go) pour exécuter ces appels sur les points de terminaison RPC ciblés.
-
Moteur de reporting : après exécution des tests, Flood résume les résultats à l’aide de graphiques, tableaux et rapports. Ces synthèses peuvent facilement être intégrées à des scripts ou des pipelines de données.
Chaque composant est hautement configurable, permettant à Flood de couvrir un large éventail de scénarios et d’environnements de test.
Que peut faire Flood ?
En utilisation normale, l’utilisateur indique les méthodes RPC à tester ainsi qu’une liste de points de terminaison RPC. Par exemple, vous pouvez vouloir comparer les performances de deux versions de Reth sur la méthode eth_getLogs. Flood exécutera alors des tests sous différentes charges contrôlées. Par exemple, il pourrait exécuter eth_getLogs à raison de 1 000, 2 000, 4 000 puis 8 000 requêtes par seconde. Flood produira ensuite des tableaux et graphiques résumant l’évolution des métriques de performance en fonction de la charge. Le résultat ressemble à ceci :

La manière spécifique dont les métriques de performance se dégradent sous charge fournit des indications riches sur les goulets d’étranglement du système et sa capacité finale.
En outre, Flood propose des fonctionnalités avancées destinées aux utilisateurs expérimentés :
-
Flood supporte différents plans de test de charge, notamment : « test de stress » (augmentation progressive de la charge), « test de pointe » (pic soudain de charge suivi d’une faible charge) et « test d’immersion » (charge prolongée dans le temps).
-
Flood peut orchestrer les tests directement en mode natif sur chaque nœud RPC, éliminant ainsi le bruit introduit par les goulots d’étranglement réseau.
-
Flood inclut un mode « équivalence » qui vérifie si chaque point de terminaison RPC renvoie bien la même réponse.
Pourquoi avoir créé Flood ?
Chez Paradigm, nous développons une nouvelle implémentation de nœud appelée Reth, dont la performance est l’un des objectifs principaux. Nous avons conçu Flood afin d’analyser en détail les caractéristiques de performance de Reth. Nous avons déjà utilisé Flood pour identifier de nombreux goulets d’étranglement dans Reth, sous diverses charges de travail et configurations système. Une fois corrigés, ces problèmes ont permis d’améliorer significativement les performances. Grâce à Flood, nous avons établi une boucle de rétroaction serrée, offrant aux développeurs de Reth une visibilité exceptionnelle sur la manière dont chaque modification du code impacte directement les performances globales du système.
Au-delà de Reth, nous pensons que Flood pourra aider à répondre à de nombreuses questions encore ouvertes concernant les nœuds RPC :
-
Lors de l’exécution d’un nœud, quelles spécifications matérielles sont les plus importantes ? Quelle est l’importance relative des E/S de stockage par rapport à la vitesse de la RAM, sa capacité et à la vitesse du processeur ? RAID est-il justifié ?
-
Quelles sont les limites de débit effectives pour chaque méthode RPC chez chaque fournisseur RPC tiers ?
-
Quel client de nœud offre les meilleures performances pour différents types de charges de travail ?
Conclusion
Dans cet article, nous avons présenté Flood, un outil de test de charge qui offre une vue inédite sur les caractéristiques de performance des nœuds blockchain. Bien qu’à l’origine conçu pour optimiser le développement de Reth, nous pensons que Flood deviendra un outil essentiel pour le développement d’autres infrastructures cryptographiques hautes performances. Nous sommes impatients de découvrir comment d'autres utilisateurs exploiteront Flood pour construire leurs propres systèmes performants et fiables.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














