self-profile-events
The -Zself-profile-events
compiler flag controls what events are recorded by the self-profiler when it is enabled via the -Zself-profile
flag.
This flag takes a comma delimited list of event types to record.
For example:
$ rustc -Zself-profile -Zself-profile-events=default,args
Event types
-
query-provider
- Traces each query used internally by the compiler.
-
generic-activity
- Traces other parts of the compiler not covered by the query system.
-
query-cache-hit
- Adds tracing information that records when the in-memory query cache is "hit" and does not need to re-execute a query which has been cached.
- Disabled by default because this significantly increases the trace file size.
-
query-blocked
- Tracks time that a query tries to run but is blocked waiting on another thread executing the same query to finish executing.
- Query blocking only occurs when the compiler is built with parallel mode support.
-
incr-cache-load
- Tracks time that is spent loading and deserializing query results from the incremental compilation on-disk cache.
-
query-keys
- Adds a serialized representation of each query's query key to the tracing data.
- Disabled by default because this significantly increases the trace file size.
-
function-args
- Adds additional tracing data to some
generic-activity
events. - Disabled by default for parity with
query-keys
.
- Adds additional tracing data to some
-
llvm
- Adds tracing information about LLVM passes and codegeneration.
- Disabled by default because this only works when
-Znew-llvm-pass-manager
is enabled.
Event synonyms
-
none
- Disables all events. Equivalent to the self-profiler being disabled.
-
default
- The default set of events which stikes a balance between providing detailed tracing data and adding additional overhead to the compilation.
-
args
- Equivalent to
query-keys
andfunction-args
.
- Equivalent to
-
all
- Enables all events.
Examples
Enable the profiler and capture the default set of events (both invocations are equivalent):
$ rustc -Zself-profile
$ rustc -Zself-profile -Zself-profile-events=default
Enable the profiler and capture the default events and their arguments:
$ rustc -Zself-profile -Zself-profile-events=default,args