[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1337792984.9783.37.camel@laptop>
Date: Wed, 23 May 2012 19:09:44 +0200
From: Peter Zijlstra <a.p.zijlstra@...llo.nl>
To: Jan Beulich <JBeulich@...e.com>
Cc: Alex Shi <alex.shi@...el.com>, borislav.petkov@....com,
arnd@...db.de, akinobu.mita@...il.com, eric.dumazet@...il.com,
fweisbec@...il.com, rostedt@...dmis.org, hughd@...gle.com,
jeremy@...p.org, len.brown@...el.com, tony.luck@...el.com,
yongjie.ren@...el.com, kamezawa.hiroyu@...fujitsu.com,
seto.hidetoshi@...fujitsu.com, penberg@...nel.org,
yinghai@...nel.org, tglx@...utronix.de, akpm@...ux-foundation.org,
ak@...ux.intel.com, luto@....edu, avi@...hat.com,
dhowells@...hat.com, mingo@...hat.com, riel@...hat.com,
cpw@....com, steiner@....com, linux-kernel@...r.kernel.org,
viro@...iv.linux.org.uk, hpa@...or.com
Subject: Re: [PATCH v7 8/8] x86/tlb: just do tlb flush on one of siblings
of SMT
On Wed, 2012-05-23 at 16:05 +0100, Jan Beulich wrote:
> >>> On 23.05.12 at 16:15, Alex Shi <alex.shi@...el.com> wrote:
> > + /* doing flush on both siblings of SMT is just wasting time */
> > + cpumask_copy(&flush_mask, cpumask);
> > + if (likely(smp_num_siblings > 1)) {
> > + rand = jiffies;
> > + /* See "Numerical Recipes in C", second edition, p. 284 */
> > + rand = rand * 1664525L + 1013904223L;
> > + rand &= 0x1;
> > +
> > + for_each_cpu(cpu, &flush_mask) {
> > + sblmask = cpu_sibling_mask(cpu);
> > + if (cpumask_subset(sblmask, &flush_mask)) {
> > + if (rand == 0)
> > + cpu_clear(cpu, flush_mask);
> > + else
> > + cpu_clear(cpumask_next(cpu, sblmask),
> > + flush_mask);
> > + }
> > + }
> > + }
> > +
>
> There is no comment or anything else indicating that this is
> suitable for dual-thread CPUs only - when there are more than
> 2 threads per core, the intended effect won't be achieved.
Why would that be? Won't higher thread count still share the same
resources just more so?
> I'd
> recommend making the logic generic from the beginning, but if
> that doesn't seem feasible to you, at least a comment stating
> the limitation should be added imo.
My objection to the whole lot is that its looks mightily expensive on
large machines, cpumask operations aren't cheap when you've got 4k cpus
etc..
Also, you very much cannot put cpumask_t on stack.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists