Messages in this thread | | | From | Song Liu <> | Subject | Re: [RFC][PATCH] perf: Rewrite core context handling | Date | Tue, 16 Oct 2018 18:24:23 +0000 |
| |
> On Oct 16, 2018, at 11:10 AM, Peter Zijlstra <peterz@infradead.org> wrote: > > On Tue, Oct 16, 2018 at 04:34:05PM +0000, Song Liu wrote: >>>> 3. perf_event_pmu_context owns RB tree of events. Since we don't >>>> need rotation across multiple hardware PMUs, the rotation is >>>> within same perf_event_pmu_context. >>> >>> By keeping the RB trees in perf_event_context, we get bigger trees, >>> which is more efficient (log(n+m) < log(n) + log(m)) >>> >>> Also, specifically, it means we only need a single merge sort / >>> iteration to schedule in a full context, instead of (again) doing 'n' of >>> them. >>> >>> Also, given a context and a pmu, it is cheaper for finding the relevant >>> events; this is needed for big.little for instance. Something the >>> proposed patch doesn't fully flesh out. >> >> Would it be faster if we add a perf_event_pmu_context pointer to the >> perf_event? > > + pmu_ctx = find_get_pmu_context(pmu, ctx, event); > + if (IS_ERR(pmu_ctx)) { > + err = PTR_ERR(pmu_ctx); > + goto err_locked; > + } > + event->pmu_ctx = pmu_ctx; > > Like that?
Aha, we already have it. I misunderstood this one. Please ignore that.
Thanks, Song
| |