Hi all,
I'm about to gut the RT latency tracer with the version I'm pushing
upstream. This will be some of the changes:
Move from /proc to /debugfs
instead of all the files in proc (for which I don't even know what half of
them do) will be condensed into a few files in /debugfs/tracing
available_tracers
This file holds the available traces that you can use. Note, unlike
-rt, you can choose between tracing preemptoff, irqsoff or preempt
and irqs off latency at runtime. Here's the available tracers:
events - traces kernel events (like EVENT_TRACE)
wakeup - trace wakeup timings
preemptirqsoff - trace preempt and irqs off latencies
preemptoff - trace only preempt off latencies
irqsoff - trace irqs off latencies
function - trace functions (mcount)
sched_switch - a context switch tracer (watch processes get
scheduled in and out)
Only one trace may be enabled at a time. Most of these traces also have
a function equivalent, which will be activate if function trace is
compiled in and sysctl kernel.mcount_enabled=1.
current_tracer
This holds the current active trace (from above). To change or activate
a trace, simple echo in one of the above traces into this file.
e.g. echo irqsoff > /debugfs/tracing/current_tracer
iter_ctrl
This file controls the output of traces. So far there's only two
different commands:
verbose (noverbose) - change to latency_tracer verbose output.
symonly (nosymonly) - only print kallsyms addr, and leave out the
hex IP addr.
latency_trace
This is where one can read the latency trace from.
(the old /proc/latency_trace)
trace
This is another format for output. A little easier to read but not as
much information.
trace_ctrl
echo 1 > starts the tracer, echo 0 > stops (for all traces)
tracing_max_latency
This is just like the old preempt_max_latency for those that use it
(preempt and irqs off as well as wakeup)
tracing_thresh
This is just like the old preempt_thresh.
Now the users has full access to start and stop the trace from these
files.
Note: I've been pushing a lot of this mainline. Some of this will not be
pushed mainline. Specifically, the event trace. Since the event trace does
a lot that LTTng does. I will probably wait till the markers of LTTng go
in. Or perhaps I'll simply push event trace, but that's still TBA.
I'll also hack up the prctl(0,0) - trace off - and prctl(0,1) trace on for
-rt only. This will not be something that will be pushed upstream.
If there's people on this list that use tools for latency tracing, let me
know and I can help you in the conversion. Also note some other
differences.
- There will be some slightly different output formats. One is that the
trace_special which seems to always pass in an eip will now convert that
eip into a comm (kallsyms).
- The hrtimer_trace will use a hex value for the timer pointer instead of
a decimal.
- context switching is done a bit different:
e.g.
bash-3138 1d..3 342us+: 3138:120:S --> 3131:120
This is a sched switch from bash 3138 of prio 120 in sleep state to task
sshd 3131 (I know this because of the next line down that I didn't show
;-) of prio 120.
But here's just a heads up on the new tracer. If there's issues, I'll try
to work them out.
Expect this new tracing format to be in either 2.6.24-rc8-rt2 or
2.6.24-rt2. (if 2.6.24 comes out, I may just port to it without adding the
tracer).
-- Steve
-
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html