From: "Michael S. Tsirkin" <mst@redhat.com>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>,
kvm@vger.kernel.org,
Christian Borntraeger <borntraeger@de.ibm.com>,
virtualization@lists.linux-foundation.org, khoa@us.ibm.com,
Tejun Heo <tj@kernel.org>
Subject: Re: [PATCH v2] virtio_blk: unlock vblk->lock during kick
Date: Mon, 4 Jun 2012 08:29:04 +0300 [thread overview]
Message-ID: <20120604052902.GB9886@redhat.com> (raw)
In-Reply-To: <877gvn3kks.fsf@rustcorp.com.au>
On Mon, Jun 04, 2012 at 11:27:39AM +0930, Rusty Russell wrote:
> On Wed, 30 May 2012 15:39:05 +0200, Christian Borntraeger <borntraeger@de.ibm.com> wrote:
> > On 30/05/12 15:19, Stefan Hajnoczi wrote:
> > > Holding the vblk->lock across kick causes poor scalability in SMP
> > > guests. If one CPU is doing virtqueue kick and another CPU touches the
> > > vblk->lock it will have to spin until virtqueue kick completes.
> > >
> > > This patch reduces system% CPU utilization in SMP guests that are
> > > running multithreaded I/O-bound workloads. The improvements are small
> > > but show as iops and SMP are increased.
> >
> > Funny, recently I got a bug report regarding spinlock lockup
> > (see http://lkml.indiana.edu/hypermail/linux/kernel/1205.3/02201.html)
> > Turned out that blk_done was called on many guest cpus while the guest
> > was heavily paging on one virtio block device. (and the guest had much
> > more cpus than the host)
> > This patch will probably reduce the pressure for those cases as well.
> > we can then finish requests if somebody else is doing the kick.
> >
> > IIRC there were some other approaches to address this lock holding during
> > kick but this looks like the less intrusive one.
> >
> > > Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
> > Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
>
> Unfortunately, this conflicts with Asias He's deadlock fix, which has
> us just using the block-layer-supplied spinlock.
>
> If we drop the lock around the kick as you suggest, we're playing with
> fire. All the virtio backends have an atomic notify, so they're OK,
What was the point of virtqueue_kick_prepare/virtqueue_notify then?
I really thought the point was making virtqueue_notify
atomic at the API level.
> and the block layer *looks* safe at a glance, but there's no assurances.
what exactly do you have in mind for the block layer?
> It seems like a workaround to the fact that we don't have hcall-backed
> spinlocks like Xen, or that our virtio device is too laggy.
>
> Cheers,
> Rusty.
Exits are expensive no matter what we do, so dropping the lock
makes sense.
next prev parent reply other threads:[~2012-06-04 5:29 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1338383963-17910-1-git-send-email-stefanha@linux.vnet.ibm.com>
2012-05-30 13:39 ` [PATCH v2] virtio_blk: unlock vblk->lock during kick Christian Borntraeger
2012-06-04 1:57 ` Rusty Russell
2012-06-04 5:29 ` Michael S. Tsirkin [this message]
2012-06-04 6:02 ` Christian Borntraeger
2012-06-04 8:27 ` Stefan Hajnoczi
2012-06-04 8:35 ` Asias He
2012-06-04 8:57 ` Asias He
2012-06-01 4:38 ` Asias He
2012-06-01 7:58 ` Stefan Hajnoczi
2012-05-30 13:19 Stefan Hajnoczi
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=20120604052902.GB9886@redhat.com \
--to=mst@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=khoa@us.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=stefanha@linux.vnet.ibm.com \
--cc=tj@kernel.org \
--cc=virtualization@lists.linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).