All of lore.kernel.org
 help / color / mirror / Atom feed
From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
To: Michel Lespinasse <walken@google.com>
Cc: Raghavendra KT <raghavendra.kt.linux@gmail.com>,
	Rik van Riel <riel@redhat.com>,
	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 2/5] x86,smp: proportional backoff for ticket spinlocks
Date: Thu, 03 Jan 2013 23:49:25 +0530	[thread overview]
Message-ID: <50E5CBAD.7000607@linux.vnet.ibm.com> (raw)
In-Reply-To: <CANN689FQomfT3yEKeyL_YdK9aO83V6MWkgJFVwnuqgH0WSTD6A@mail.gmail.com>

On 01/03/2013 05:12 PM, Michel Lespinasse wrote:
> On Thu, Jan 3, 2013 at 3:35 AM, Raghavendra KT
> <raghavendra.kt.linux@gmail.com> wrote:
>> [Ccing IBM id]
>> On Thu, Jan 3, 2013 at 10:52 AM, Rik van Riel <riel@redhat.com> wrote:
>>> Simple fixed value proportional backoff for ticket spinlocks.
>>> By pounding on the cacheline with the spin lock less often,
>>> bus traffic is reduced. In cases of a data structure with
>>> embedded spinlock, the lock holder has a better chance of
>>> making progress.
>>>
>>> If we are next in line behind the current holder of the
>>> lock, we do a fast spin, so as not to waste any time when
>>> the lock is released.
>>>
>>> The number 50 is likely to be wrong for many setups, and
>>> this patch is mostly to illustrate the concept of proportional
>>> backup. The next patch automatically tunes the delay value.
>>>
>>> Signed-off-by: Rik van Riel <riel@redhat.com>
>>> Signed-off-by: Michel Lespinasse <walken@google.com>
>>> ---
>>>   arch/x86/kernel/smp.c |   23 ++++++++++++++++++++---
>>>   1 files changed, 20 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
>>> index 20da354..9c56fe3 100644
>>> --- a/arch/x86/kernel/smp.c
>>> +++ b/arch/x86/kernel/smp.c
>>> @@ -117,11 +117,28 @@ static bool smp_no_nmi_ipi = false;
>>>    */
>>>   void ticket_spin_lock_wait(arch_spinlock_t *lock, struct __raw_tickets inc)
>>>   {
>>> +       __ticket_t head = inc.head, ticket = inc.tail;
>>> +       __ticket_t waiters_ahead;
>>> +       unsigned loops;
>>> +
>>>          for (;;) {
>>> -               cpu_relax();
>>> -               inc.head = ACCESS_ONCE(lock->tickets.head);
>>> +               waiters_ahead = ticket - head - 1;
>>                                               ^^^^^^^^^^^^^^
>> Just wondering,
>> Does wraparound affects this?
>
> The result gets stored in waiters_ahead, which is unsigned and has
> same bit size as ticket and head. So, this takes care of the
> wraparound issue.
>
> In other words, you may have to add 1<<8 or 1<<16 if the integer
> difference was negative; but you get that for free by just computing
> the difference as a 8 or 16 bit unsigned value.
>

Michael,
Sorry for the noise and for missing the simple math :) and Thanks for 
explanation.


  reply	other threads:[~2013-01-03 18:21 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 [this message]
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
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=50E5CBAD.7000607@linux.vnet.ibm.com \
    --to=raghavendra.kt@linux.vnet.ibm.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=raghavendra.kt.linux@gmail.com \
    --cc=riel@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.