Skip to content

Commit 87d80de

Browse files
Steven Rostedtrostedt
authored andcommitted
tracing: Remove obsolete sched_switch tracer
The trace events sched_switch and sched_wakeup do the same thing as the stand alone sched_switch tracer does. It is no longer needed. Signed-off-by: Steven Rostedt <[email protected]>
1 parent f4d5c02 commit 87d80de

File tree

2 files changed

+0
-158
lines changed

2 files changed

+0
-158
lines changed

Documentation/trace/ftrace.txt

Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,6 @@ Here is the list of current tracers that may be configured.
202202
to draw a graph of function calls similar to C code
203203
source.
204204

205-
"sched_switch"
206-
207-
Traces the context switches and wakeups between tasks.
208-
209205
"irqsoff"
210206

211207
Traces the areas that disable interrupts and saves
@@ -273,39 +269,6 @@ format, the function name that was traced "path_put" and the
273269
parent function that called this function "path_walk". The
274270
timestamp is the time at which the function was entered.
275271

276-
The sched_switch tracer also includes tracing of task wakeups
277-
and context switches.
278-
279-
ksoftirqd/1-7 [01] 1453.070013: 7:115:R + 2916:115:S
280-
ksoftirqd/1-7 [01] 1453.070013: 7:115:R + 10:115:S
281-
ksoftirqd/1-7 [01] 1453.070013: 7:115:R ==> 10:115:R
282-
events/1-10 [01] 1453.070013: 10:115:S ==> 2916:115:R
283-
kondemand/1-2916 [01] 1453.070013: 2916:115:S ==> 7:115:R
284-
ksoftirqd/1-7 [01] 1453.070013: 7:115:S ==> 0:140:R
285-
286-
Wake ups are represented by a "+" and the context switches are
287-
shown as "==>". The format is:
288-
289-
Context switches:
290-
291-
Previous task Next Task
292-
293-
<pid>:<prio>:<state> ==> <pid>:<prio>:<state>
294-
295-
Wake ups:
296-
297-
Current task Task waking up
298-
299-
<pid>:<prio>:<state> + <pid>:<prio>:<state>
300-
301-
The prio is the internal kernel priority, which is the inverse
302-
of the priority that is usually displayed by user-space tools.
303-
Zero represents the highest priority (99). Prio 100 starts the
304-
"nice" priorities with 100 being equal to nice -20 and 139 being
305-
nice 19. The prio "140" is reserved for the idle task which is
306-
the lowest priority thread (pid 0).
307-
308-
309272
Latency trace format
310273
--------------------
311274

@@ -491,79 +454,6 @@ x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6]
491454
latencies, as described in "Latency
492455
trace format".
493456

