All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: George Dunlap <George.Dunlap@eu.citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	Juergen Gross <juergen.gross@fujitsu-siemens.com>,
	Keir Fraser <keir.fraser@eu.citrix.com>
Subject: Re: [Patch 2 of 2]: PV-domain SMP performance Linux-part
Date: Tue, 20 Jan 2009 12:12:04 -0800	[thread overview]
Message-ID: <49763014.6050705@goop.org> (raw)
In-Reply-To: <de76405a0901190915x220c8c72m685b90388c285f84@mail.gmail.com>

George Dunlap wrote:
> On Fri, Jan 16, 2009 at 5:41 PM, Jeremy Fitzhardinge <jeremy@goop.org> wrote:
>   
>> Yes, that's more or less right.  Each lock has a count of how many cpus are
>> waiting for the lock; if its non-zero on unlock, the unlocker kicks all the
>> waiting cpus via IPI.  There's a per-cpu variable of "lock I am waiting
>> for"; the kicker looks at each cpu's entry and kicks it if its waiting for
>> the lock being unlocked.
>>
>> The locking side does the expected "spin for a while, then block on
>> timeout".  The timeout is settable if you have the appropriate debugfs
>> option enabled (which also produces quite a lot of detailed stats about
>> locking behaviour).  The IPI is never delivered as an event BTW; the locker
>> uses the event poll hypercall to block until the event is pending (this
>> hypercall had some performance problems until relatively recent versions of
>> Xen; I'm not sure which release versions has the fix).
>>
>> The lock itself is a simple byte spinlock, with no fairness guarantees; I'm
>> assuming (hoping) that the pathological cases that ticket locks were
>> introduced to solve will be mitigated by the timeout/blocking path (and/or
>> less likely in a virtual environment anyway).
>>
>> I measured a small performance improvement within the domain with this patch
>> (kernbench-type workload), but an overall 10% reduction in system-wide CPU
>> use with multiple competing domains.
>>     
>
> This is in the pv-ops kernel; is it in the Xen 2.6.18 kernel yet?
>   

Yes.  No plans to backport.

> Another thing to consider is how the approach applies to a related
> problem, that of "syncronous" IPI function calls: i.e., when v0 sends
> an IPI to v1 to do something, and spins waiting for it to be done,
> expecting it to be finished pretty quickly.  But v1 is over credits,
> so it doesn't get to run, and v0 burns its credits waiting.
>   

Yes.  Some kind of direct yield might work in that case.  In practice it 
hasn't been a huge problem in Linux because most synchronous IPIs are 
for cross-cpu TLB flushes, which we use a hypercall for anyway.

    J

  reply	other threads:[~2009-01-20 20:12 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-17 12:22 [Patch 2 of 2]: PV-domain SMP performance Linux-part Juergen Gross
2008-12-17 15:06 ` Jan Beulich
2008-12-18  7:18   ` Juergen Gross
2008-12-18  7:41     ` Jan Beulich
2008-12-19  8:12       ` Juergen Gross
2008-12-19  9:10         ` Keir Fraser
2008-12-19  9:25           ` Juergen Gross
2008-12-19  9:56             ` Keir Fraser
2009-01-16  7:16               ` Juergen Gross
2009-01-16  7:38                 ` Venefax
2009-01-16  7:48                   ` Juergen Gross
2009-01-16  7:57                     ` Venefax
2009-01-16  8:19                       ` Juergen Gross
2009-01-16 10:16                     ` James Harper
2009-01-16 10:31                       ` Juergen Gross
2009-01-16 10:41                       ` Keir Fraser
2009-01-16 11:01                         ` James Harper
2009-01-16 11:14                           ` Keir Fraser
2009-01-16 11:18                           ` Jan Beulich
2009-01-16 14:40                           ` Steve Prochniak
2009-01-16 17:43                       ` Jeremy Fitzhardinge
2009-01-16  8:17                 ` Keir Fraser
2009-01-16  9:36                   ` Juergen Gross
2009-01-16  9:53                     ` Keir Fraser
2009-01-16 17:41                       ` Jeremy Fitzhardinge
2009-01-19 17:15                         ` George Dunlap
2009-01-20 20:12                           ` Jeremy Fitzhardinge [this message]
2008-12-19  9:33           ` Jan Beulich
2008-12-19  9:56             ` Keir Fraser
2008-12-19 15:15               ` George Dunlap
2009-01-12 12:55                 ` Juergen Gross
2009-01-19 17:32                   ` George Dunlap
2009-01-20  7:56                     ` Juergen Gross
2008-12-19 10:06             ` Juergen Gross
2008-12-19 10:36               ` Jan Beulich
2008-12-19 10:42                 ` Juergen Gross
2008-12-19 10:48                 ` Juergen Gross

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=49763014.6050705@goop.org \
    --to=jeremy@goop.org \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=juergen.gross@fujitsu-siemens.com \
    --cc=keir.fraser@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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.