The tooling that Go provides is useful, but there still corner cases missing, for example, I want to know which procedure is using the most significant share of the total time to process a block. The profiler gives us CPU time, which will not be useful if we are I/O bound (which usually is the case).
There's the tracer, but the tracer stores a lot of information, using too much storage to measure full IBD for example. Also, the tracer does not show procedure specific timing in a structured way that is easy to produce reports.
A nice tool, would be a structure that enables us to for example measure the average time to process a block and all the average times of the inner procedures relative to the time to process the block, this way, we can for example affirm with real data that the fetch of the UTXO from the disk on cache misses takes on average N nanoseconds, and uses an average of X% of the total time to process the block.
I've already created the tool, but would be nice to improve it and add it to the master branch.
The tooling that Go provides is useful, but there still corner cases missing, for example, I want to know which procedure is using the most significant share of the total time to process a block. The profiler gives us CPU time, which will not be useful if we are I/O bound (which usually is the case).
There's the tracer, but the tracer stores a lot of information, using too much storage to measure full IBD for example. Also, the tracer does not show procedure specific timing in a structured way that is easy to produce reports.
A nice tool, would be a structure that enables us to for example measure the average time to process a block and all the average times of the inner procedures relative to the time to process the block, this way, we can for example affirm with real data that the fetch of the UTXO from the disk on cache misses takes on average N nanoseconds, and uses an average of X% of the total time to process the block.
I've already created the tool, but would be nice to improve it and add it to the master branch.