diff options
| author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2009-06-19 07:22:51 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-06-19 07:43:12 -0400 |
| commit | e5289d4a181fb6c0b7a7607649af2ffdc491335c (patch) | |
| tree | 6c9e9ab46a29c538e4c505d3d3cd135265db08a2 /include | |
| parent | f5970550d5ccf90453cbd7d260370ea99d1f6513 (diff) | |
perf_counter: Simplify and fix task migration counting
The task migrations counter was causing rare and hard to decypher
memory corruptions under load. After a day of debugging and bisection
we found that the problem was introduced with:
3f731ca: perf_counter: Fix cpu migration counter
Turning them off fixes the crashes. Incidentally, the whole
perf_counter_task_migration() logic can be done simpler as well,
by injecting a proper sw-counter event.
This cleanup also fixed the crashes. The precise failure mode is
not completely clear yet, but we are clearly not unhappy about
having a fix ;-)
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/perf_counter.h | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h index e7e7e0242767..89698d8aba5c 100644 --- a/include/linux/perf_counter.h +++ b/include/linux/perf_counter.h | |||
| @@ -682,8 +682,6 @@ static inline void perf_counter_mmap(struct vm_area_struct *vma) | |||
| 682 | extern void perf_counter_comm(struct task_struct *tsk); | 682 | extern void perf_counter_comm(struct task_struct *tsk); |
| 683 | extern void perf_counter_fork(struct task_struct *tsk); | 683 | extern void perf_counter_fork(struct task_struct *tsk); |
| 684 | 684 | ||
| 685 | extern void perf_counter_task_migration(struct task_struct *task, int cpu); | ||
| 686 | |||
| 687 | extern struct perf_callchain_entry *perf_callchain(struct pt_regs *regs); | 685 | extern struct perf_callchain_entry *perf_callchain(struct pt_regs *regs); |
| 688 | 686 | ||
| 689 | extern int sysctl_perf_counter_paranoid; | 687 | extern int sysctl_perf_counter_paranoid; |
| @@ -724,8 +722,6 @@ static inline void perf_counter_mmap(struct vm_area_struct *vma) { } | |||
| 724 | static inline void perf_counter_comm(struct task_struct *tsk) { } | 722 | static inline void perf_counter_comm(struct task_struct *tsk) { } |
| 725 | static inline void perf_counter_fork(struct task_struct *tsk) { } | 723 | static inline void perf_counter_fork(struct task_struct *tsk) { } |
| 726 | static inline void perf_counter_init(void) { } | 724 | static inline void perf_counter_init(void) { } |
| 727 | static inline void perf_counter_task_migration(struct task_struct *task, | ||
| 728 | int cpu) { } | ||
| 729 | #endif | 725 | #endif |
| 730 | 726 | ||
| 731 | #endif /* __KERNEL__ */ | 727 | #endif /* __KERNEL__ */ |
