diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2013-07-22 20:31:04 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-07-30 16:29:14 -0400 |
commit | ba8a75c16e292c0a3a87406a77508cbbc6cf4ee2 (patch) | |
tree | d112169aeb12f97e19b65d546c97c4b60e4d796b /kernel/events | |
parent | 9a545de019b536771feefb76f85e5038b65c2190 (diff) |
perf: Account freq events per cpu
This is going to be used by the full dynticks subsystem
as a finer-grained information to know when to keep and
when to stop the tick.
Original-patch-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1374539466-4799-7-git-send-email-fweisbec@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/events')
-rw-r--r-- | kernel/events/core.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 63bdec9fdd21..3fe385aa93e6 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
@@ -141,6 +141,7 @@ enum event_type_t { | |||
141 | struct static_key_deferred perf_sched_events __read_mostly; | 141 | struct static_key_deferred perf_sched_events __read_mostly; |
142 | static DEFINE_PER_CPU(atomic_t, perf_cgroup_events); | 142 | static DEFINE_PER_CPU(atomic_t, perf_cgroup_events); |
143 | static DEFINE_PER_CPU(atomic_t, perf_branch_stack_events); | 143 | static DEFINE_PER_CPU(atomic_t, perf_branch_stack_events); |
144 | static DEFINE_PER_CPU(atomic_t, perf_freq_events); | ||
144 | 145 | ||
145 | static atomic_t nr_mmap_events __read_mostly; | 146 | static atomic_t nr_mmap_events __read_mostly; |
146 | static atomic_t nr_comm_events __read_mostly; | 147 | static atomic_t nr_comm_events __read_mostly; |
@@ -3139,6 +3140,9 @@ static void unaccount_event_cpu(struct perf_event *event, int cpu) | |||
3139 | } | 3140 | } |
3140 | if (is_cgroup_event(event)) | 3141 | if (is_cgroup_event(event)) |
3141 | atomic_dec(&per_cpu(perf_cgroup_events, cpu)); | 3142 | atomic_dec(&per_cpu(perf_cgroup_events, cpu)); |
3143 | |||
3144 | if (event->attr.freq) | ||
3145 | atomic_dec(&per_cpu(perf_freq_events, cpu)); | ||
3142 | } | 3146 | } |
3143 | 3147 | ||
3144 | static void unaccount_event(struct perf_event *event) | 3148 | static void unaccount_event(struct perf_event *event) |
@@ -6474,6 +6478,9 @@ static void account_event_cpu(struct perf_event *event, int cpu) | |||
6474 | } | 6478 | } |
6475 | if (is_cgroup_event(event)) | 6479 | if (is_cgroup_event(event)) |
6476 | atomic_inc(&per_cpu(perf_cgroup_events, cpu)); | 6480 | atomic_inc(&per_cpu(perf_cgroup_events, cpu)); |
6481 | |||
6482 | if (event->attr.freq) | ||
6483 | atomic_inc(&per_cpu(perf_freq_events, cpu)); | ||
6477 | } | 6484 | } |
6478 | 6485 | ||
6479 | static void account_event(struct perf_event *event) | 6486 | static void account_event(struct perf_event *event) |