From: Peter Zijlstra <peterz@infradead.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
Thomas Gleixner <tglx@linutronix.de>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH] ftrace: sched_switch: show the wakee's cpu
Date: Thu, 04 Sep 2008 10:24:16 +0200 [thread overview]
Message-ID: <1220516656.8609.201.camel@twins> (raw)
In-Reply-To: <20080903214249.661170580@goodmis.org>
Subject: ftrace: sched_switch: show the wakee's cpu
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Tue Sep 02 21:12:13 CEST 2008
While profiling the smp behaviour of the scheduler it was needed to know to
which cpu a task got woken.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
kernel/trace/trace.c | 41 +++++++++++++++++++++++++++--------------
kernel/trace/trace.h | 2 ++
2 files changed, 29 insertions(+), 14 deletions(-)
Index: linux-2.6/kernel/trace/trace.c
===================================================================
--- linux-2.6.orig/kernel/trace/trace.c
+++ linux-2.6/kernel/trace/trace.c
@@ -976,6 +977,7 @@ tracing_sched_switch_trace(struct trace_
entry->field.ctx.next_pid = next->pid;
entry->field.ctx.next_prio = next->prio;
entry->field.ctx.next_state = next->state;
+ entry->field.ctx.next_cpu = task_cpu(next);
__trace_stack(tr, data, flags, 5);
__raw_spin_unlock(&data->lock);
raw_local_irq_restore(irq_flags);
@@ -1002,6 +1004,7 @@ tracing_sched_wakeup_trace(struct trace_
entry->field.ctx.next_pid = wakee->pid;
entry->field.ctx.next_prio = wakee->prio;
entry->field.ctx.next_state = wakee->state;
+ entry->field.ctx.next_cpu = task_cpu(wakee);
__trace_stack(tr, data, flags, 6);
__raw_spin_unlock(&data->lock);
raw_local_irq_restore(irq_flags);
@@ -1630,10 +1638,11 @@ print_lat_fmt(struct trace_iterator *ite
__ffs(field->ctx.prev_state) + 1 : 0;
S = state < sizeof(state_to_char) - 1 ? state_to_char[state] : 'X';
comm = trace_find_cmdline(field->ctx.next_pid);
- trace_seq_printf(s, " %5d:%3d:%c %s %5d:%3d:%c %s\n",
+ trace_seq_printf(s, " %5d:%3d:%c %s [%03d] %5d:%3d:%c %s\n",
field->ctx.prev_pid,
field->ctx.prev_prio,
S, entry->type == TRACE_CTX ? "==>" : " +",
+ field->ctx.next_cpu,
field->ctx.next_pid,
field->ctx.next_prio,
T, comm);
@@ -1730,11 +1739,12 @@ static int print_trace_fmt(struct trace_
state_to_char[field->ctx.prev_state] : 'X';
T = field->ctx.next_state < sizeof(state_to_char) ?
state_to_char[field->ctx.next_state] : 'X';
- ret = trace_seq_printf(s, " %5d:%3d:%c %s %5d:%3d:%c\n",
+ ret = trace_seq_printf(s, " %5d:%3d:%c %s [%03d] %5d:%3d:%c\n",
field->ctx.prev_pid,
field->ctx.prev_prio,
S,
entry->type == TRACE_CTX ? "==>" : " +",
+ field->ctx.next_cpu,
field->ctx.next_pid,
field->ctx.next_prio,
T);
@@ -1811,10 +1821,11 @@ static int print_raw_fmt(struct trace_it
state_to_char[field->ctx.next_state] : 'X';
if (entry->type == TRACE_WAKE)
S = '+';
- ret = trace_seq_printf(s, "%d %d %c %d %d %c\n",
+ ret = trace_seq_printf(s, "%d %d %c %d %d %d %c\n",
field->ctx.prev_pid,
field->ctx.prev_prio,
S,
+ field->ctx.next_cpu,
field->ctx.next_pid,
field->ctx.next_prio,
T);
@@ -1887,6 +1898,7 @@ static int print_hex_fmt(struct trace_it
SEQ_PUT_HEX_FIELD_RET(s, field->ctx.prev_pid);
SEQ_PUT_HEX_FIELD_RET(s, field->ctx.prev_prio);
SEQ_PUT_HEX_FIELD_RET(s, S);
+ SEQ_PUT_HEX_FIELD_RET(s, field->ctx.next_cpu);
SEQ_PUT_HEX_FIELD_RET(s, field->ctx.next_pid);
SEQ_PUT_HEX_FIELD_RET(s, field->ctx.next_prio);
SEQ_PUT_HEX_FIELD_RET(s, T);
Index: linux-2.6/kernel/trace/trace.h
===================================================================
--- linux-2.6.orig/kernel/trace/trace.h
+++ linux-2.6/kernel/trace/trace.h
@@ -41,6 +41,7 @@ struct ctx_switch_entry {
unsigned int next_pid;
unsigned char next_prio;
unsigned char next_state;
+ unsigned int next_cpu;
};
/*
next prev parent reply other threads:[~2008-09-04 8:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-03 21:42 [PATCH 0/2] ftrace: ftrace_printk fixes Steven Rostedt
2008-09-03 21:42 ` [PATCH 1/2] ftrace: binary and not logical for continue test Steven Rostedt
2008-09-03 21:42 ` [PATCH 2/2] ftrace: print continue index fix Steven Rostedt
2008-09-04 7:41 ` [PATCH 0/2] ftrace: ftrace_printk fixes Peter Zijlstra
2008-09-04 8:24 ` [PATCH] ftrace: make ftrace_printk usable with the other tracers Peter Zijlstra
2008-09-04 8:24 ` Peter Zijlstra [this message]
2008-09-04 10:16 ` [PATCH] ftrace: sched_switch: show the wakee's cpu Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1220516656.8609.201.camel@twins \
--to=peterz@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox