diff options
author | Steven Rostedt <srostedt@redhat.com> | 2011-02-08 13:19:49 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2011-02-08 17:14:56 -0500 |
commit | 87d80de2800d087ea833cb79bc13f85ff34ed49f (patch) | |
tree | ddd0cf19cd3828cfa4c2238e11bc5a0715555da4 | |
parent | f4d5c029bd6731baac0937324cef0f746e7d5ea7 (diff) |
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 <rostedt@goodmis.org>
-rw-r--r-- | Documentation/trace/ftrace.txt | 110 | ||||
-rw-r--r-- | kernel/trace/trace_sched_switch.c | 48 |
2 files changed, 0 insertions, 158 deletions
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt index 557c1edeccaf..65eddb7cfa02 100644 --- a/Documentation/trace/ftrace.txt +++ b/Documentation/trace/ftrace.txt | |||
@@ -202,10 +202,6 @@ Here is the list of current tracers that may be configured. | |||
202 | to draw a graph of function calls similar to C code | 202 | to draw a graph of function calls similar to C code |
203 | source. | 203 | source. |
204 | 204 | ||
205 | "sched_switch" | ||
206 | |||
207 | Traces the context switches and wakeups between tasks. | ||
208 | |||
209 | "irqsoff" | 205 | "irqsoff" |
210 | 206 | ||
211 | Traces the areas that disable interrupts and saves | 207 | Traces the areas that disable interrupts and saves |
@@ -273,39 +269,6 @@ format, the function name that was traced "path_put" and the | |||
273 | parent function that called this function "path_walk". The | 269 | parent function that called this function "path_walk". The |
274 | timestamp is the time at which the function was entered. | 270 | timestamp is the time at which the function was entered. |
275 | 271 | ||
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 | |||
309 | Latency trace format | 272 | Latency trace format |
310 | -------------------- | 273 | -------------------- |
311 | 274 | ||
@@ -491,79 +454,6 @@ x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6] | |||
491 | latencies, as described in "Latency | 454 | latencies, as described in "Latency |
492 | trace format". | 455 | trace format". |
493 | 456 | ||
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 | |||
567 | ftrace_enabled | 457 | ftrace_enabled |
568 | -------------- | 458 | -------------- |
569 | 459 | ||
diff --git a/kernel/trace/trace_sched_switch.c b/kernel/trace/trace_sched_switch.c index 8f758d070c43..7e62c0a18456 100644 --- a/kernel/trace/trace_sched_switch.c +++ b/kernel/trace/trace_sched_switch.c | |||
@@ -247,51 +247,3 @@ void tracing_sched_switch_assign_trace(struct trace_array *tr) | |||
247 | ctx_trace = tr; | 247 | ctx_trace = tr; |
248 | } | 248 | } |
249 | 249 | ||
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 | |||