Use the RT Latency Trace? - LET ME KNOW!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux