-
Notifications
You must be signed in to change notification settings - Fork 153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch self profile to use HW counters instead of walltime #1647
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is broadly reasonable - I'm not too worried about the N commits that happen in the transit time, but maybe we can temporarily add a note: message to the HTML noting that? I don't think we have easy ways of tying that back to the deployed version of rustc-perf (though I seem to recall the information being persisted into the DB), so it would just be unconditional.
Adding together across threads also seems like best we can do and is already done for the general view.
2fcbe78
to
5367565
Compare
5367565
to
0b72313
Compare
07fa96c
to
47e20b8
Compare
I added the note to the detailed query page and added more documentation about this to the code. I also changed the formatting of values in the self profile table. |
I tried locally that combining @Mark-Simulacrum I don't have any more ideas on how to test this further locally. I guess that we'll just have to merge it and see what happens :) Feel free to do that. |
https://perf.wiki.kernel.org/index.php/Tutorial
|
Yeah it definitely seems like it's supported, I just wanted to be sure that when I measure the same event (instructions) twice, it won't take two counter slots (to avoid possible multiplexing).
It's not clear to me whether this (counter sharing/multiplexing) can happen when two processes measure the exact same event. |
This PR changes the gathered self profile to use instructions as a metric, instead of wall time. There are some problems with this:
This PR simply switches the interpretation of the data to instructions. However, old artifacts will have values stored in the DB as walltime. We could record the metric (instructions/walltime) in the DB, so that we show e.g. the correct units on the detailed query page table, but this does not change the fact that there will be some pairs of artifacts where one side will have walltime, and the other instructions, and these will be basically uncomparable.
Instructions will be added together for all threads, which might be a bit misleading where parallelism is used.
Fixes: #1345