1
0
Fork 0
remarkable-linux/kernel/trace
Peter Zijlstra fbd705a0c6 sched: Introduce the 'trace_sched_waking' tracepoint
Mathieu reported that since 317f394160 ("sched: Move the second half
of ttwu() to the remote cpu") trace_sched_wakeup() can happen out of
context of the waker.

This is a problem when you want to analyse wakeup paths because it is
now very hard to correlate the wakeup event to whoever issued the
wakeup.

OTOH trace_sched_wakeup() is issued at the point where we set
p->state = TASK_RUNNING, which is right were we hand the task off to
the scheduler, so this is an important point when looking at
scheduling behaviour, up to here its been the wakeup path everything
hereafter is due to scheduler policy.

To bridge this gap, introduce a second tracepoint: trace_sched_waking.
It is guaranteed to be called in the waker context.

Reported-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Francis Giraldeau <francis.giraldeau@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20150609091336.GQ3644@twins.programming.kicks-ass.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-08-03 12:21:22 +02:00
..
Kconfig Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-14 14:37:47 -07:00
Makefile bpf: Fix the build on BPF_SYSCALL=y && !CONFIG_TRACING kernels, make it more configurable 2015-04-02 16:28:06 +02:00
blktrace.c This patch series contains several clean ups and even a new trace clock 2015-06-26 14:02:43 -07:00
bpf_trace.c bpf: let kprobe programs use bpf_get_smp_processor_id() helper 2015-06-15 15:53:50 -07:00
ftrace.c Some clean ups and small fixes, but the biggest change is the addition 2015-04-14 10:49:03 -07:00
power-traces.c PM / sleep: export suspend_resume trace event 2015-01-30 02:10:41 +01:00
ring_buffer.c ring-buffer: Add enum names for the context levels 2015-05-29 10:39:08 -04:00
ring_buffer_benchmark.c This patch series contains several clean ups and even a new trace clock 2015-06-26 14:02:43 -07:00
rpm-traces.c
trace.c tracing: Rename FTRACE_EVENT_FL_* flags to EVENT_FILE_FL_* 2015-05-13 15:24:57 -04:00
trace.h This patch series contains several clean ups and even a new trace clock 2015-06-26 14:02:43 -07:00
trace_benchmark.c tracing: Only calculate stats of tracepoint benchmarks for 2^32 times 2014-06-06 00:41:38 -04:00
trace_benchmark.h tracing: Add tracepoint benchmark tracepoint 2014-05-29 22:49:54 -04:00
trace_branch.c tracing: Rename ftrace_event_{call,class} to trace_event_{call,class} 2015-05-13 14:06:10 -04:00
trace_clock.c tracing: Export tracing clock functions 2015-05-12 15:56:57 -04:00
trace_entries.h tracing: %pF is only for function pointers 2015-03-25 08:57:22 -04:00
trace_event_perf.c tracing: Rename ftrace_event_{call,class} to trace_event_{call,class} 2015-05-13 14:06:10 -04:00
trace_events.c tracing: Rename FTRACE_EVENT_FL_* flags to EVENT_FILE_FL_* 2015-05-13 15:24:57 -04:00
trace_events_filter.c This patch series contains several clean ups and even a new trace clock 2015-06-26 14:02:43 -07:00
trace_events_filter_test.h
trace_events_trigger.c tracing: Rename ftrace_raw_##call event structures to trace_event_raw_##call 2015-05-13 21:48:40 -04:00
trace_export.c tracing: Rename ftrace_event_{call,class} to trace_event_{call,class} 2015-05-13 14:06:10 -04:00
trace_functions.c tracing/trivial: Fix typos and make an int into a bool 2014-11-20 10:05:36 -05:00
trace_functions_graph.c tracing: Rename ftrace_event_{call,class} to trace_event_{call,class} 2015-05-13 14:06:10 -04:00
trace_irqsoff.c tracing: Remove unneeded includes of debugfs.h and fs.h 2015-01-22 11:19:48 -05:00
trace_kdb.c KGDB/KDB fixes and cleanups 2015-01-09 20:51:10 -08:00
trace_kprobe.c tracing: Rename ftrace_trigger_soft_disabled() to trace_trigger_soft_disabled() 2015-05-13 15:25:39 -04:00
trace_mmiotrace.c tracing: Rename ftrace_event_{call,class} to trace_event_{call,class} 2015-05-13 14:06:10 -04:00
trace_nop.c tracing: Remove unneeded includes of debugfs.h and fs.h 2015-01-22 11:19:48 -05:00
trace_output.c tracing: Rename ftrace_event_name() to trace_event_name() 2015-05-13 14:20:14 -04:00
trace_output.h tracing: Rename (un)register_ftrace_event() to (un)register_trace_event() 2015-05-13 14:05:14 -04:00
trace_printk.c tracing: Use IS_ERR() check for return value of tracing_init_dentry() 2015-01-22 11:19:49 -05:00
trace_probe.c trace: Don't use __weak in header files 2015-03-25 08:57:23 -04:00
trace_probe.h tracing: Rename ftrace_event_{call,class} to trace_event_{call,class} 2015-05-13 14:06:10 -04:00
trace_sched_switch.c sched: Introduce the 'trace_sched_waking' tracepoint 2015-08-03 12:21:22 +02:00
trace_sched_wakeup.c sched: Introduce the 'trace_sched_waking' tracepoint 2015-08-03 12:21:22 +02:00
trace_selftest.c Seems that Peter Zijlstra added a new check that is making old 2014-10-12 07:28:55 -04:00
trace_selftest_dynamic.c
trace_seq.c tracing: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:37 -08:00
trace_stack.c tracing: remove use of seq_printf return value 2015-04-15 16:35:25 -07:00
trace_stat.c tracing: Convert the tracing facility over to use tracefs 2015-02-03 12:48:41 -05:00
trace_stat.h
trace_syscalls.c tracing: Rename ftrace_trigger_soft_disabled() to trace_trigger_soft_disabled() 2015-05-13 15:25:39 -04:00
trace_uprobe.c tracing: Rename ftrace_trigger_soft_disabled() to trace_trigger_soft_disabled() 2015-05-13 15:25:39 -04:00