494-
sched_switch
495-
------------
496-
497-
This tracer simply records schedule switches. Here is an example
498-
of how to use it.
499-
500-
# echo sched_switch > current_tracer
501-
# echo 1 > tracing_enabled
502-
# sleep 1
503-
# echo 0 > tracing_enabled
504-
# cat trace
505-
506-
# tracer: sched_switch
507-
#
508-
# TASK-PID CPU# TIMESTAMP FUNCTION
509-
# | | | | |
510-
bash-3997 [01] 240.132281: 3997:120:R + 4055:120:R
511-
bash-3997 [01] 240.132284: 3997:120:R ==> 4055:120:R
512-
sleep-4055 [01] 240.132371: 4055:120:S ==> 3997:120:R
513-
bash-3997 [01] 240.132454: 3997:120:R + 4055:120:S
514-
bash-3997 [01] 240.132457: 3997:120:R ==> 4055:120:R
515-
sleep-4055 [01] 240.132460: 4055:120:D ==> 3997:120:R
516-
bash-3997 [01] 240.132463: 3997:120:R + 4055:120:D
517-
bash-3997 [01] 240.132465: 3997:120:R ==> 4055:120:R
518-
<idle>-0 [00] 240.132589: 0:140:R + 4:115:S
519-
<idle>-0 [00] 240.132591: 0:140:R ==> 4:115:R
520-
ksoftirqd/0-4 [00] 240.132595: 4:115:S ==> 0:140:R
521-
<idle>-0 [00] 240.132598: 0:140:R + 4:115:S
522-
<idle>-0 [00] 240.132599: 0:140:R ==> 4:115:R
523-
ksoftirqd/0-4 [00] 240.132603: 4:115:S ==> 0:140:R
524-
sleep-4055 [01] 240.133058: 4055:120:S ==> 3997:120:R
525-
[...]
526-
527-
528-
As we have discussed previously about this format, the header
529-
shows the name of the trace and points to the options. The
530-
"FUNCTION" is a misnomer since here it represents the wake ups
531-
and context switches.
532-
533-
The sched_switch file only lists the wake ups (represented with
534-
'+') and context switches ('==>') with the previous task or
535-
current task first followed by the next task or task waking up.
536-
The format for both of these is PID:KERNEL-PRIO:TASK-STATE.
537-
Remember that the KERNEL-PRIO is the inverse of the actual
538-
priority with zero (0) being the highest priority and the nice
539-
values starting at 100 (nice -20). Below is a quick chart to map
540-
the kernel priority to user land priorities.
541-
542-
Kernel Space User Space
543-
===============================================================
544-
0(high) to 98(low) user RT priority 99(high) to 1(low)
545-
with SCHED_RR or SCHED_FIFO
546-
---------------------------------------------------------------
547-
99 sched_priority is not used in scheduling
548-
decisions(it must be specified as 0)
549-
---------------------------------------------------------------
550-
100(high) to 139(low) user nice -20(high) to 19(low)
551-
---------------------------------------------------------------
552-
140 idle task priority
553-
---------------------------------------------------------------
554-
555-
The task states are:
556-
557-
R - running : wants to run, may not actually be running
558-
S - sleep : process is waiting to be woken up (handles signals)
559-
D - disk sleep (uninterruptible sleep) : process must be woken up
560-
(ignores signals)
561-
T - stopped : process suspended
562-
t - traced : process is being traced (with something like gdb)
563-
Z - zombie : process waiting to be cleaned up
564-
X - unknown
565-
566-
567457
ftrace_enabled
568458
--------------
569459

kernel/trace/trace_sched_switch.c

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -247,51 +247,3 @@ void tracing_sched_switch_assign_trace(struct trace_array *tr)
247247
ctx_trace = tr;
248248
}
249249

250-
static void stop_sched_trace(struct trace_array *tr)
251-
{
252-
tracing_stop_sched_switch_record();
253-
}
254-
255-
static int sched_switch_trace_init(struct trace_array *tr)
256-
{
257-
ctx_trace = tr;
258-
tracing_reset_online_cpus(tr);
259-
tracing_start_sched_switch_record();
260-
return 0;
261-
}
262-
263-
static void sched_switch_trace_reset(struct trace_array *tr)
264-
{
265-
if (sched_ref)
266-
stop_sched_trace(tr);
267-
}
268-
269-
static void sched_switch_trace_start(struct trace_array *tr)
270-
{
271-
sched_stopped = 0;
272-
}
273-
274-
static void sched_switch_trace_stop(struct trace_array *tr)
275-
{
276-
sched_stopped = 1;
277-
}
278-
279-
static struct tracer sched_switch_trace __read_mostly =
280-
{
281-
.name = "sched_switch",
282-
.init = sched_switch_trace_init,
283-
.reset = sched_switch_trace_reset,
284-
.start = sched_switch_trace_start,
285-
.stop = sched_switch_trace_stop,
286-
.wait_pipe = poll_wait_pipe,
287-
#ifdef CONFIG_FTRACE_SELFTEST
288-
.selftest = trace_selftest_startup_sched_switch,
289-
#endif
290-
};
291-
292-
__init static int init_sched_switch_trace(void)
293-
{
294-
return register_tracer(&sched_switch_trace);
295-
}
296-
device_initcall(init_sched_switch_trace);
297-

0 commit comments

Comments
 (0)