Prototype for tracing through instrumentation #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why
Sometimes it's difficult to understand why a certain benchmark takes X instructions, when the code being benchmarked is more complicated.
What
canbench-rs-macros
to produce another query call where tracing is enabled. This is needed to avoid affecting the non-tracing behavior, while allowing tracing functionality to return different results.canbench-bin
:canbench-rs-macros
), call an exported function__prepare_tracing
trace_func
which calls ic0.performance_counter and persist the counter along with thefunc_id
into the buffertrace_func
before and aftercanbench-rs
:canbench-rs-macros
Considerations
ic0.performance_counter
instead, so there is no need to keep the instruction accounting up-to-datebench_fn
is called, since those traces won't be emitted.Caveats