| title: | patch perf events dont report side band event |
|
This is a note to let you know that we have just queued up the patch titled
Subject: perf events: Dont report side-band events on each cpu for per-task-per-cpu events
to the 2.6.32-stable tree. Its filename is
perf-events-dont-report-side-band-events-on-each-cpu-for-per-task-per-cpu-events.patch
A git repo of this tree can be found at
rel="nofollow" www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
From 5d27c23df09b702868d9a3bff86ec6abd22963ac Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx
Date: Thu, 17 Dec 2009 13:16:32 +0100
Subject: perf events: Dont report side-band events on each cpu for per-task-per-cpu events
From: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx
commit 5d27c23df09b702868d9a3bff86ec6abd22963ac upstream.
Acme noticed that his FORK/MMAP numbers were inflated by about
the same factor as his cpu-count.
This led to the discovery of a few more sites that need to
respect the event- cpu filter.
Reported-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxxxxxxxxxx
Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx
Cc: Paul Mackerras <paulus@xxxxxxxxx
LKML-Reference: <20091217121830.215333434@xxxxxxxxx
Signed-off-by: Ingo Molnar <mingo@xxxxxxx
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx
---
kernel/perf_event.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -1359,6 +1359,9 @@ static void perf_ctx_adjust_freq(struct
if (event- state != PERF_EVENT_STATE_ACTIVE)
continue;
+ if (event- cpu != -1 && event- cpu != smp_processor_id())
+ continue;
+
hwc = &event- hw;
interrupts = hwc- interrupts;
@@ -3226,6 +3229,9 @@ static void perf_event_task_output(struc
static int perf_event_task_match(struct perf_event *event)
{
+ if (event- cpu != -1 && event- cpu != smp_processor_id())
+ return 0;
+
if (event- attr.comm || event- attr.mmap || event- attr.task)
return 1;
@@ -3262,6 +3268,7 @@ static void perf_event_task_event(struct
ctx = rcu_dereference(task_event- task- perf_event_ctxp);
if (ctx)
perf_event_task_ctx(ctx, task_event);
+ put_cpu_var(perf_cpu_context);
rcu_read_unlock();
}
@@ -3338,6 +3345,9 @@ static void perf_event_comm_output(struc
static int perf_event_comm_match(struct perf_event *event)
{
+ if (event- cpu != -1 && event- cpu != smp_processor_id())
+ return 0;
+
if (event- attr.comm)
return 1;
@@ -3378,7 +3388,6 @@ static void perf_event_comm_event(struct
cpuctx = &get_cpu_var(perf_cpu_context);
perf_event_comm_ctx(&cpuctx- ctx, comm_event);
- put_cpu_var(perf_cpu_context);
rcu_read_lock();
/*
@@ -3388,6 +3397,7 @@ static void perf_event_comm_event(struct
ctx = rcu_dereference(current- perf_event_ctxp);
if (ctx)
perf_event_comm_ctx(ctx, comm_event);
+ put_cpu_var(perf_cpu_context);
rcu_read_unlock();
}
@@ -3462,6 +3472,9 @@ static void perf_event_mmap_output(struc
static int perf_event_mmap_match(struct perf_event *event,
struct perf_mmap_event *mmap_event)
{
+ if (event- cpu != -1 && event- cpu != smp_processor_id())
+ return 0;
+
if (event- attr.mmap)
return 1;
@@ -3539,7 +3552,6 @@ got_name:
cpuctx = &get_cpu_var(perf_cpu_context);
perf_event_mmap_ctx(&cpuctx- ctx, mmap_event);
- put_cpu_var(perf_cpu_context);
rcu_read_lock();
/*
@@ -3549,6 +3561,7 @@ got_name:
ctx = rcu_dereference(current- perf_event_ctxp);
if (ctx)
perf_event_mmap_ctx(ctx, mmap_event);
+ put_cpu_var(perf_cpu_context);
rcu_read_unlock();
kfree(buf);
@@ -3811,6 +3824,9 @@ static int perf_swevent_match(struct per
enum perf_type_id type,
u32 event_id, struct pt_regs *regs)
{
+ if (event- cpu != -1 && event- cpu != smp_processor_id())
+ return 0;
+
if (!perf_swevent_is_counting(event))
return 0;
Patches currently in stable-queue which might be from a.p.zijlstra@xxxxxxxxx are
queue-2.6.32/perf-honour-event-state-for-aux-stream-data.patch
queue-2.6.32/perf-timechart-use-tid-not-pid-for-comm-change.patch
queue-2.6.32/perf-events-dont-report-side-band-events-on-each-cpu-for-per-task-per-cpu-events.patch
--
To unsubscribe from this list: send the line "unsubscribe stable-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at rel="nofollow" vger.kernel.org/majordomo-info.html vger.kernel.org/majordomo-info.html
|