Skip to content

Better performance measurement tooling #3

@allocz

Description

@allocz

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions