The kernel writes records to an internal buffer to capture traces of various actions. These traces can then be retrieved, printed, and viewed in a tool such as Perfetto.
Kernel trace format
The kernel trace format uses FXT.
Trace buffer size
The size of the trace buffer is fixed at boot time and is controlled by
the ktrace.bufsize
kernel command-line parameter. Its value is the
buffer size in megabytes. The default is 32MB.
Control what to trace
You can control what to trace through the kernel command-line parameter
ktrace.grpmask
. The value is specified as 0xNNN
and is a bitmask of tracing
groups to enable. See the KTRACEGRP values in
system/ulib/zircon-internal/include/lib/zircon-internal/ktrace.h
. By default,
the value is 0xfff
which traces everything.
You can also dynamically control what to trace with the ktrace
command-line
utility.
ktrace
command-line utility
You can control kernel tracing with the ktrace
command-line utility.
Use ktrace --help
to see all of the available commands:
ktrace --help
You should see an output like:
Usage: ktrace [options] <control>
Where <control> is one of:
start <group_mask> - start tracing
stop - stop tracing
rewind - rewind trace buffer
written - print bytes written to trace buffer
Note: This value doesn't reset on "rewind". Instead, the rewind
takes effect on the next "start".
save <path> - save contents of trace buffer to <path>
Options:
--help - Duh.
View a kernel trace
You can view a trace with ui.perfetto.dev
. Before you can view a trace, you
need to capture a trace.
Start the trace on the target:
ktrace start 0xfff ... do something ...
Stop the trace:
ktrace stop
Save the trace to
/tmp/save.ktrace
:ktrace save /tmp/save.ktrace
Use
fx cp
to copy the file to your development host:fx cp --to-host /tmp/save.ktrace save.fxt
View the trace file in
ui.perfetto.dev
.
Use with Fuchsia Tracing
Fuchsia's tracing system supports collecting kernel trace records through the
ktrace_provider
trace provider. For more information about Fuchsia's tracing
system, see Fuchsia tracing system.