kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
Cc: kvm-devel <kvm@vger.kernel.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Stefan Hajnoczi <stefanha@gmail.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	target-devel <target-devel@vger.kernel.org>,
	Hannes Reinecke <hare@suse.de>,
	Anthony Liguori <anthony@codemonkey.ws>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Christoph Hellwig <hch@lst.de>, Avi Kivity <avi@redhat.com>
Subject: Re: vhost-scsi port to v1.1.0 + MSI-X performance regression
Date: Tue, 24 Jul 2012 09:57:28 +0200	[thread overview]
Message-ID: <500E5568.6030405@siemens.com> (raw)
In-Reply-To: <1343115724.1813.69.camel@haakon2.linux-iscsi.org>

On 2012-07-24 09:42, Nicholas A. Bellinger wrote:
> Hi Anthony, Stefan & QEMU folks,
> 
> So during the process of separating out the patches from Zhi's
> vhost-scsi tree this evening, I managed to squash everything down to
> nine nicely reviewable patches that apply against the current
> qemu.git/master:
> 
> Nicholas Bellinger (1):
>   virtio-scsi: Set max_target=0 during vhost-scsi operation
> 
> Stefan Hajnoczi (8):
>   notifier: add validity check and notify function
>   virtio-pci: support host notifiers in TCG mode
>   virtio-pci: check that event notification worked
>   vhost: Pass device path to vhost_dev_init()
>   virtio-scsi: Add wwpn and tgpt properties
>   virtio-scsi: Open and initialize /dev/vhost-scsi
>   virtio-scsi: Start/stop vhost
>   vhost-scsi: add -vhost-scsi host device
> 
> 
> However, thus far I've not been able to get virtio-scsi <-> tcm_vhost
> I/O to actually work against the latest qemu.git/master..  
> 
> So while doing a (manual) bisection w/ this series to track down the
> issue with qemu/master, I managed to run across something else..  With
> the vhost-scsi series applied, everything is working as expected up
> until the following commit:
> 
> commit 1523ed9e1d46b0b54540049d491475ccac7e6421
> Author: Jan Kiszka <jan.kiszka@siemens.com>
> Date:   Thu May 17 10:32:39 2012 -0300
> 
>     virtio/vhost: Add support for KVM in-kernel MSI injection
> 
> 
> This commit ends up triggering the following assert immediately after
> starting qemu with virtio-scsi <-> tcm_vhost:
> 
> qemu-system-x86_64: /usr/src/qemu.git/hw/msix.c:515:
>        msix_unset_vector_notifiers: Assertion `dev->msix_vector_use_notifier &&
>                                     dev->msix_vector_release_notifier' failed.
> 
> OK, so adding the following hack allows me to boot:
> 
> diff --git a/hw/msix.c b/hw/msix.c
> index 59c7a83..6036909 100644
> --- a/hw/msix.c
> +++ b/hw/msix.c
> @@ -511,6 +511,11 @@ void msix_unset_vector_notifiers(PCIDevice *dev)
>  {
>      int vector;
>  
> +    if (!dev->msix_vector_use_notifier && !dev->msix_vector_release_notifier) {
> +        printf("Hit NULL msix_unset_vector_notifiers for: %s\n", dev->name);
> +        return;
> +    }
> +
>      assert(dev->msix_vector_use_notifier &&
>             dev->msix_vector_release_notifier);
>  
> --

Can you post a backtrace from gdb?

Also, is there a git tree and a way to reproduce this without special
hardware needs?

> 
> and virtio-scsi is then able to load + detect tcm_vhost LUNs as
> expected. 
> 
> However the random I/O performance with commit 1523ed9e1d46b is off by a
> couple of orders of magnitude, ~6K IOPs compared to ~60K IOPs on raw
> block flash using just the previous commit bdd00bdc64ba in Jan's series.
> 
> So AFAICT there appears to be a serious performance regression that is
> easily reproducible with that patch, which is about as far along as I've
> been able to diagnose yet.
> 
> Interestingly enough, virtio-scsi-raw performance does not seem to be
> effected AFAICT by this regression, and is still able to go ~20K IOPs
> with the same workload using commit 1523ed9e1d46b.  (Roughly the same as
> before)
> 
> Does anyone have any idea why commit 1523ed9e1d46b would be killing
> vhost / tcm_vhost performance so terribly, or is there something else
> that vhost / vhost-scsi should be doing with new code..?

No good idea yet, will have to look closer.

Maybe you are somehow deassigning (via set_guest_notifiers) before
assigning. But that would not yet explain performance regressions. Your
target is exposing MSI-X, isn't it?

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux

  reply	other threads:[~2012-07-24  7:57 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-24  7:42 vhost-scsi port to v1.1.0 + MSI-X performance regression Nicholas A. Bellinger
2012-07-24  7:57 ` Jan Kiszka [this message]
2012-07-24 12:05   ` Stefan Hajnoczi
2012-07-24 12:10     ` Jan Kiszka
2012-07-24 20:20   ` Nicholas A. Bellinger
2012-07-24 21:43     ` Nicholas A. Bellinger
2012-07-25  9:26     ` Jan Kiszka
2012-08-13 18:15     ` Michael S. Tsirkin

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=500E5568.6030405@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=anthony@codemonkey.ws \
    --cc=avi@redhat.com \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=nab@linux-iscsi.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --cc=target-devel@vger.kernel.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).