Files
kernel-tenderloin-3.0/include/linux
Frederic Weisbecker 76e1d9047e perf: Store active software events in a hashlist
Each time a software event triggers, we need to walk through
the entire list of events from the current cpu and task contexts
to retrieve a running perf event that matches.
We also need to check a matching perf event is actually counting.

This walk is wasteful and makes the event fast path scaling
down with a growing number of events running on the same
contexts.

To solve this, we store the running perf events in a hashlist to
get an immediate access to them against their type:event_id when
they trigger.

v2: - Fix SWEVENT_HLIST_SIZE definition (and re-learn some basic
      maths along the way)
    - Only allocate hlist for online cpus, but keep track of the
      refcount on offline possible cpus too, so that we allocate it
      if needed when it becomes online.
    - Drop the kref use as it's not adapted to our tricks anymore.

v3: - Fix bad refcount check (address instead of value). Thanks to
      Eric Dumazet who spotted this.
    - While exiting cpu, move the hlist release out of the IPI path
      to lock the hlist mutex sanely.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@elte.hu>
2010-04-14 18:20:33 +02:00
..
2010-03-12 15:53:10 -08:00
2009-12-16 07:20:13 -08:00
2010-03-01 15:11:32 -05:00
2010-03-12 15:52:32 -08:00
2010-02-05 07:35:05 -08:00
2009-12-10 23:52:01 +00:00
2009-12-15 08:53:33 -08:00
2009-12-23 13:33:54 +01:00
2010-02-09 11:13:56 +01:00
2009-12-14 23:55:34 +01:00
2010-03-07 22:17:09 +01:00
2010-03-02 12:23:42 +01:00
2010-03-02 12:23:49 +01:00
2010-01-19 01:52:36 -08:00
2010-02-18 14:08:38 -08:00
2010-02-17 16:35:17 -08:00
2010-02-02 07:32:29 -08:00
2010-01-11 16:28:01 -08:00
2010-03-12 15:52:40 -08:00
2010-03-12 15:52:36 -08:00
2010-03-12 15:52:40 -08:00
2010-03-12 15:53:10 -08:00
2009-12-16 06:56:12 -08:00
2010-04-06 10:55:33 -04:00
2009-12-15 08:53:36 -08:00
2009-12-26 20:40:34 -08:00
2010-02-03 17:39:50 +11:00
2010-03-12 15:53:10 -08:00
2010-02-09 11:13:56 +01:00
2010-02-19 03:35:12 -05:00
2010-03-12 15:52:38 -08:00
2009-12-15 08:53:20 -08:00
2010-03-12 15:52:28 -08:00
2010-04-08 13:37:18 +02:00
2009-12-12 13:08:15 +01:00
2010-02-10 23:49:08 +09:00
2010-02-03 20:32:28 -08:00
2010-02-19 15:52:40 -05:00
2010-02-14 07:13:47 -07:00
2010-02-23 23:14:47 -08:00
2010-02-04 10:23:02 -08:00
2010-03-12 15:53:11 -08:00
2010-03-05 00:20:31 +01:00
2010-02-10 17:47:17 -08:00
2010-03-12 15:52:44 -08:00
2010-03-02 14:28:49 -05:00
2010-03-12 15:53:10 -08:00
2010-03-12 15:52:43 -08:00
2010-01-21 23:55:25 -08:00
2010-02-16 13:38:56 +09:00
2010-03-12 15:52:44 -08:00
2009-12-16 22:32:29 -05:00
2010-01-14 22:38:09 -05:00
2010-03-12 15:52:36 -08:00
2010-02-18 15:43:09 -08:00
2010-01-05 09:17:33 +09:00
2009-12-16 12:16:49 -05:00