diff options
author | Arjan van de Ven <arjan@infradead.org> | 2008-11-23 19:49:58 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-11-26 02:29:32 -0500 |
commit | f3f47a6768a29448866da4422b6f6bee485c947f (patch) | |
tree | ba4bf1b79cbd13412871eec50250294d7140fd09 /kernel/trace/trace.h | |
parent | 509dceef6470442d8c7b8a43ec34125205840b3c (diff) |
tracing: add "power-tracer": C/P state tracer to help power optimization
Impact: new "power-tracer" ftrace plugin
This patch adds a C/P-state ftrace plugin that will generate
detailed statistics about the C/P-states that are being used,
so that we can look at detailed decisions that the C/P-state
code is making, rather than the too high level "average"
that we have today.
An example way of using this is:
mount -t debugfs none /sys/kernel/debug
echo cstate > /sys/kernel/debug/tracing/current_tracer
echo 1 > /sys/kernel/debug/tracing/tracing_enabled
sleep 1
echo 0 > /sys/kernel/debug/tracing/tracing_enabled
cat /sys/kernel/debug/tracing/trace | perl scripts/trace/cstate.pl > out.svg
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 3abd645e8af2..4c453778a6ab 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -28,6 +28,7 @@ enum trace_type { | |||
28 | TRACE_FN_RET, | 28 | TRACE_FN_RET, |
29 | TRACE_USER_STACK, | 29 | TRACE_USER_STACK, |
30 | TRACE_BTS, | 30 | TRACE_BTS, |
31 | TRACE_POWER, | ||
31 | 32 | ||
32 | __TRACE_LAST_TYPE | 33 | __TRACE_LAST_TYPE |
33 | }; | 34 | }; |
@@ -160,6 +161,11 @@ struct bts_entry { | |||
160 | unsigned long to; | 161 | unsigned long to; |
161 | }; | 162 | }; |
162 | 163 | ||
164 | struct trace_power { | ||
165 | struct trace_entry ent; | ||
166 | struct power_trace state_data; | ||
167 | }; | ||
168 | |||
163 | /* | 169 | /* |
164 | * trace_flag_type is an enumeration that holds different | 170 | * trace_flag_type is an enumeration that holds different |
165 | * states when a trace occurs. These are: | 171 | * states when a trace occurs. These are: |
@@ -266,6 +272,7 @@ extern void __ftrace_bad_type(void); | |||
266 | IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \ | 272 | IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \ |
267 | IF_ASSIGN(var, ent, struct ftrace_ret_entry, TRACE_FN_RET);\ | 273 | IF_ASSIGN(var, ent, struct ftrace_ret_entry, TRACE_FN_RET);\ |
268 | IF_ASSIGN(var, ent, struct bts_entry, TRACE_BTS);\ | 274 | IF_ASSIGN(var, ent, struct bts_entry, TRACE_BTS);\ |
275 | IF_ASSIGN(var, ent, struct trace_power, TRACE_POWER); \ | ||
269 | __ftrace_bad_type(); \ | 276 | __ftrace_bad_type(); \ |
270 | } while (0) | 277 | } while (0) |
271 | 278 | ||