The latest version of the Substreams GUI allows you to see insights on your Substreams execution and spot potential bottlenecks in your modules!
One of the most powerful features of Substreams is that you can use the output of a Substreams module as an input for another Substreams module. This creates a dependency tree. For example, the following Substreams diagram includes two store modules (store_tokens and store_pool_count) that receive the same input (map_pools_created).
Substreams efficiently deals with dependencies by creating execution stages. All the modules at the same tree level are considered part of the same execution stage. In the previous example, map_pool_created would be part of stage0 and both store_tokens and store_pool_count would be part of stage1. Then, for every stage, the Substreams scheduler assigns a certain amount of jobs, which are responsible for executing the different modules.
With the new version of the CLI, the Substreams 1.1.12 release, you can easily see the execution insights of your modules in the Progress tab of the Substreams GUI:
Check out the different stages of your Substreams
All the stages involved in the execution are displayed, along with the number of running jobs and the modules assigned to every stage.
Detailed view of the slowest modules
When certain modules take too much time to execute, details about their execution will be shown at the bottom of the Progress screen.
Easily identify insights on long-running jobs
The longest-running jobs will be shown at the bottom of the Progress screen to help identify bottlenecks.
Verify squashing bottlenecks
When several modules are executed in parallel, it is necessary to merge (squash) their results at some point, and this can also become a bottleneck. You can see specific merging issues with a special alert at the bottom of the screen.
These new features are also available when using the CLIs of the different Substreams sinks. Just make sure to grab the latest version of the sinks!