Messages in this thread | | | Date | Fri, 22 May 2015 13:28:00 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 02/10] perf/x86: Improve HT workaround GP counter constraint |
| |
On Fri, May 22, 2015 at 01:21:46PM +0200, Peter Zijlstra wrote: > @@ -821,8 +828,24 @@ int x86_schedule_events(struct cpu_hw_ev > > /* slow path */ > if (i != n) { > + int gpmax = x86_pmu.num_counters / 2; > + > + /* > + * Do not allow scheduling of more than half the available > + * generic counters. > + * > + * This helps avoid counter starvation of sibling thread by > + * ensuring at most half the counters cannot be in exclusive > + * mode. There is no designated counters for the limits. Any > + * N/2 counters can be used. This helps with events with > + * specific counter constraints. > + */ > + if (is_ht_workaround_enabled() && !cpuc->is_fake && > + READ_ONCE(cpuc->excl_cntrs->exclusive_present)) > + gpmax /= 2; > + > unsched = perf_assign_events(cpuc->event_constraint, n, wmin, > - wmax, assign); > + wmax, gpmax, assign); > } >
Hmm, I divide by 2 twice.. no wonder it doesn't quite work as expected.
| |