diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2010-07-01 23:07:32 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-07-20 21:52:33 -0400 |
commit | e870e9a1240bcef1157ffaaf71dac63362e71904 (patch) | |
tree | b8f57a68ff45b35dab8cdfa474e17622d275bdc6 /kernel/trace/trace.h | |
parent | cc5edb0eb9ce892b530e34a5d110382483587942 (diff) |
tracing: Allow to disable cmdline recording
We found that even enabling a single trace event that will rarely be
triggered can add big overhead to context switch.
(lmbench context switch test)
-------------------------------------------------
2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K
ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw
------ ------ ------ ------ ------ ------- -------
2.19 2.3 2.21 2.56 2.13 2.54 2.07
2.39 2.51 2.35 2.75 2.27 2.81 2.24
The overhead is 6% ~ 11%.
It's because when a trace event is enabled 3 tracepoints (sched_switch,
sched_wakeup, sched_wakeup_new) will be activated to map pid to cmdname.
We'd like to avoid this overhead, so add a trace option '(no)record-cmd'
to allow to disable cmdline recording.
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
LKML-Reference: <4C2D57F4.2050204@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 84d3f123e86f..7778f067fc8b 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -591,6 +591,7 @@ enum trace_iterator_flags { | |||
591 | TRACE_ITER_LATENCY_FMT = 0x20000, | 591 | TRACE_ITER_LATENCY_FMT = 0x20000, |
592 | TRACE_ITER_SLEEP_TIME = 0x40000, | 592 | TRACE_ITER_SLEEP_TIME = 0x40000, |
593 | TRACE_ITER_GRAPH_TIME = 0x80000, | 593 | TRACE_ITER_GRAPH_TIME = 0x80000, |
594 | TRACE_ITER_RECORD_CMD = 0x100000, | ||
594 | }; | 595 | }; |
595 | 596 | ||
596 | /* | 597 | /* |
@@ -723,6 +724,8 @@ filter_check_discard(struct ftrace_event_call *call, void *rec, | |||
723 | return 0; | 724 | return 0; |
724 | } | 725 | } |
725 | 726 | ||
727 | extern void trace_event_enable_cmd_record(bool enable); | ||
728 | |||
726 | extern struct mutex event_mutex; | 729 | extern struct mutex event_mutex; |
727 | extern struct list_head ftrace_events; | 730 | extern struct list_head ftrace_events; |
728 | 731 | ||