Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 1 May 2018 17:03:30 -0400
From: Rich Felker <>
To: Patrick Oppenlander <>
Subject: Re: Some questions

On Tue, May 01, 2018 at 12:35:58PM +1000, Patrick Oppenlander wrote:
> On Tue, May 1, 2018 at 1:35 AM, Rich Felker <> wrote:
> > On Mon, Apr 30, 2018 at 01:55:16PM +1000, Patrick Oppenlander wrote:
> >> I was talking about the case of a uniprocessor system running a multi
> >> theaded process.
> >>
> >> In that case the "spin" part of spinlock just burns time & electrons.
> >> The "lock" part obviously can't be omitted. Calling straight through
> >> to the kernel is the most efficient thing to do.
> >
> > I see. Is this an issue you've actually hit? I don't see any obvious
> > way to make this decision at runtime that doesn't incur unwanted costs
> > or failure modes, and I suspect we're spinning way too many times
> > anyway even for SMP (i.e. the ideal solution might just be
> > significantly reducing the # of spins).
> I haven't measured the performance impact of it.
> One option could be to configure the number of spins at compile time
> and set to zero for known uniprocessor architectures (like armv7m). Or
> have a configure override. Really this is just performance tuning,
> there's no danger of generating incorrect code.
> I can't find a way of detecting a SMP kernel other than parsing the
> result of uname(2) which sucks. I was hoping there might be something
> in auxv hwcap.

There doesn't seem to be any good way. Unless you find this is a real
performance bottleneck for you, I'd like to punt on it for now and
come back when someone has time to do real research on number of spins
that make sense and whether the number is low enough not to care for


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.