From: "Yan Vugenfirer" <yvugenfi@redhat.com>
To: "'Vadim Rozenfeld'" <vrozenfe@redhat.com>,
"'Brian Jackson'" <iggy@theiggy.com>
Cc: "'Andrew Theurer'" <habanero@linux.vnet.ibm.com>, <kvm@vger.kernel.org>
Subject: RE: [PATCH] KVM: Use thread debug register storage instead of kvm specific data
Date: Sun, 6 Sep 2009 08:49:48 -0400 (EDT) [thread overview]
Message-ID: <00fa01ca2ef0$821a7080$864f5180$@com> (raw)
In-Reply-To: <4AA24CE0.2010103@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 6301 bytes --]
> -----Original Message-----
> From: kvm-owner@vger.kernel.org [mailto:kvm-owner@vger.kernel.org] On
> Behalf Of Vadim Rozenfeld
> Sent: Saturday, September 05, 2009 2:35 PM
> To: Brian Jackson
> Cc: Andrew Theurer; kvm@vger.kernel.org
> Subject: Re: [PATCH] KVM: Use thread debug register storage instead of
> kvm specific data
>
> On 09/04/2009 08:04 PM, Brian Jackson wrote:
> > On Friday 04 September 2009 11:08:51 am Andrew Theurer wrote:
> >
> >> Brian Jackson wrote:
> >>
> >>> On Friday 04 September 2009 09:48:17 am Andrew Theurer wrote:
> >>> <snip>
> >>>
> >>>
> >>>>> Still not idle=poll, it may shave off 0.2%.
> >>>>>
> >>>> Won't this affect SMT in a negative way? (OK, I am not running
> SMT now,
> >>>> but eventually we will be) A long time ago, we tested P4's with
> HT, and
> >>>> a polling idle in one thread always negatively impacted
> performance in
> >>>> the sibling thread.
> >>>>
> >>>> FWIW, I did try idle=halt, and it was slightly worse.
> >>>>
> >>>> I did get a chance to try the latest qemu (master and next heads).
> I
> >>>> have been running into a problem with virtIO stor driver for
> windows on
> >>>> anything much newer than kvm-87. I compiled the driver from the
> new git
> >>>> tree, installed OK, but still had the same error. Finally, I
> removed
> >>>> the serial number feature in the virtio-blk in qemu, and I can now
> get
> >>>> the driver to work in Windows.
> >>>>
> >>> What were the symptoms you were seeing (i.e. define "a problem").
> >>>
> >> Device manager reports "a problem code 10" occurred, and the driver
> >> cannot initialize.
> >>
> >
> > Yes! I was getting this after I moved from 0.10.6 to 0.11.0-rc1. Now
> I know
> > how to fix it. Thank you. Thank you.
> >
> >
> >
> >> Vadim Rozenfeld informed me:
> >>
> >>> There is a sanity check in the code, which checks the I/O range and
> fails
> >>> if is not equal to 40h. Resent virtio-blk devices have I/O range
> equal to
> >>> 0x400 (serial number feature). So, out signed viostor driver will
> fail
> >>> on the latest KVMs. This problem was fixed
> >>>
> >> and committed to SVN some time ago.
> >>
> >> I assumed the fix was to the virtio windows driver, but I could not
> get
> >> the driver I compiled from latest git to work either (only on
> >> qemu-kvm-87). So, I just backed out the serial number feature in
> qemu,
> >> and it worked. FWIW, the linux virtio-blk driver never had a
> problem.
> >>
> >
> > There have been very few changes to the viostor windows git repo
> since it was
> > opened. Unless it was done before they were open sourced. In any
> case, it
> > doesn't seem to be working with what's publicly available, so I think
> maybe
> > there is something missing internal to external.
> >
> I don't believe it was merged to git yet.
> The signed viostor driver works with qemu-kvm-87 only,
> otherwise you need to remove SN from the virtio-blk code, or clip
> IO range to the original size.
[YV] Please find attached patch with the fix. Kernel.org experiencing some
problems now. The moment they will be fixed, I will push this patch to it.
>
> Cheers,
> Vadim.
> >
> >
> >>
> >>>> So, not really any good news on performance with latest qemu
> builds.
> >>>> Performance is slightly worse:
> >>>>
> >>>> qemu-kvm-87
> >>>> user nice system irq softirq guest idle iowait
> >>>> 5.79 0.00 9.28 0.08 1.00 20.81 58.78 4.26
> >>>> total busy: 36.97
> >>>>
> >>>> qemu-kvm-88-905-g6025b2d (master)
> >>>> user nice system irq softirq guest idle iowait
> >>>> 6.57 0.00 10.86 0.08 1.02 21.35 55.90 4.21
> >>>> total busy: 39.89
> >>>>
> >>>> qemu-kvm-88-910-gbf8a05b (next)
> >>>> user nice system irq softirq guest idle iowait
> >>>> 6.60 0.00 10.91 0.09 1.03 21.35 55.71 4.31
> >>>> total busy: 39.98
> >>>>
> >>>> diff of profiles, p1=qemu-kvm-87, p2=qemu-master
> >>>>
> >>> <snip>
> >>>
> >>>
> >>>> 18x more samples for gfn_to_memslot_unali*, 37x for
> >>>> emulator_read_emula*, and more CPU time in guest mode.
> >>>>
> >>>> One other thing I decided to try was some cpu binding. I know
> this is
> >>>> not practical for production, but I wanted to see if there's any
> benefit
> >>>> at all. One reason was that a coworker here tried binding the
> qemu
> >>>> thread for the vcpu and the qemu IO thread to the same cpu. On a
> >>>> networking test, guest->local-host, throughput was up about 2x.
> >>>> Obviously there was a nice effect of being on the same cache. I
> >>>> wondered, even without full bore throughput tests, could we see
> any
> >>>> benefit here. So, I bound each pair of VMs to a dedicated core.
> What I
> >>>> saw was about a 6% improvement in performance. For a system which
> has
> >>>> pretty incredible memory performance and is not that busy, I was
> >>>> surprised that I got 6%. I am not advocating binding, but what I
> do
> >>>> wonder: on 1-way VMs, if we keep all the qemu threads together on
> the
> >>>> same CPU, but still allowing the scheduler to move them (all of
> them at
> >>>> once) to different cpus over time, would we see the same benefit?
> >>>>
> >>>> One other thing: So far I have not been using preadv/pwritev. I
> assume
> >>>> I need a more recent glibc (on 2.5 now) for qemu to take advantage
> of
> >>>> this?
> >>>>
> >>> Getting p(read|write)v working almost doubled my virtio-net
> throughput in
> >>> a Linux guest. Not quite as much in Windows guests. Yes you need
> >>> glibc-2.10. I think some distros might have backported it to 2.9.
> You
> >>> will also need some support for it in your system includes.
> >>>
> >> Thanks, I will try a newer glibc, or maybe just move to a newer
> Linux
> >> installation which happens to have a newer glic.
> >>
> >
> > Fwiw... In Debian, I had to get glibc from the experimental tree. So
> some
> > distros might not even have it.
> >
> >
> >
> >> -Andrew
> >>
> >>
> > --
> > To unsubscribe from this list: send the line "unsubscribe kvm" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
[-- Attachment #2: 0001-Fix-IO-range-verification-that-cause-blue-screen-on.patch --]
[-- Type: application/octet-stream, Size: 1387 bytes --]
>From 1f7dae772d96ba8aebdebd236edc5f0ec5eb2dfa Mon Sep 17 00:00:00 2001
From: Yan Vugenfirer <yan@yvtechnologies.com>
Date: Sun, 6 Sep 2009 13:54:34 +0300
Subject: [PATCH] Fix IO range verification that cause blue screen on new version of KVM
---
viostor/virtio_stor.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/viostor/virtio_stor.c b/viostor/virtio_stor.c
index 109309f..d528ca9 100644
--- a/viostor/virtio_stor.c
+++ b/viostor/virtio_stor.c
@@ -220,10 +220,18 @@ VirtIoFindAdapter(
accessRange->RangeStart.QuadPart +
accessRange->RangeLength));
- if (IO_PORT_LENGTH != accessRange->RangeLength) {
+ if ( accessRange->RangeLength < IO_PORT_LENGTH) {
+ ScsiPortLogError(DeviceExtension,
+ NULL,
+ 0,
+ 0,
+ 0,
+ SP_INTERNAL_ADAPTER_ERROR,
+ __LINE__);
RhelDbgPrint(TRACE_LEVEL_FATAL, ("Wrong access range %x bytes\n", accessRange->RangeLength));
return SP_RETURN_NOT_FOUND;
}
+
if (!ScsiPortValidateRange(DeviceExtension,
ConfigInfo->AdapterInterfaceType,
ConfigInfo->SystemIoBusNumber,
--
1.5.5.1
next prev parent reply other threads:[~2009-09-06 12:49 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-01 9:44 [PATCH] KVM: Use thread debug register storage instead of kvm specific data Avi Kivity
2009-09-01 9:47 ` Avi Kivity
2009-09-01 18:12 ` Andrew Theurer
2009-09-01 18:23 ` Avi Kivity
2009-09-04 14:48 ` Andrew Theurer
2009-09-04 15:30 ` Brian Jackson
2009-09-04 16:08 ` Andrew Theurer
2009-09-04 17:04 ` Brian Jackson
2009-09-05 11:34 ` Vadim Rozenfeld
2009-09-06 12:49 ` Yan Vugenfirer [this message]
2009-09-06 8:21 ` Avi Kivity
2009-09-01 10:42 ` Jan Kiszka
2009-09-01 11:08 ` Jan Kiszka
2009-09-01 11:16 ` Avi Kivity
2009-09-01 11:21 ` Avi Kivity
2009-09-01 13:31 ` Jan Kiszka
2009-09-01 13:39 ` Avi Kivity
2009-09-01 11:22 ` Marcelo Tosatti
2009-09-01 11:28 ` Jan Kiszka
2009-09-01 11:32 ` Marcelo Tosatti
2009-09-01 11:35 ` Avi Kivity
2009-09-01 11:33 ` Jan Kiszka
2009-09-01 11:43 ` Avi Kivity
2009-09-01 11:45 ` Jan Kiszka
2009-09-01 11:56 ` Avi Kivity
2009-09-01 12:01 ` Jan Kiszka
2009-09-01 12:02 ` Avi Kivity
2009-09-01 12:27 ` Avi Kivity
2009-09-01 11:34 ` Avi Kivity
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='00fa01ca2ef0$821a7080$864f5180$@com' \
--to=yvugenfi@redhat.com \
--cc=habanero@linux.vnet.ibm.com \
--cc=iggy@theiggy.com \
--cc=kvm@vger.kernel.org \
--cc=vrozenfe@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox