From: Rik van Riel <riel@redhat.com>
To: Michel Lespinasse <walken@google.com>
Cc: linux-kernel@vger.kernel.org, aquini@redhat.com,
eric.dumazet@gmail.com, lwoodman@redhat.com, jeremy@goop.org,
Jan Beulich <JBeulich@novell.com>,
Thomas Gleixner <tglx@linutronix.de>,
knoel@redhat.com
Subject: Re: [RFC PATCH 3/5] x86,smp: auto tune spinlock backoff delay factor
Date: Thu, 03 Jan 2013 12:17:03 -0500 [thread overview]
Message-ID: <50E5BD0F.9040004@redhat.com> (raw)
In-Reply-To: <CANN689Hd01BNYhcBJJBfz7VXJiFM5QikGOLVnokS4Gbq7cT=1g@mail.gmail.com>
On 01/03/2013 07:31 AM, Michel Lespinasse wrote:
> I'll see if I can make a more concrete proposal and still keep it
> short enough :)
Looking forward to that. I have thought about it some more,
and am still not sure about a better description for the
changelog...
>> +#define MIN_SPINLOCK_DELAY 1
>> +#define MAX_SPINLOCK_DELAY 16000
>> +DEFINE_PER_CPU(int, spinlock_delay) = { MIN_SPINLOCK_DELAY };
>
> unsigned would seem more natural here, though it's only a tiny detail
I might as well make that change while addressing the issues
you found :)
>> +
>> + /*
>> + * The lock is still busy; slowly increase the delay. If we
>> + * end up sleeping too long, the code below will reduce the
>> + * delay. Ideally we acquire the lock in the tight loop above.
>> + */
>> + if (!(head % 7) && delay < MAX_SPINLOCK_DELAY)
>> + delay++;
>> +
>> + loops = delay * waiters_ahead;
>
> I don't like the head % 7 thing. I think using fixed point arithmetic
> would be nicer:
>
> if (delay < MAX_SPINLOCK_DELAY)
> delay += 256/7; /* Or whatever constant we choose */
>
> loops = (delay * waiter_ahead) >> 8;
I'll do that. That could get completely rid of any artifacts
caused by incrementing sometimes, and not other times.
> Also, we should probably skip the delay increment on the first loop
> iteration - after all, we haven't waited yet, so we can't say that the
> delay was too short.
Good point. I will do that.
>> - if (head == ticket)
>> + if (head == ticket) {
>> + /*
>> + * We overslept and have no idea how long the lock
>> + * went idle. Reduce the delay as a precaution.
>> + */
>> + delay -= delay/32 + 1;
>
> There is a possibility of integer underflow here.
Fixed in my local code base now.
I will build a kernel with the things you pointed out fixed,
and will give it a spin this afternoon.
Expect new patches soonish :)
next prev parent reply other threads:[~2013-01-03 17:17 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-03 5:15 [RFC PATCH 0/5] x86,smp: make ticket spinlock proportional backoff w/ auto tuning Rik van Riel
2013-01-03 5:18 ` [RFC PATCH 1/5] x86,smp: move waiting on contended ticket lock out of line Rik van Riel
2013-01-03 10:47 ` Michel Lespinasse
2013-01-03 5:22 ` [RFC PATCH 2/5] x86,smp: proportional backoff for ticket spinlocks Rik van Riel
2013-01-03 11:35 ` Raghavendra KT
2013-01-03 11:42 ` Michel Lespinasse
2013-01-03 18:19 ` Raghavendra K T
2013-01-03 5:23 ` [RFC PATCH 3/5] x86,smp: auto tune spinlock backoff delay factor Rik van Riel
2013-01-03 12:31 ` Michel Lespinasse
2013-01-03 17:17 ` Rik van Riel [this message]
2013-01-05 0:45 ` Rik van Riel
2013-01-03 5:24 ` [RFC PATCH 4/5] x86,smp: keep spinlock delay values per hashed spinlock address Rik van Riel
2013-01-03 12:48 ` Michel Lespinasse
2013-01-03 13:05 ` Eric Dumazet
2013-01-03 5:25 ` [RFC PATCH 5/5] x86,smp: add debugging code to track spinlock delay value Rik van Riel
2013-01-03 10:46 ` [RFC PATCH 0/5] x86,smp: make ticket spinlock proportional backoff w/ auto tuning Michel Lespinasse
2013-01-03 11:29 ` Raghavendra KT
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50E5BD0F.9040004@redhat.com \
--to=riel@redhat.com \
--cc=JBeulich@novell.com \
--cc=aquini@redhat.com \
--cc=eric.dumazet@gmail.com \
--cc=jeremy@goop.org \
--cc=knoel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lwoodman@redhat.com \
--cc=tglx@linutronix.de \
--cc=walken@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.