mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									f4d5c029bd
								
							
						
					
					
						commit
						87d80de280
					
				
					 2 changed files with 0 additions and 158 deletions
				
			
		| 
						 | 
					@ -202,10 +202,6 @@ Here is the list of current tracers that may be configured.
 | 
				
			||||||
	to draw a graph of function calls similar to C code
 | 
						to draw a graph of function calls similar to C code
 | 
				
			||||||
	source.
 | 
						source.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  "sched_switch"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Traces the context switches and wakeups between tasks.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  "irqsoff"
 | 
					  "irqsoff"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Traces the areas that disable interrupts and saves
 | 
						Traces the areas that disable interrupts and saves
 | 
				
			||||||
| 
						 | 
					@ -273,39 +269,6 @@ format, the function name that was traced "path_put" and the
 | 
				
			||||||
parent function that called this function "path_walk". The
 | 
					parent function that called this function "path_walk". The
 | 
				
			||||||
timestamp is the time at which the function was entered.
 | 
					timestamp is the time at which the function was entered.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The sched_switch tracer also includes tracing of task wakeups
 | 
					 | 
				
			||||||
and context switches.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
     ksoftirqd/1-7     [01]  1453.070013:      7:115:R   +  2916:115:S
 | 
					 | 
				
			||||||
     ksoftirqd/1-7     [01]  1453.070013:      7:115:R   +    10:115:S
 | 
					 | 
				
			||||||
     ksoftirqd/1-7     [01]  1453.070013:      7:115:R ==>    10:115:R
 | 
					 | 
				
			||||||
        events/1-10    [01]  1453.070013:     10:115:S ==>  2916:115:R
 | 
					 | 
				
			||||||
     kondemand/1-2916  [01]  1453.070013:   2916:115:S ==>     7:115:R
 | 
					 | 
				
			||||||
     ksoftirqd/1-7     [01]  1453.070013:      7:115:S ==>     0:140:R
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Wake ups are represented by a "+" and the context switches are
 | 
					 | 
				
			||||||
shown as "==>".  The format is:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 Context switches:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
       Previous task              Next Task
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <pid>:<prio>:<state>  ==>  <pid>:<prio>:<state>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 Wake ups:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
       Current task               Task waking up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <pid>:<prio>:<state>    +  <pid>:<prio>:<state>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The prio is the internal kernel priority, which is the inverse
 | 
					 | 
				
			||||||
of the priority that is usually displayed by user-space tools.
 | 
					 | 
				
			||||||
Zero represents the highest priority (99). Prio 100 starts the
 | 
					 | 
				
			||||||
"nice" priorities with 100 being equal to nice -20 and 139 being
 | 
					 | 
				
			||||||
nice 19. The prio "140" is reserved for the idle task which is
 | 
					 | 
				
			||||||
the lowest priority thread (pid 0).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Latency trace format
 | 
					Latency trace format
 | 
				
			||||||
--------------------
 | 
					--------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -491,79 +454,6 @@ x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6]
 | 
				
			||||||
                   latencies, as described in "Latency
 | 
					                   latencies, as described in "Latency
 | 
				
			||||||
                   trace format".
 | 
					                   trace format".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sched_switch
 | 
					 | 
				
			||||||
------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This tracer simply records schedule switches. Here is an example
 | 
					 | 
				
			||||||
of how to use it.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 # echo sched_switch > current_tracer
 | 
					 | 
				
			||||||
 # echo 1 > tracing_enabled
 | 
					 | 
				
			||||||
 # sleep 1
 | 
					 | 
				
			||||||
 # echo 0 > tracing_enabled
 | 
					 | 
				
			||||||
 # cat trace
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# tracer: sched_switch
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#           TASK-PID   CPU#    TIMESTAMP  FUNCTION
 | 
					 | 
				
			||||||
#              | |      |          |         |
 | 
					 | 
				
			||||||
            bash-3997  [01]   240.132281:   3997:120:R   +  4055:120:R
 | 
					 | 
				
			||||||
            bash-3997  [01]   240.132284:   3997:120:R ==>  4055:120:R
 | 
					 | 
				
			||||||
           sleep-4055  [01]   240.132371:   4055:120:S ==>  3997:120:R
 | 
					 | 
				
			||||||
            bash-3997  [01]   240.132454:   3997:120:R   +  4055:120:S
 | 
					 | 
				
			||||||
            bash-3997  [01]   240.132457:   3997:120:R ==>  4055:120:R
 | 
					 | 
				
			||||||
           sleep-4055  [01]   240.132460:   4055:120:D ==>  3997:120:R
 | 
					 | 
				
			||||||
            bash-3997  [01]   240.132463:   3997:120:R   +  4055:120:D
 | 
					 | 
				
			||||||
            bash-3997  [01]   240.132465:   3997:120:R ==>  4055:120:R
 | 
					 | 
				
			||||||
          <idle>-0     [00]   240.132589:      0:140:R   +     4:115:S
 | 
					 | 
				
			||||||
          <idle>-0     [00]   240.132591:      0:140:R ==>     4:115:R
 | 
					 | 
				
			||||||
     ksoftirqd/0-4     [00]   240.132595:      4:115:S ==>     0:140:R
 | 
					 | 
				
			||||||
          <idle>-0     [00]   240.132598:      0:140:R   +     4:115:S
 | 
					 | 
				
			||||||
          <idle>-0     [00]   240.132599:      0:140:R ==>     4:115:R
 | 
					 | 
				
			||||||
     ksoftirqd/0-4     [00]   240.132603:      4:115:S ==>     0:140:R
 | 
					 | 
				
			||||||
           sleep-4055  [01]   240.133058:   4055:120:S ==>  3997:120:R
 | 
					 | 
				
			||||||
 [...]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
As we have discussed previously about this format, the header
 | 
					 | 
				
			||||||
shows the name of the trace and points to the options. The
 | 
					 | 
				
			||||||
"FUNCTION" is a misnomer since here it represents the wake ups
 | 
					 | 
				
			||||||
and context switches.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The sched_switch file only lists the wake ups (represented with
 | 
					 | 
				
			||||||
'+') and context switches ('==>') with the previous task or
 | 
					 | 
				
			||||||
current task first followed by the next task or task waking up.
 | 
					 | 
				
			||||||
The format for both of these is PID:KERNEL-PRIO:TASK-STATE.
 | 
					 | 
				
			||||||
Remember that the KERNEL-PRIO is the inverse of the actual
 | 
					 | 
				
			||||||
priority with zero (0) being the highest priority and the nice
 | 
					 | 
				
			||||||
values starting at 100 (nice -20). Below is a quick chart to map
 | 
					 | 
				
			||||||
the kernel priority to user land priorities.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   Kernel Space                     User Space
 | 
					 | 
				
			||||||
 ===============================================================
 | 
					 | 
				
			||||||
   0(high) to  98(low)     user RT priority 99(high) to 1(low)
 | 
					 | 
				
			||||||
                           with SCHED_RR or SCHED_FIFO
 | 
					 | 
				
			||||||
 ---------------------------------------------------------------
 | 
					 | 
				
			||||||
  99                       sched_priority is not used in scheduling
 | 
					 | 
				
			||||||
                           decisions(it must be specified as 0)
 | 
					 | 
				
			||||||
 ---------------------------------------------------------------
 | 
					 | 
				
			||||||
 100(high) to 139(low)     user nice -20(high) to 19(low)
 | 
					 | 
				
			||||||
 ---------------------------------------------------------------
 | 
					 | 
				
			||||||
 140                       idle task priority
 | 
					 | 
				
			||||||
 ---------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The task states are:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 R - running : wants to run, may not actually be running
 | 
					 | 
				
			||||||
 S - sleep   : process is waiting to be woken up (handles signals)
 | 
					 | 
				
			||||||
 D - disk sleep (uninterruptible sleep) : process must be woken up
 | 
					 | 
				
			||||||
					(ignores signals)
 | 
					 | 
				
			||||||
 T - stopped : process suspended
 | 
					 | 
				
			||||||
 t - traced  : process is being traced (with something like gdb)
 | 
					 | 
				
			||||||
 Z - zombie  : process waiting to be cleaned up
 | 
					 | 
				
			||||||
 X - unknown
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ftrace_enabled
 | 
					ftrace_enabled
 | 
				
			||||||
--------------
 | 
					--------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -247,51 +247,3 @@ void tracing_sched_switch_assign_trace(struct trace_array *tr)
 | 
				
			||||||
	ctx_trace = tr;
 | 
						ctx_trace = tr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void stop_sched_trace(struct trace_array *tr)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	tracing_stop_sched_switch_record();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int sched_switch_trace_init(struct trace_array *tr)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	ctx_trace = tr;
 | 
					 | 
				
			||||||
	tracing_reset_online_cpus(tr);
 | 
					 | 
				
			||||||
	tracing_start_sched_switch_record();
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void sched_switch_trace_reset(struct trace_array *tr)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	if (sched_ref)
 | 
					 | 
				
			||||||
		stop_sched_trace(tr);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void sched_switch_trace_start(struct trace_array *tr)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	sched_stopped = 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void sched_switch_trace_stop(struct trace_array *tr)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	sched_stopped = 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static struct tracer sched_switch_trace __read_mostly =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	.name		= "sched_switch",
 | 
					 | 
				
			||||||
	.init		= sched_switch_trace_init,
 | 
					 | 
				
			||||||
	.reset		= sched_switch_trace_reset,
 | 
					 | 
				
			||||||
	.start		= sched_switch_trace_start,
 | 
					 | 
				
			||||||
	.stop		= sched_switch_trace_stop,
 | 
					 | 
				
			||||||
	.wait_pipe	= poll_wait_pipe,
 | 
					 | 
				
			||||||
#ifdef CONFIG_FTRACE_SELFTEST
 | 
					 | 
				
			||||||
	.selftest    = trace_selftest_startup_sched_switch,
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__init static int init_sched_switch_trace(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return register_tracer(&sched_switch_trace);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
device_initcall(init_sched_switch_trace);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue