perf trace: Sample the CPU too
Sample, record, parse and print the CPU field - it had all zeroes before.
Before (watch the second column, the CPU values):
perf-32685 [000] 0.000000: sched_wakeup_new: task perf:32686 [120] success=1 [011]
perf-32685 [000] 0.000000: sched_migrate_task: task perf:32685 [120] from: 1 to: 11
perf-32685 [000] 0.000000: sched_process_fork: parent perf:32685 child perf:32686
true-32686 [000] 0.000000: sched_wakeup: task migration/11:25 [0] success=1 [011]
true-32686 [000] 0.000000: sched_wakeup: task distccd:12793 [125] success=1 [015]
true-32686 [000] 0.000000: sched_wakeup: task distccd:12793 [125] success=1 [015]
perf-32685 [000] 0.000000: sched_switch: task perf:32685 [120] (S) ==> swapper:0 [140]
true-32686 [000] 0.000000: sched_switch: task perf:32686 [120] (R) ==> migration/11:25 [0]
true-32686 [000] 0.000000: sched_switch: task perf:32686 [120] (R) ==> distccd:12793 [125]
true-32686 [000] 0.000000: sched_switch: task true:32686 [120] (R) ==> distccd:12793 [125]
true-32686 [000] 0.000000: sched_process_exit: task true:32686 [120]
true-32686 [000] 0.000000: sched_stat_wait: task: distccd:12793 wait: 6767985949080 [ns]
true-32686 [000] 0.000000: sched_stat_wait: task: distccd:12793 wait: 6767986139446 [ns]
true-32686 [000] 0.000000: sched_stat_sleep: task: distccd:12793 sleep: 132844 [ns]
true-32686 [000] 0.000000: sched_stat_sleep: task: distccd:12793 sleep: 131724 [ns]
After:
perf-32685 [001] 0.000000: sched_wakeup_new: task perf:32686 [120] success=1 [011]
perf-32685 [001] 0.000000: sched_migrate_task: task perf:32685 [120] from: 1 to: 11
perf-32685 [001] 0.000000: sched_process_fork: parent perf:32685 child perf:32686
true-32686 [011] 0.000000: sched_wakeup: task migration/11:25 [0] success=1 [011]
true-32686 [015] 0.000000: sched_wakeup: task distccd:12793 [125] success=1 [015]
true-32686 [015] 0.000000: sched_wakeup: task distccd:12793 [125] success=1 [015]
perf-32685 [001] 0.000000: sched_switch: task perf:32685 [120] (S) ==> swapper:0 [140]
true-32686 [011] 0.000000: sched_switch: task perf:32686 [120] (R) ==> migration/11:25 [0]
true-32686 [015] 0.000000: sched_switch: task perf:32686 [120] (R) ==> distccd:12793 [125]
true-32686 [015] 0.000000: sched_switch: task true:32686 [120] (R) ==> distccd:12793 [125]
true-32686 [015] 0.000000: sched_process_exit: task true:32686 [120]
true-32686 [015] 0.000000: sched_stat_wait: task: distccd:12793 wait: 6767985949080 [ns]
true-32686 [015] 0.000000: sched_stat_wait: task: distccd:12793 wait: 6767986139446 [ns]
true-32686 [015] 0.000000: sched_stat_sleep: task: distccd:12793 sleep: 132844 [ns]
true-32686 [015] 0.000000: sched_stat_sleep: task: distccd:12793 sleep: 131724 [ns]
So we can now see how this workload migrated between CPUs.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index add514d..ff93f8e 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -403,8 +403,10 @@
if (call_graph)
attr->sample_type |= PERF_SAMPLE_CALLCHAIN;
- if (raw_samples)
+ if (raw_samples) {
attr->sample_type |= PERF_SAMPLE_RAW;
+ attr->sample_type |= PERF_SAMPLE_CPU;
+ }
attr->mmap = track;
attr->comm = track;