From: Anthony Liguori <anthony@codemonkey.ws>
To: Rusty Russell <rusty@rustcorp.com.au>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access
Date: Fri, 09 Aug 2013 09:10:26 -0500 [thread overview]
Message-ID: <8761vflzu5.fsf@codemonkey.ws> (raw)
In-Reply-To: <87ob97nz7x.fsf@rustcorp.com.au>
Rusty Russell <rusty@rustcorp.com.au> writes:
> Anthony Liguori <anthony@codemonkey.ws> writes:
>> I suspect this is a premature optimization. With a weak function called
>> directly in the accessors below, I suspect you would see no measurable
>> performance overhead compared to this approach.
>>
>> It's all very predictable so the CPU should do a decent job optimizing
>> the if () away.
>
> Perhaps. I was leery of introducing performance regressions, but the
> actual I/O tends to dominate anyway.
>
> So I tested this, by adding the patch (below) and benchmarking
> qemu-system-i386 on my laptop before and after.
>
> Setup: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
> (Performance cpu governer enabled)
> Guest: virtio user net, virtio block on raw file, 1 CPU, 512MB RAM.
> (Qemu run under eatmydata to eliminate syncs)
FYI, cache=unsafe is equivalent to using eatmydata.
> First test: ping -f -c 10000 -q 10.0.2.0 (100 times)
> (Ping chosen since packets stay in qemu's user net code)
>
> BEFORE:
> MIN: 824ms
> MAX: 914ms
> AVG: 876.95ms
> STDDEV: 16ms
>
> AFTER:
> MIN: 872ms
> MAX: 933ms
> AVG: 904.35ms
> STDDEV: 15ms
I can reproduce this although I also see a larger standard deviation.
BEFORE:
MIN: 496
MAX: 1055
AVG: 873.22
STDEV: 136.88
AFTER:
MIN: 494
MAX: 1456
AVG: 947.77
STDEV: 150.89
In my datasets, the stdev is higher in the after case implying that
there is more variation. Indeed, the MIN is pretty much the same.
GCC is inlining the functions, I'm still surprised that it's measurable
at all.
At any rate, I think the advantage of not increasing the amount of
target specific code outweighs the performance difference here. As you
said, if there is real I/O, the differences isn't noticable.
Regards,
Anthony Liguori
next prev parent reply other threads:[~2013-08-09 14:10 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-08 5:15 [Qemu-devel] [PATCH 0/7] Virtio support for endian-curious guests Rusty Russell
2013-08-08 5:15 ` [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access Rusty Russell
2013-08-08 13:31 ` Anthony Liguori
2013-08-08 14:28 ` Andreas Färber
2013-08-08 15:40 ` Anthony Liguori
2013-08-08 15:45 ` Daniel P. Berrange
2013-08-08 16:07 ` Anthony Liguori
2013-08-08 16:14 ` Peter Maydell
2013-08-08 16:25 ` Anthony Liguori
2013-08-08 16:30 ` Peter Maydell
2013-08-09 2:58 ` Rusty Russell
2013-08-09 4:39 ` Anton Blanchard
2013-08-09 8:05 ` Peter Maydell
2013-08-09 14:16 ` Anthony Liguori
2013-08-08 15:48 ` Peter Maydell
2013-08-08 16:11 ` Anthony Liguori
2013-08-08 16:24 ` Andreas Färber
2013-08-09 7:35 ` Rusty Russell
2013-08-09 7:42 ` Peter Maydell
2013-08-12 7:49 ` Rusty Russell
2013-08-09 7:49 ` Benjamin Herrenschmidt
2013-08-12 0:28 ` Rusty Russell
2013-08-12 0:49 ` Benjamin Herrenschmidt
2013-08-09 15:15 ` Andreas Färber
2013-08-09 0:08 ` Rusty Russell
2013-08-09 7:00 ` Rusty Russell
2013-08-09 14:24 ` Andreas Färber
2013-08-09 6:40 ` Rusty Russell
2013-08-09 14:10 ` Anthony Liguori [this message]
2013-08-11 23:46 ` Rusty Russell
2013-08-08 5:15 ` [Qemu-devel] [PATCH 2/7] target-ppc: ppc64 targets can be either endian Rusty Russell
2013-08-08 5:15 ` [Qemu-devel] [PATCH 3/7] hw/net/virtio-net: use virtio wrappers to access headers Rusty Russell
2013-08-08 13:32 ` Anthony Liguori
2013-08-08 5:15 ` [Qemu-devel] [PATCH 4/7] hw/net/virtio-balloon: use virtio wrappers to access page frame numbers Rusty Russell
2013-08-08 13:32 ` Anthony Liguori
2013-08-08 5:15 ` [Qemu-devel] [PATCH 5/7] hw/block/virtio-blk: use virtio wrappers to access headers Rusty Russell
2013-08-08 9:57 ` Peter Maydell
2013-08-08 13:32 ` Anthony Liguori
2013-08-08 5:15 ` [Qemu-devel] [PATCH 6/7] hw/scsi/virtio-scsi: " Rusty Russell
2013-08-08 13:33 ` Anthony Liguori
2013-08-08 5:15 ` [Qemu-devel] [PATCH 7/7] hw/char/virtio-serial-bus: " Rusty Russell
2013-08-08 13:34 ` Anthony Liguori
2013-08-08 5:15 ` [Qemu-devel] [PATCH 7/7] patch virtio-serial-biendian.patch Rusty Russell
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=8761vflzu5.fsf@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
--cc=rusty@rustcorp.com.au \
/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).