header-langage
简体中文
繁體中文
English
Tiếng Việt
Scan to Download the APP
Partnered With:

Paradigm introduces Flood tool for load testing blockchain nodes.

Read this article in 10 Minutes
This article mainly introduces Flood, a load testing tool that provides unprecedented views of the performance characteristics of blockchain nodes.
Original Title: "Paradigm Introduces Flood: A Powerful Tool for Blockchain Node Load Testing"

Original Authors: Storm Slivkoff, Georgios Konstantopoulos
Original Source: TechFlow Deep Tide

Introduction


Load testing is a key step in building highly resilient and performant data systems in development. However, load testing has not been widely used in the development of cryptocurrency infrastructure. We are pleased to introduce Flood, a benchmarking tool specifically designed for RPC endpoint performance analysis, to fill this gap.


Initially, we used Flood as a tool to optimize Reth and understand the trade-offs between latency and throughput under different loads. Later, we found that Flood has significant practical value in optimizing the performance of many types of cryptocurrency infrastructure, in addition to Reth.


Let's take a look together.


What is load testing and why is it important?


Load testing refers to measuring the changes in performance characteristics of a system under different workloads. The key insight behind this approach is that as a system is subjected to increasing loads, performance metrics such as throughput, latency, and error rates typically decrease. Therefore, observing the performance of a system under different controlled loads can reveal information about system bottlenecks, failure modes, and ultimate performance capacity.


The information obtained through load testing can be used in many ways. During system development, load testing can highlight which system bottlenecks need to be improved first. When comparing two systems, load testing can reveal which system is more performance or reliability. As a special case, load testing can compare two different hardware or software configurations of a single system. In each case, load testing can achieve highly optimized system development.


How to conduct load testing on blockchain nodes?


Our focus is on RPC, which is a communication protocol commonly used to extract data from blockchain nodes.


Currently, the most common method for measuring RPC performance is not load testing, but latency testing: you send a request to an RPC node and measure the time it takes to receive a response. Latency tests for various RPC providers can be found on various websites. Unfortunately, this type of testing provides a limited view of node performance, as it reveals almost nothing about the behavior of the system under load.


In blockchain, workloads can change in two important ways. The classic variable is size. A workload of 10,000 requests per second puts more pressure on the system than a workload of 100 requests per second. Another workload variable is RPC methods. There are different RPC methods for each type of data extracted from a blockchain node, such as blocks, transactions, logs, and traces. Each RPC method imposes a different type of workload on the system. Some RPC methods are limited by storage IO, while others are limited by CPU.


What is Flood?


We have developed a load testing tool called Flood based on these principles. Unlike latency testing, Flood provides an unprecedented view of the performance characteristics of RPC endpoints through load testing and extends the test coverage to all relevant RPC methods.



Flood consists of three basic components:


Call generation engine: Flood generates a large number of parameterized RPC call sets, randomly sampling distributions similar to different types of blockchain workloads. Flood uses the Paradigm Data Portal dataset to ensure complete coverage of blockchain history.


Load testing engine: Then, Flood orchestrates Vegeta (a high-performance load testing tool written in Go) to use these calls for load testing RPC endpoints.


Report Engine: Flood summarizes the results using various charts, tables, and reports after conducting tests. These summaries are easy to integrate into scripts and data.


Each component can be highly configured, allowing Flood to cover a wide range of testing scenarios and environments.


Flood 能做什么?


translates to

What can Flood do?


in English.

During the regular operation of Flood, users specify the RPC methods to be tested as well as the list of RPC endpoints. For example, you may want to test the performance of eth_getLogs for two versions of Reth. Flood will run different controlled loads to test these RPC endpoints. For example, it may run eth_getLogs at speeds of 1,000, 2,000, 4,000, and 8,000 requests per second. Flood then displays tables and charts summarizing how performance metrics change with load. The output looks like this:




Providing rich insights into specific ways in which performance metrics degrade under load, revealing system bottlenecks and ultimate performance capacity.


In addition, Flood also provides advanced features to cater to various types of advanced users:


Flood can use different load testing plans, including: "stress testing" (gradually increasing load over time), "peak testing" (a large sudden load, followed by a small load), and "soak testing" (running load for a long time).


Flood can orchestrate load testing to run natively on each RPC node, eliminating noise caused by network bottlenecks.


Flood has an "equality" testing mode that checks whether each RPC endpoint returns the same response.


Why build Flood?



除了 Reth 之外,我们认为 Flood 将能够帮助解决许多与 RPC 节点有关的未解答的问题:

Translation:

Except for Reth, we believe that Flood will be able to help solve many unresolved issues related to RPC nodes:


When running nodes, what hardware specifications are most important? How important is storage IO speed relative to RAM speed, RAM capacity, and CPU speed? Is RAID worth it?


每个第三方RPC提供商的每个RPC方法的有效速率限制是多少?


Which node client provides the best performance for different types of workloads?


Conclusion


In this article, we mainly introduce Flood, a load testing tool that provides unprecedented views of the performance characteristics of blockchain nodes. Although Flood was initially built to optimize Reth development, we believe it will become an important tool for developing other types of high-performance cryptocurrency infrastructure. We look forward to seeing how others use Flood to build their own high-performance and reliable systems.


Original article link



Welcome to join the official BlockBeats community:

Telegram Subscription Group: https://t.me/theblockbeats

Telegram Discussion Group: https://t.me/BlockBeats_App

Official Twitter Account: https://twitter.com/BlockBeatsAsia

Choose Library
Add Library
Cancel
Finish
Add Library
Visible to myself only
Public
Save
Correction/Report
Submit