Messages in this thread |  | | | Date | Fri, 7 Sep 2012 19:03:28 +0200 | | Subject | Re: [PATCH 1/3] perf: use hrtimer for event multiplexing | | From | Stephane Eranian <> |
| |
On Fri, Sep 7, 2012 at 5:39 PM, Peter Zijlstra <peterz@infradead.org> wrote: > On Fri, 2012-09-07 at 16:29 +0200, Stephane Eranian wrote: >> @@ -148,6 +148,15 @@ static LIST_HEAD(pmus); >> static DEFINE_MUTEX(pmus_lock); >> static struct srcu_struct pmus_srcu; >> >> +struct perf_cpu_hrtimer { >> + struct hrtimer hrtimer; >> + int active; >> +}; >> + >> +static DEFINE_PER_CPU(struct list_head, rotation_list); >> + >> +static DEFINE_PER_CPU(struct perf_cpu_hrtimer, perf_cpu_hrtimer); > > > How about sticking the hrtimer in perf_cpu_context so you can have a > different rotation interval per PMU ? > I think having different intervals would be a good thing, especially for uncore. But now, I am wondering how this could work without too much overhead. Looks like you're suggesting arming multiple hrtimers if multiple PMU are overcommitted. Is that right? As opposed to having a PMU multiplier off of a single per-cpu hrtimer.
> Sorta like e9d2b064149ff7ef4acbc65a1b9374ac8b218d3e removed. Stopping > the timer when the PMU isn't over committed should solve the NOHZ > problem I think.
Yeah, my patch does solve this. That's what I show in my example in the intro msg.
|  |