workqueue: Add basic tracepoints to track workqueue execution
authorArjan van de Ven <arjan@linux.intel.com>
Sat, 21 Aug 2010 20:07:26 +0000 (13:07 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 Aug 2010 20:19:37 +0000 (13:19 -0700)
commite36c886a0f9d624377977fa6cae309cfd7f362fa
treef75e7c3e50a48c671ed4dff33103f601a2204af9
parent69b26c7ad00fd5b6129400725e2ffb95134a0e1b
workqueue: Add basic tracepoints to track workqueue execution

With the introduction of the new unified work queue thread pools,
we lost one feature: It's no longer possible to know which worker
is causing the CPU to wake out of idle. The result is that PowerTOP
now reports a lot of "kworker/a:b" instead of more readable results.

This patch adds a pair of tracepoints to the new workqueue code,
similar in style to the timer/hrtimer tracepoints.

With this pair of tracepoints, the next PowerTOP can correctly
report which work item caused the wakeup (and how long it took):

Interrupt (43)            i915      time   3.51ms    wakeups 141
Work      ieee80211_iface_work      time   0.81ms    wakeups  29
Work              do_dbs_timer      time   0.55ms    wakeups  24
Process                   Xorg      time  21.36ms    wakeups   4
Timer    sched_rt_period_timer      time   0.01ms    wakeups   1

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/trace/events/workqueue.h [new file with mode: 0644]
kernel/workqueue.c