-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Added tracing spans for rustc invocations #15464
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
Conversation
src/cargo/core/compiler/mod.rs
Outdated
package = name.as_str(), | ||
process = rustc.to_string() | ||
) | ||
.entered(); | ||
|
||
let result = exec |
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.
Alternatively, trace all execs?
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.
Sure, I think that also works.
I put it outside since Executor
seems a bit generic, but looking at the function signatures it is very much designed to run rustc.
I went ahead and moved it inside of the Executor
in addc570 since I think its a bit nicer to use the #[instrument]
macro :)
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.
Thanks!
26e3d69
to
addc570
Compare
@@ -140,10 +140,11 @@ pub trait Executor: Send + Sync + 'static { | |||
pub struct DefaultExecutor; | |||
|
|||
impl Executor for DefaultExecutor { | |||
#[instrument(name = "rustc", skip_all, fields(package = id.name().as_str(), process = cmd.to_string()))] |
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.
Just note that this is at INFO log level.
Our instruments are all like this, but I feel like we might want to downgrade to debug or trace. Not a blocker though.
What does this PR try to resolve?
While doing some investigation on the theoretical performance implications of #4282 (and #15010 by extension) I was profiling cargo with some experimental changes. (Still a work in progress)
But in the mean time, noticed that we do not have spans for rustc invocations. I think these would be useful when profiling
cargo build
. (cargo build --timing
exists but is more geared towards debugging a slow building project, not cargo itself)For reference below is an example before/after of a profile run of a dummy crate with a few random dependencies.
Before
After