* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-12 5:12 ` Rusty Russell
0 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-12 5:12 UTC (permalink / raw)
To: Amos Kong, Benjamin Herrenschmidt
Cc: Michael S. Tsirkin, Ohad Ben-Cohen, virtualization, kvm,
linux-kernel, linux-arm-kernel
On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
> > On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
> >
> >> Forwarding some results by Amos, who run multiple netperf streams in
> >> parallel, from an external box to the guest. TCP_STREAM results were
> >> noisy. This could be due to buffering done by TCP, where packet size
> >> varies even as message size is constant.
> >>
> >> TCP_RR results were consistent. In this benchmark, after switching
> >> to mandatory barriers, CPU utilization increased by up to 35% while
> >> throughput went down by up to 14%. the normalized throughput/cpu
> >> regressed consistently, between 7 and 35%
> >>
> >> The "fix" applied was simply this:
> >
> > What machine& processor was this ?
>
> pined guest memory to numa node 1
Please try this patch. How much does the branch cost us?
(Compiles, untested).
Thanks,
Rusty.
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch costs us???
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-12 5:12 ` Rusty Russell
0 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-12 5:12 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
> > On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
> >
> >> Forwarding some results by Amos, who run multiple netperf streams in
> >> parallel, from an external box to the guest. TCP_STREAM results were
> >> noisy. This could be due to buffering done by TCP, where packet size
> >> varies even as message size is constant.
> >>
> >> TCP_RR results were consistent. In this benchmark, after switching
> >> to mandatory barriers, CPU utilization increased by up to 35% while
> >> throughput went down by up to 14%. the normalized throughput/cpu
> >> regressed consistently, between 7 and 35%
> >>
> >> The "fix" applied was simply this:
> >
> > What machine& processor was this ?
>
> pined guest memory to numa node 1
Please try this patch. How much does the branch cost us?
(Compiles, untested).
Thanks,
Rusty.
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch costs us???
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
2011-12-12 5:12 ` Rusty Russell
(?)
@ 2011-12-12 23:56 ` Amos Kong
-1 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-12 23:56 UTC (permalink / raw)
To: Rusty Russell
Cc: kvm, Michael S. Tsirkin, Benjamin Herrenschmidt, linux-kernel,
virtualization, linux-arm-kernel
On 12/12/2011 01:12 PM, Rusty Russell wrote:
> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>
>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>> varies even as message size is constant.
>>>>
>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>> regressed consistently, between 7 and 35%
>>>>
>>>> The "fix" applied was simply this:
>>>
>>> What machine& processor was this ?
>>
>> pined guest memory to numa node 1
>
> Please try this patch. How much does the branch cost us?
Ok, I will provide the result later.
Thanks,
Amos
> (Compiles, untested).
>
> Thanks,
> Rusty.
>
> From: Rusty Russell <rusty@rustcorp.com.au>
> Subject: virtio: harsher barriers for virtio-mmio.
>
> We were cheating with our barriers; using the smp ones rather than the
> real device ones. That was fine, until virtio-mmio came along, which
> could be talking to a real device (a non-SMP CPU).
>
> Unfortunately, just putting back the real barriers (reverting
> d57ed95d) causes a performance regression on virtio-pci. In
> particular, Amos reports netbench's TCP_RR over virtio_net CPU
> utilization increased up to 35% while throughput went down by up to
> 14%.
>
> By comparison, this branch costs us???
>
> Reference: https://lkml.org/lkml/2011/12/11/22
>
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> ---
> drivers/lguest/lguest_device.c | 10 ++++++----
> drivers/s390/kvm/kvm_virtio.c | 2 +-
> drivers/virtio/virtio_mmio.c | 7 ++++---
> drivers/virtio/virtio_pci.c | 4 ++--
> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
> include/linux/virtio_ring.h | 1 +
> tools/virtio/linux/virtio.h | 1 +
> tools/virtio/virtio_test.c | 3 ++-
> 8 files changed, 38 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
> --- a/drivers/lguest/lguest_device.c
> +++ b/drivers/lguest/lguest_device.c
> @@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
> }
>
> /*
> - * OK, tell virtio_ring.c to set up a virtqueue now we know its size
> - * and we've got a pointer to its pages.
> + * OK, tell virtio_ring.c to set up a virtqueue now we know its size
> + * and we've got a pointer to its pages. Note that we set weak_barriers
> + * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
> + * barriers.
> */
> - vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
> - vdev, lvq->pages, lg_notify, callback, name);
> + vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
> + true, lvq->pages, lg_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto unmap;
> diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
> --- a/drivers/s390/kvm/kvm_virtio.c
> +++ b/drivers/s390/kvm/kvm_virtio.c
> @@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
> goto out;
>
> vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
> - vdev, (void *) config->address,
> + vdev, true, (void *) config->address,
> kvm_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
> writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
> vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
>
> - /* Create the vring */
> - vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
> - vdev, info->queue, vm_notify, callback, name);
> + /* Create the vring: no weak barriers, the other side is could
> + * be an independent "device". */
> + vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
> + false, info->queue, vm_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto error_new_virtqueue;
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
> vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
>
> /* create the vring */
> - vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
> - vdev, info->queue, vp_notify, callback, name);
> + vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
> + true, info->queue, vp_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto out_activate_queue;
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -28,17 +28,20 @@
> #ifdef CONFIG_SMP
> /* Where possible, use SMP barriers which are more lightweight than mandatory
> * barriers, because mandatory barriers control MMIO effects on accesses
> - * through relaxed memory I/O windows (which virtio does not use). */
> -#define virtio_mb() smp_mb()
> -#define virtio_rmb() smp_rmb()
> -#define virtio_wmb() smp_wmb()
> + * through relaxed memory I/O windows (which virtio-pci does not use). */
> +#define virtio_mb(vq) \
> + do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
> +#define virtio_rmb(vq) \
> + do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
> +#define virtio_wmb(vq) \
> + do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
> #else
> /* We must force memory ordering even if guest is UP since host could be
> * running on another CPU, but SMP barriers are defined to barrier() in that
> * configuration. So fall back to mandatory barriers instead. */
> -#define virtio_mb() mb()
> -#define virtio_rmb() rmb()
> -#define virtio_wmb() wmb()
> +#define virtio_mb(vq) mb()
> +#define virtio_rmb(vq) rmb()
> +#define virtio_wmb(vq) wmb()
> #endif
>
> #ifdef DEBUG
> @@ -77,6 +80,9 @@ struct vring_virtqueue
> /* Actual memory layout for this queue */
> struct vring vring;
>
> + /* Can we use weak barriers? */
> + bool weak_barriers;
> +
> /* Other side has made a mess, don't try any more. */
> bool broken;
>
> @@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
> START_USE(vq);
> /* Descriptors and available array need to be set before we expose the
> * new available array entries. */
> - virtio_wmb();
> + virtio_wmb(vq);
>
> old = vq->vring.avail->idx;
> new = vq->vring.avail->idx = old + vq->num_added;
> vq->num_added = 0;
>
> /* Need to update avail index before checking if we should notify */
> - virtio_mb();
> + virtio_mb(vq);
>
> if (vq->event ?
> vring_need_event(vring_avail_event(&vq->vring), new, old) :
> @@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
> }
>
> /* Only get used array entries after they have been exposed by host. */
> - virtio_rmb();
> + virtio_rmb(vq);
>
> i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
> *len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
> @@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
> * the read in the next get_buf call. */
> if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
> vring_used_event(&vq->vring) = vq->last_used_idx;
> - virtio_mb();
> + virtio_mb(vq);
> }
>
> END_USE(vq);
> @@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
> * entry. Always do both to keep code simple. */
> vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
> vring_used_event(&vq->vring) = vq->last_used_idx;
> - virtio_mb();
> + virtio_mb(vq);
> if (unlikely(more_used(vq))) {
> END_USE(vq);
> return false;
> @@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
> /* TODO: tune this threshold */
> bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
> vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
> - virtio_mb();
> + virtio_mb(vq);
> if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
> END_USE(vq);
> return false;
> @@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *),
> void (*callback)(struct virtqueue *),
> @@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
> vq->vq.vdev = vdev;
> vq->vq.name = name;
> vq->notify = notify;
> + vq->weak_barriers = weak_barriers;
> vq->broken = false;
> vq->last_used_idx = 0;
> vq->num_added = 0;
> diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
> --- a/include/linux/virtio_ring.h
> +++ b/include/linux/virtio_ring.h
> @@ -168,6 +168,7 @@ struct virtqueue;
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *vq),
> void (*callback)(struct virtqueue *vq),
> diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
> --- a/tools/virtio/linux/virtio.h
> +++ b/tools/virtio/linux/virtio.h
> @@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *vq),
> void (*callback)(struct virtqueue *vq),
> diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
> --- a/tools/virtio/virtio_test.c
> +++ b/tools/virtio/virtio_test.c
> @@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
> assert(r >= 0);
> memset(info->ring, 0, vring_size(num, 4096));
> vring_init(&info->vring, num, info->ring, 4096);
> - info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
> + info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
> + true, info->ring,
> vq_notify, vq_callback, "test");
> assert(info->vq);
> info->vq->priv = info;
> --
> 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
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-12 23:56 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-12 23:56 UTC (permalink / raw)
To: Rusty Russell
Cc: Benjamin Herrenschmidt, Michael S. Tsirkin, Ohad Ben-Cohen,
virtualization, kvm, linux-kernel, linux-arm-kernel
On 12/12/2011 01:12 PM, Rusty Russell wrote:
> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>
>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>> varies even as message size is constant.
>>>>
>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>> regressed consistently, between 7 and 35%
>>>>
>>>> The "fix" applied was simply this:
>>>
>>> What machine& processor was this ?
>>
>> pined guest memory to numa node 1
>
> Please try this patch. How much does the branch cost us?
Ok, I will provide the result later.
Thanks,
Amos
> (Compiles, untested).
>
> Thanks,
> Rusty.
>
> From: Rusty Russell <rusty@rustcorp.com.au>
> Subject: virtio: harsher barriers for virtio-mmio.
>
> We were cheating with our barriers; using the smp ones rather than the
> real device ones. That was fine, until virtio-mmio came along, which
> could be talking to a real device (a non-SMP CPU).
>
> Unfortunately, just putting back the real barriers (reverting
> d57ed95d) causes a performance regression on virtio-pci. In
> particular, Amos reports netbench's TCP_RR over virtio_net CPU
> utilization increased up to 35% while throughput went down by up to
> 14%.
>
> By comparison, this branch costs us???
>
> Reference: https://lkml.org/lkml/2011/12/11/22
>
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> ---
> drivers/lguest/lguest_device.c | 10 ++++++----
> drivers/s390/kvm/kvm_virtio.c | 2 +-
> drivers/virtio/virtio_mmio.c | 7 ++++---
> drivers/virtio/virtio_pci.c | 4 ++--
> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
> include/linux/virtio_ring.h | 1 +
> tools/virtio/linux/virtio.h | 1 +
> tools/virtio/virtio_test.c | 3 ++-
> 8 files changed, 38 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
> --- a/drivers/lguest/lguest_device.c
> +++ b/drivers/lguest/lguest_device.c
> @@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
> }
>
> /*
> - * OK, tell virtio_ring.c to set up a virtqueue now we know its size
> - * and we've got a pointer to its pages.
> + * OK, tell virtio_ring.c to set up a virtqueue now we know its size
> + * and we've got a pointer to its pages. Note that we set weak_barriers
> + * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
> + * barriers.
> */
> - vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
> - vdev, lvq->pages, lg_notify, callback, name);
> + vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
> + true, lvq->pages, lg_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto unmap;
> diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
> --- a/drivers/s390/kvm/kvm_virtio.c
> +++ b/drivers/s390/kvm/kvm_virtio.c
> @@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
> goto out;
>
> vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
> - vdev, (void *) config->address,
> + vdev, true, (void *) config->address,
> kvm_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
> writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
> vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
>
> - /* Create the vring */
> - vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
> - vdev, info->queue, vm_notify, callback, name);
> + /* Create the vring: no weak barriers, the other side is could
> + * be an independent "device". */
> + vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
> + false, info->queue, vm_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto error_new_virtqueue;
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
> vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
>
> /* create the vring */
> - vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
> - vdev, info->queue, vp_notify, callback, name);
> + vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
> + true, info->queue, vp_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto out_activate_queue;
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -28,17 +28,20 @@
> #ifdef CONFIG_SMP
> /* Where possible, use SMP barriers which are more lightweight than mandatory
> * barriers, because mandatory barriers control MMIO effects on accesses
> - * through relaxed memory I/O windows (which virtio does not use). */
> -#define virtio_mb() smp_mb()
> -#define virtio_rmb() smp_rmb()
> -#define virtio_wmb() smp_wmb()
> + * through relaxed memory I/O windows (which virtio-pci does not use). */
> +#define virtio_mb(vq) \
> + do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
> +#define virtio_rmb(vq) \
> + do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
> +#define virtio_wmb(vq) \
> + do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
> #else
> /* We must force memory ordering even if guest is UP since host could be
> * running on another CPU, but SMP barriers are defined to barrier() in that
> * configuration. So fall back to mandatory barriers instead. */
> -#define virtio_mb() mb()
> -#define virtio_rmb() rmb()
> -#define virtio_wmb() wmb()
> +#define virtio_mb(vq) mb()
> +#define virtio_rmb(vq) rmb()
> +#define virtio_wmb(vq) wmb()
> #endif
>
> #ifdef DEBUG
> @@ -77,6 +80,9 @@ struct vring_virtqueue
> /* Actual memory layout for this queue */
> struct vring vring;
>
> + /* Can we use weak barriers? */
> + bool weak_barriers;
> +
> /* Other side has made a mess, don't try any more. */
> bool broken;
>
> @@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
> START_USE(vq);
> /* Descriptors and available array need to be set before we expose the
> * new available array entries. */
> - virtio_wmb();
> + virtio_wmb(vq);
>
> old = vq->vring.avail->idx;
> new = vq->vring.avail->idx = old + vq->num_added;
> vq->num_added = 0;
>
> /* Need to update avail index before checking if we should notify */
> - virtio_mb();
> + virtio_mb(vq);
>
> if (vq->event ?
> vring_need_event(vring_avail_event(&vq->vring), new, old) :
> @@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
> }
>
> /* Only get used array entries after they have been exposed by host. */
> - virtio_rmb();
> + virtio_rmb(vq);
>
> i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
> *len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
> @@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
> * the read in the next get_buf call. */
> if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
> vring_used_event(&vq->vring) = vq->last_used_idx;
> - virtio_mb();
> + virtio_mb(vq);
> }
>
> END_USE(vq);
> @@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
> * entry. Always do both to keep code simple. */
> vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
> vring_used_event(&vq->vring) = vq->last_used_idx;
> - virtio_mb();
> + virtio_mb(vq);
> if (unlikely(more_used(vq))) {
> END_USE(vq);
> return false;
> @@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
> /* TODO: tune this threshold */
> bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
> vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
> - virtio_mb();
> + virtio_mb(vq);
> if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
> END_USE(vq);
> return false;
> @@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *),
> void (*callback)(struct virtqueue *),
> @@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
> vq->vq.vdev = vdev;
> vq->vq.name = name;
> vq->notify = notify;
> + vq->weak_barriers = weak_barriers;
> vq->broken = false;
> vq->last_used_idx = 0;
> vq->num_added = 0;
> diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
> --- a/include/linux/virtio_ring.h
> +++ b/include/linux/virtio_ring.h
> @@ -168,6 +168,7 @@ struct virtqueue;
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *vq),
> void (*callback)(struct virtqueue *vq),
> diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
> --- a/tools/virtio/linux/virtio.h
> +++ b/tools/virtio/linux/virtio.h
> @@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *vq),
> void (*callback)(struct virtqueue *vq),
> diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
> --- a/tools/virtio/virtio_test.c
> +++ b/tools/virtio/virtio_test.c
> @@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
> assert(r >= 0);
> memset(info->ring, 0, vring_size(num, 4096));
> vring_init(&info->vring, num, info->ring, 4096);
> - info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
> + info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
> + true, info->ring,
> vq_notify, vq_callback, "test");
> assert(info->vq);
> info->vq->priv = info;
> --
> 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
^ permalink raw reply [flat|nested] 111+ messages in thread* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-12 23:56 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-12 23:56 UTC (permalink / raw)
To: linux-arm-kernel
On 12/12/2011 01:12 PM, Rusty Russell wrote:
> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>
>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>> varies even as message size is constant.
>>>>
>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>> regressed consistently, between 7 and 35%
>>>>
>>>> The "fix" applied was simply this:
>>>
>>> What machine& processor was this ?
>>
>> pined guest memory to numa node 1
>
> Please try this patch. How much does the branch cost us?
Ok, I will provide the result later.
Thanks,
Amos
> (Compiles, untested).
>
> Thanks,
> Rusty.
>
> From: Rusty Russell <rusty@rustcorp.com.au>
> Subject: virtio: harsher barriers for virtio-mmio.
>
> We were cheating with our barriers; using the smp ones rather than the
> real device ones. That was fine, until virtio-mmio came along, which
> could be talking to a real device (a non-SMP CPU).
>
> Unfortunately, just putting back the real barriers (reverting
> d57ed95d) causes a performance regression on virtio-pci. In
> particular, Amos reports netbench's TCP_RR over virtio_net CPU
> utilization increased up to 35% while throughput went down by up to
> 14%.
>
> By comparison, this branch costs us???
>
> Reference: https://lkml.org/lkml/2011/12/11/22
>
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> ---
> drivers/lguest/lguest_device.c | 10 ++++++----
> drivers/s390/kvm/kvm_virtio.c | 2 +-
> drivers/virtio/virtio_mmio.c | 7 ++++---
> drivers/virtio/virtio_pci.c | 4 ++--
> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
> include/linux/virtio_ring.h | 1 +
> tools/virtio/linux/virtio.h | 1 +
> tools/virtio/virtio_test.c | 3 ++-
> 8 files changed, 38 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
> --- a/drivers/lguest/lguest_device.c
> +++ b/drivers/lguest/lguest_device.c
> @@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
> }
>
> /*
> - * OK, tell virtio_ring.c to set up a virtqueue now we know its size
> - * and we've got a pointer to its pages.
> + * OK, tell virtio_ring.c to set up a virtqueue now we know its size
> + * and we've got a pointer to its pages. Note that we set weak_barriers
> + * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
> + * barriers.
> */
> - vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
> - vdev, lvq->pages, lg_notify, callback, name);
> + vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
> + true, lvq->pages, lg_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto unmap;
> diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
> --- a/drivers/s390/kvm/kvm_virtio.c
> +++ b/drivers/s390/kvm/kvm_virtio.c
> @@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
> goto out;
>
> vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
> - vdev, (void *) config->address,
> + vdev, true, (void *) config->address,
> kvm_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
> writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
> vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
>
> - /* Create the vring */
> - vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
> - vdev, info->queue, vm_notify, callback, name);
> + /* Create the vring: no weak barriers, the other side is could
> + * be an independent "device". */
> + vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
> + false, info->queue, vm_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto error_new_virtqueue;
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
> vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
>
> /* create the vring */
> - vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
> - vdev, info->queue, vp_notify, callback, name);
> + vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
> + true, info->queue, vp_notify, callback, name);
> if (!vq) {
> err = -ENOMEM;
> goto out_activate_queue;
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -28,17 +28,20 @@
> #ifdef CONFIG_SMP
> /* Where possible, use SMP barriers which are more lightweight than mandatory
> * barriers, because mandatory barriers control MMIO effects on accesses
> - * through relaxed memory I/O windows (which virtio does not use). */
> -#define virtio_mb() smp_mb()
> -#define virtio_rmb() smp_rmb()
> -#define virtio_wmb() smp_wmb()
> + * through relaxed memory I/O windows (which virtio-pci does not use). */
> +#define virtio_mb(vq) \
> + do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
> +#define virtio_rmb(vq) \
> + do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
> +#define virtio_wmb(vq) \
> + do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
> #else
> /* We must force memory ordering even if guest is UP since host could be
> * running on another CPU, but SMP barriers are defined to barrier() in that
> * configuration. So fall back to mandatory barriers instead. */
> -#define virtio_mb() mb()
> -#define virtio_rmb() rmb()
> -#define virtio_wmb() wmb()
> +#define virtio_mb(vq) mb()
> +#define virtio_rmb(vq) rmb()
> +#define virtio_wmb(vq) wmb()
> #endif
>
> #ifdef DEBUG
> @@ -77,6 +80,9 @@ struct vring_virtqueue
> /* Actual memory layout for this queue */
> struct vring vring;
>
> + /* Can we use weak barriers? */
> + bool weak_barriers;
> +
> /* Other side has made a mess, don't try any more. */
> bool broken;
>
> @@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
> START_USE(vq);
> /* Descriptors and available array need to be set before we expose the
> * new available array entries. */
> - virtio_wmb();
> + virtio_wmb(vq);
>
> old = vq->vring.avail->idx;
> new = vq->vring.avail->idx = old + vq->num_added;
> vq->num_added = 0;
>
> /* Need to update avail index before checking if we should notify */
> - virtio_mb();
> + virtio_mb(vq);
>
> if (vq->event ?
> vring_need_event(vring_avail_event(&vq->vring), new, old) :
> @@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
> }
>
> /* Only get used array entries after they have been exposed by host. */
> - virtio_rmb();
> + virtio_rmb(vq);
>
> i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
> *len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
> @@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
> * the read in the next get_buf call. */
> if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
> vring_used_event(&vq->vring) = vq->last_used_idx;
> - virtio_mb();
> + virtio_mb(vq);
> }
>
> END_USE(vq);
> @@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
> * entry. Always do both to keep code simple. */
> vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
> vring_used_event(&vq->vring) = vq->last_used_idx;
> - virtio_mb();
> + virtio_mb(vq);
> if (unlikely(more_used(vq))) {
> END_USE(vq);
> return false;
> @@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
> /* TODO: tune this threshold */
> bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
> vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
> - virtio_mb();
> + virtio_mb(vq);
> if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
> END_USE(vq);
> return false;
> @@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *),
> void (*callback)(struct virtqueue *),
> @@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
> vq->vq.vdev = vdev;
> vq->vq.name = name;
> vq->notify = notify;
> + vq->weak_barriers = weak_barriers;
> vq->broken = false;
> vq->last_used_idx = 0;
> vq->num_added = 0;
> diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
> --- a/include/linux/virtio_ring.h
> +++ b/include/linux/virtio_ring.h
> @@ -168,6 +168,7 @@ struct virtqueue;
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *vq),
> void (*callback)(struct virtqueue *vq),
> diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
> --- a/tools/virtio/linux/virtio.h
> +++ b/tools/virtio/linux/virtio.h
> @@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
> struct virtqueue *vring_new_virtqueue(unsigned int num,
> unsigned int vring_align,
> struct virtio_device *vdev,
> + bool weak_barriers,
> void *pages,
> void (*notify)(struct virtqueue *vq),
> void (*callback)(struct virtqueue *vq),
> diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
> --- a/tools/virtio/virtio_test.c
> +++ b/tools/virtio/virtio_test.c
> @@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
> assert(r >= 0);
> memset(info->ring, 0, vring_size(num, 4096));
> vring_init(&info->vring, num, info->ring, 4096);
> - info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
> + info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
> + true, info->ring,
> vq_notify, vq_callback, "test");
> assert(info->vq);
> info->vq->priv = info;
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
2011-12-12 23:56 ` Amos Kong
(?)
@ 2011-12-19 2:35 ` Rusty Russell
-1 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-19 2:35 UTC (permalink / raw)
To: Amos Kong
Cc: kvm, Michael S. Tsirkin, Benjamin Herrenschmidt, linux-kernel,
virtualization, Linus Torvalds, linux-arm-kernel
On Tue, 13 Dec 2011 07:56:36 +0800, Amos Kong <akong@redhat.com> wrote:
> On 12/12/2011 01:12 PM, Rusty Russell wrote:
> > On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
> >> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
> >>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
> >>>
> >>>> Forwarding some results by Amos, who run multiple netperf streams in
> >>>> parallel, from an external box to the guest. TCP_STREAM results were
> >>>> noisy. This could be due to buffering done by TCP, where packet size
> >>>> varies even as message size is constant.
> >>>>
> >>>> TCP_RR results were consistent. In this benchmark, after switching
> >>>> to mandatory barriers, CPU utilization increased by up to 35% while
> >>>> throughput went down by up to 14%. the normalized throughput/cpu
> >>>> regressed consistently, between 7 and 35%
> >>>>
> >>>> The "fix" applied was simply this:
> >>>
> >>> What machine& processor was this ?
> >>
> >> pined guest memory to numa node 1
> >
> > Please try this patch. How much does the branch cost us?
>
> Ok, I will provide the result later.
Any news? We're cutting it very fine. I've CC'd Linus so he knows this
is coming...
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch costs us???
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:35 ` Rusty Russell
0 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-19 2:35 UTC (permalink / raw)
To: Amos Kong
Cc: Benjamin Herrenschmidt, Michael S. Tsirkin, Ohad Ben-Cohen,
virtualization, kvm, linux-kernel, linux-arm-kernel,
Linus Torvalds
On Tue, 13 Dec 2011 07:56:36 +0800, Amos Kong <akong@redhat.com> wrote:
> On 12/12/2011 01:12 PM, Rusty Russell wrote:
> > On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
> >> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
> >>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
> >>>
> >>>> Forwarding some results by Amos, who run multiple netperf streams in
> >>>> parallel, from an external box to the guest. TCP_STREAM results were
> >>>> noisy. This could be due to buffering done by TCP, where packet size
> >>>> varies even as message size is constant.
> >>>>
> >>>> TCP_RR results were consistent. In this benchmark, after switching
> >>>> to mandatory barriers, CPU utilization increased by up to 35% while
> >>>> throughput went down by up to 14%. the normalized throughput/cpu
> >>>> regressed consistently, between 7 and 35%
> >>>>
> >>>> The "fix" applied was simply this:
> >>>
> >>> What machine& processor was this ?
> >>
> >> pined guest memory to numa node 1
> >
> > Please try this patch. How much does the branch cost us?
>
> Ok, I will provide the result later.
Any news? We're cutting it very fine. I've CC'd Linus so he knows this
is coming...
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch costs us???
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:35 ` Rusty Russell
0 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-19 2:35 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, 13 Dec 2011 07:56:36 +0800, Amos Kong <akong@redhat.com> wrote:
> On 12/12/2011 01:12 PM, Rusty Russell wrote:
> > On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong <akong@redhat.com> wrote:
> >> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
> >>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
> >>>
> >>>> Forwarding some results by Amos, who run multiple netperf streams in
> >>>> parallel, from an external box to the guest. TCP_STREAM results were
> >>>> noisy. This could be due to buffering done by TCP, where packet size
> >>>> varies even as message size is constant.
> >>>>
> >>>> TCP_RR results were consistent. In this benchmark, after switching
> >>>> to mandatory barriers, CPU utilization increased by up to 35% while
> >>>> throughput went down by up to 14%. the normalized throughput/cpu
> >>>> regressed consistently, between 7 and 35%
> >>>>
> >>>> The "fix" applied was simply this:
> >>>
> >>> What machine& processor was this ?
> >>
> >> pined guest memory to numa node 1
> >
> > Please try this patch. How much does the branch cost us?
>
> Ok, I will provide the result later.
Any news? We're cutting it very fine. I've CC'd Linus so he knows this
is coming...
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch costs us???
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
2011-12-12 5:12 ` Rusty Russell
(?)
@ 2011-12-19 2:19 ` Amos Kong
-1 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 2:19 UTC (permalink / raw)
To: Rusty Russell
Cc: kvm, Michael S. Tsirkin, Benjamin Herrenschmidt, linux-kernel,
virtualization, rhod, linux-arm-kernel
On 12/12/11 13:12, Rusty Russell wrote:
> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong<akong@redhat.com> wrote:
>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>
>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>> varies even as message size is constant.
>>>>
>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>> regressed consistently, between 7 and 35%
>>>>
>>>> The "fix" applied was simply this:
>>>
>>> What machine& processor was this ?
>>
>> pined guest memory to numa node 1
>
> Please try this patch. How much does the branch cost us?
>
> (Compiles, untested).
>
> Thanks,
> Rusty.
>
> From: Rusty Russell<rusty@rustcorp.com.au>
> Subject: virtio: harsher barriers for virtio-mmio.
>
> We were cheating with our barriers; using the smp ones rather than the
> real device ones. That was fine, until virtio-mmio came along, which
> could be talking to a real device (a non-SMP CPU).
>
> Unfortunately, just putting back the real barriers (reverting
> d57ed95d) causes a performance regression on virtio-pci. In
> particular, Amos reports netbench's TCP_RR over virtio_net CPU
> utilization increased up to 35% while throughput went down by up to
> 14%.
>
> By comparison, this branch costs us???
>
> Reference: https://lkml.org/lkml/2011/12/11/22
>
> Signed-off-by: Rusty Russell<rusty@rustcorp.com.au>
> ---
> drivers/lguest/lguest_device.c | 10 ++++++----
> drivers/s390/kvm/kvm_virtio.c | 2 +-
> drivers/virtio/virtio_mmio.c | 7 ++++---
> drivers/virtio/virtio_pci.c | 4 ++--
> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
> include/linux/virtio_ring.h | 1 +
> tools/virtio/linux/virtio.h | 1 +
> tools/virtio/virtio_test.c | 3 ++-
> 8 files changed, 38 insertions(+), 24 deletions(-)
Hi all,
I tested with the same environment and scenarios.
tested one scenarios for three times and compute the average for more
precision.
Thanks, Amos
--------- compare results -----------
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.exhost_guest.txt
2 - avg-fixed.netperf.exhost_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1073.54| 10.50| 102| 0| 31|
0| 1612| 0| 16| 487641| 489753|
504764| 0.00| 0.00
2 1| 64| 1079.44| 10.29| 104| 0| 30|
0| 1594| 0| 17| 487156| 488828|
504411| 0.00| 0.00
% | 0.0| +0.5| -2.0| +2.0| 0| -3.2|
0| -1.1| 0| +6.2| -0.1| -0.2|
-0.1| 0| 0
1 2| 64| 2141.12| 15.72| 136| 0| 33|
0| 1744| 0| 34| 873777| 972303|
928926| 0.00| 0.00
2 2| 64| 2140.88| 15.64| 137| 0| 33|
0| 1744| 0| 34| 926588| 942841|
974095| 0.00| 0.00
% | 0.0| -0.0| -0.5| +0.7| 0| 0.0|
0| 0.0| 0| 0.0| +6.0| -3.0|
+4.9| 0| 0
1 4| 64| 4076.80| 19.82| 205| 0| 30|
0| 1577| 0| 67| 1422282| 1166425|
1539219| 0.00| 0.00
2 4| 64| 4094.32| 20.70| 197| 0| 31|
0| 1612| 0| 68| 1704330| 1314077|
1833394| 0.00| 0.00
% | 0.0| +0.4| +4.4| -3.9| 0| +3.3|
0| +2.2| 0| +1.5| +19.8| +12.7|
+19.1| 0| 0
1 1| 256| 2867.48| 13.44| 213| 0| 32|
0| 1726| 0| 14| 666430| 694922|
690730| 0.00| 0.00
2 1| 256| 2874.20| 12.71| 226| 0| 32|
0| 1709| 0| 14| 697960| 740407|
721807| 0.00| 0.00
% | 0.0| +0.2| -5.4| +6.1| 0| 0.0|
0| -1.0| 0| 0.0| +4.7| +6.5|
+4.5| 0| 0
1 2| 256| 5642.82| 17.61| 320| 0| 30|
0| 1594| 0| 30| 1226861| 1236081|
1268562| 0.00| 0.00
2 2| 256| 5661.06| 17.41| 326| 0| 30|
0| 1594| 0| 29| 1175696| 1143490|
1221528| 0.00| 0.00
% | 0.0| +0.3| -1.1| +1.9| 0| 0.0|
0| 0.0| 0| -3.3| -4.2| -7.5|
-3.7| 0| 0
1 4| 256| 9404.27| 23.55| 399| 0| 33|
0| 1744| 0| 37| 1692245| 659975|
1765103| 0.00| 0.00
2 4| 256| 8761.11| 23.18| 376| 0| 32|
0| 1726| 0| 36| 1699382| 418992|
1870804| 0.00| 0.00
% | 0.0| -6.8| -1.6| -5.8| 0| -3.0|
0| -1.0| 0| -2.7| +0.4| -36.5|
+6.0| 0| 0
1 1| 512| 3803.66| 14.20| 267| 0| 30|
0| 1594| 0| 14| 693992| 750078|
721107| 0.00| 0.00
2 1| 512| 3838.02| 15.47| 248| 0| 31|
0| 1612| 0| 15| 811709| 773505|
838788| 0.00| 0.00
% | 0.0| +0.9| +8.9| -7.1| 0| +3.3|
0| +1.1| 0| +7.1| +17.0| +3.1|
+16.3| 0| 0
1 2| 512| 8606.11| 19.34| 444| 0| 32|
0| 1709| 0| 29| 1264624| 647652|
1309740| 0.00| 0.00
2 2| 512| 8127.80| 18.93| 428| 0| 32|
0| 1726| 0| 28| 1216606| 1179269|
1266260| 0.00| 0.00
% | 0.0| -5.6| -2.1| -3.6| 0| 0.0|
0| +1.0| 0| -3.4| -3.8| +82.1|
-3.3| 0| 0
1 4| 512| 9409.41| 22.88| 413| 0| 30|
0| 1577| 0| 35| 1592587| 1072862|
1746787| 0.00| 0.00
2 4| 512| 9217.34| 23.05| 400| 0| 30|
0| 1594| 0| 34| 1596515| 513742|
1831538| 0.00| 0.00
% | 0.0| -2.0| +0.7| -3.1| 0| 0.0|
0| +1.1| 0| -2.9| +0.2| -52.1|
+4.9| 0| 0
1 1| 1024| 4389.75| 14.62| 303| 0| 32|
0| 1726| 0| 14| 663417| 611555|
689028| 0.00| 0.00
2 1| 1024| 4390.44| 13.66| 321| 0| 32|
0| 1726| 0| 13| 609836| 556090|
634511| 0.00| 0.00
% | 0.0| +0.0| -6.6| +5.9| 0| 0.0|
0| 0.0| 0| -7.1| -8.1| -9.1|
-7.9| 0| 0
1 2| 1024| 9046.18| 19.63| 460| 0| 30|
0| 1594| 0| 28| 1206853| 1054653|
1256203| 0.00| 0.00
2 2| 1024| 9027.54| 20.15| 447| 0| 30|
0| 1577| 0| 27| 1179555| 884408|
1226843| 0.00| 0.00
% | 0.0| -0.2| +2.6| -2.8| 0| 0.0|
0| -1.1| 0| -3.6| -2.3| -16.1|
-2.3| 0| 0
1 4| 1024| 9410.41| 22.01| 427| 0| 32|
0| 1726| 0| 36| 1734433| 887190|
1852486| 0.00| 0.00
2 4| 1024| 9409.11| 23.18| 405| 0| 32|
0| 1726| 0| 34| 1695359| 625268|
1803599| 0.00| 0.00
% | 0.0| -0.0| +5.3| -5.2| 0| 0.0|
0| 0.0| 0| -5.6| -2.3| -29.5|
-2.6| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1056.13| 17.51| 59| 0| 30|
0| 1594| 3| 86| 476098| 4780186|
538158| 0.00| 0.00
2 1| 64| 1065.51| 17.64| 60| 0| 30|
0| 1594| 3| 87| 476836| 4823602|
538860| 0.00| 0.00
% | 0.0| +0.9| +0.7| +1.7| 0| 0.0|
0| 0.0| 0.0| +1.2| +0.2| +0.9|
+0.1| 0| 0
1 2| 64| 2472.80| 32.18| 76| 0| 32|
0| 1709| 2| 199| 479119| 2089931|
600119| 0.00| 0.00
2 2| 64| 2468.76| 32.28| 76| 0| 33|
0| 1744| 1| 199| 479372| 2179342|
600328| 0.00| 0.00
% | 0.0| -0.2| +0.3| 0.0| 0| +3.1|
0| +2.0| -50.0| 0.0| +0.1| +4.3|
+0.0| 0| 0
1 4| 64| 2453.22| 32.20| 75| 0| 31|
0| 1612| 2| 198| 479223| 2175801|
600081| 0.00| 0.00
2 4| 64| 2465.68| 32.30| 76| 0| 30|
0| 1594| 3| 200| 479404| 2108293|
600252| 0.00| 0.00
% | 0.0| +0.5| +0.3| +1.3| 0| -3.2|
0| -1.1| +50.0| +1.0| +0.0| -3.1|
+0.0| 0| 0
1 1| 256| 3608.37| 24.59| 146| 0| 32|
0| 1726| 2| 277| 88346| 108310|
150637| 0.00| 0.00
2 1| 256| 3611.12| 24.95| 144| 0| 32|
0| 1709| 0| 281| 83319| 64354|
145511| 0.00| 0.00
% | 0.0| +0.1| +1.5| -1.4| 0| 0.0|
0| -1.0| -100.0| +1.4| -5.7| -40.6|
-3.4| 0| 0
1 2| 256| 7373.32| 26.83| 274| 0| 31|
0| 1612| 0| 4185| 278932| 264031|
377267| 0.00| 0.00
2 2| 256| 7460.03| 26.93| 276| 0| 30|
0| 1594| 1| 5913| 270840| 246165|
371999| 0.00| 0.00
% | 0.0| +1.2| +0.4| +0.7| 0| -3.2|
0| -1.1| 0| +41.3| -2.9| -6.8|
-1.4| 0| 0
1 4| 256| 9322.66| 29.73| 313| 0| 32|
0| 1709| 848| 3041| 363114| 329308|
482586| 0.00| 0.00
2 4| 256| 9365.52| 29.59| 316| 0| 33|
0| 1744| 414| 2884| 371485| 339191|
491366| 0.00| 0.00
% | 0.0| +0.5| -0.5| +1.0| 0| +3.1|
0| +2.0| -51.2| -5.2| +2.3| +3.0|
+1.8| 0| 0
1 1| 512| 9360.25| 17.20| 543| 0| 30|
0| 1577| 0| 387| 438621| 408062|
499989| 0.00| 0.00
2 1| 512| 8899.37| 18.17| 495| 0| 30|
0| 1594| 0| 5049| 393341| 371545|
459397| 0.00| 0.00
% | 0.0| -4.9| +5.6| -8.8| 0| 0.0|
0| +1.1| 0| +1204.7| -10.3| -8.9|
-8.1| 0| 0
1 2| 512| 8713.11| 20.77| 420| 0| 32|
0| 1726| 0| 11227| 296157| 246495|
371632| 0.00| 0.00
2 2| 512| 8686.31| 20.72| 421| 0| 32|
0| 1709| 0| 11002| 296608| 246597|
371797| 0.00| 0.00
% | 0.0| -0.3| -0.2| +0.2| 0| 0.0|
0| -1.0| 0| -2.0| +0.2| +0.0|
+0.0| 0| 0
1 4| 512| 8780.40| 22.72| 386| 0| 30|
0| 1594| 0| 10337| 303619| 249822|
385457| 0.00| 0.00
2 4| 512| 8858.51| 22.66| 390| 0| 30|
0| 1577| 0| 9968| 301847| 246543|
382121| 0.00| 0.00
% | 0.0| +0.9| -0.3| +1.0| 0| 0.0|
0| -1.1| 0| -3.6| -0.6| -1.3|
-0.9| 0| 0
1 1| 1024| 9387.09| 16.43| 571| 0| 32|
0| 1726| 0| 84| 452351| 429483|
504022| 0.00| 0.00
2 1| 1024| 9388.90| 16.51| 568| 0| 32|
0| 1726| 2| 76| 446994| 422489|
499025| 0.00| 0.00
% | 0.0| +0.0| +0.5| -0.5| 0| 0.0|
0| 0.0| 0| -9.5| -1.2| -1.6|
-1.0| 0| 0
1 2| 1024| 9361.43| 17.26| 542| 0| 30|
0| 1594| 5| 647| 388626| 358303|
442125| 0.00| 0.00
2 2| 1024| 9364.78| 17.25| 542| 0| 31|
0| 1612| 35| 554| 389326| 360169|
442343| 0.00| 0.00
% | 0.0| +0.0| -0.1| 0.0| 0| +3.3|
0| +1.1| +600.0| -14.4| +0.2| +0.5|
+0.0| 0| 0
1 4| 1024| 9381.57| 18.35| 510| 0| 32|
0| 1726| 1189| 648| 405900| 376269|
459845| 0.00| 0.00
2 4| 1024| 9393.48| 18.27| 513| 0| 32|
0| 1726| 1754| 610| 402132| 373768|
455629| 0.00| 0.00
% | 0.0| +0.1| -0.4| +0.6| 0| 0.0|
0| 0.0| +47.5| -5.9| -0.9| -0.7|
-0.9| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 10903.70| 8.03| 1382| 0| 32|
0| 1698| 0| 9| 654298| 654362|
665532| 0.00| 0.00
2 50| 64| 10880.50| 7.40| 1488| 0| 32|
0| 1698| 0| 10| 652907| 652973|
667042| 0.00| 0.00
% | 0.0| -0.2| -7.8| +7.7| 0| 0.0|
0| 0.0| 0| +11.1| -0.2| -0.2|
+0.2| 0| 0
1 100| 64| 10953.00| 8.40| 1332| 0| 34|
0| 1830| 0| 10| 657257| 657325|
667088| 0.00| 0.00
2 100| 64| 10882.78| 7.67| 1439| 0| 34|
0| 1830| 0| 9| 653044| 653110|
668883| 0.00| 0.00
% | 0.0| -0.6| -8.7| +8.0| 0| 0.0|
0| 0.0| 0| -10.0| -0.6| -0.6|
+0.3| 0| 0
1 250| 64| 10902.66| 8.57| 1300| 0| 33|
0| 1716| 0| 10| 654235| 654308|
665518| 0.00| 0.00
2 250| 64| 10866.79| 7.58| 1449| 0| 32|
0| 1664| 0| 10| 652083| 652155|
666869| 0.00| 0.00
% | 0.0| -0.3| -11.6| +11.5| 0| -3.0|
0| -3.0| 0| 0.0| -0.3| -0.3|
+0.2| 0| 0
1 500| 64| 10924.34| 7.25| 1509| 0| 34|
0| 1830| 0| 10| 655536| 655619|
665776| 0.00| 0.00
2 500| 64| 10927.52| 6.50| 1684| 0| 34|
0| 1813| 0| 10| 655726| 655803|
668527| 0.00| 0.00
% | 0.0| +0.0| -10.3| +11.6| 0| 0.0|
0| -0.9| 0| 0.0| +0.0| +0.0|
+0.4| 0| 0
1 50| 256| 10407.35| 9.38| 1112| 0| 32|
0| 1681| 0| 9| 624516| 624581|
639159| 0.00| 0.00
2 50| 256| 10422.60| 9.45| 1108| 0| 33|
0| 1716| 0| 9| 625432| 625498|
641343| 0.00| 0.00
% | 0.0| +0.1| +0.7| -0.4| 0| +3.1|
0| +2.1| 0| 0.0| +0.1| +0.1|
+0.3| 0| 0
1 100| 256| 10404.30| 8.99| 1159| 0| 34|
0| 1830| 0| 9| 624335| 624400|
637357| 0.00| 0.00
2 100| 256| 10442.84| 9.57| 1093| 0| 35|
0| 1848| 0| 9| 626650| 626714|
639017| 0.00| 0.00
% | 0.0| +0.4| +6.5| -5.7| 0| +2.9|
0| +1.0| 0| 0.0| +0.4| +0.4|
+0.3| 0| 0
1 250| 256| 10427.71| 9.10| 1157| 0| 32|
0| 1698| 0| 9| 625738| 625822|
641221| 0.00| 0.00
2 250| 256| 10464.71| 9.69| 1085| 0| 32|
0| 1698| 0| 9| 627960| 628040|
640680| 0.00| 0.00
% | 0.0| +0.4| +6.5| -6.2| 0| 0.0|
0| 0.0| 0| 0.0| +0.4| +0.4|
-0.1| 0| 0
1 500| 256| 10442.18| 8.65| 1217| 0| 34|
0| 1830| 0| 10| 626608| 626675|
640081| 0.00| 0.00
2 500| 256| 10463.74| 9.63| 1089| 0| 34|
0| 1813| 0| 9| 627904| 627967|
643152| 0.00| 0.00
% | 0.0| +0.2| +11.3| -10.5| 0| 0.0|
0| -0.9| 0| -10.0| +0.2| +0.2|
+0.5| 0| 0
1 50| 512| 8505.70| 7.20| 1191| 0| 33|
0| 1716| 0| 7| 510418| 510486|
524904| 0.00| 0.00
2 50| 512| 8563.34| 7.24| 1185| 0| 32|
0| 1664| 0| 8| 513877| 513940|
526294| 0.00| 0.00
% | 0.0| +0.7| +0.6| -0.5| 0| -3.0|
0| -3.0| 0| +14.3| +0.7| +0.7|
+0.3| 0| 0
1 100| 512| 8509.97| 7.00| 1226| 0| 34|
0| 1830| 0| 7| 510674| 510756|
525205| 0.00| 0.00
2 100| 512| 8555.22| 7.52| 1144| 0| 34|
0| 1830| 0| 7| 513389| 513471|
526609| 0.00| 0.00
% | 0.0| +0.5| +7.4| -6.7| 0| 0.0|
0| 0.0| 0| 0.0| +0.5| +0.5|
+0.3| 0| 0
1 250| 512| 8507.35| 7.21| 1183| 0| 32|
0| 1681| 0| 7| 510518| 510579|
524294| 0.00| 0.00
2 250| 512| 8578.13| 7.01| 1223| 0| 33|
0| 1716| 0| 8| 514765| 514829|
526481| 0.00| 0.00
% | 0.0| +0.8| -2.8| +3.4| 0| +3.1|
0| +2.1| 0| +14.3| +0.8| +0.8|
+0.4| 0| 0
1 500| 512| 8521.68| 6.54| 1302| 0| 34|
0| 1813| 0| 8| 511375| 511443|
523357| 0.00| 0.00
2 500| 512| 8573.17| 6.94| 1235| 0| 34|
0| 1830| 0| 7| 514467| 514533|
526131| 0.00| 0.00
% | 0.0| +0.6| +6.1| -5.1| 0| 0.0|
0| +0.9| 0| -12.5| +0.6| +0.6|
+0.5| 0| 0
1 50| 1024| 8150.01| 7.69| 1060| 0| 32|
0| 1681| 0| 7| 489075| 489155|
503136| 0.00| 0.00
2 50| 1024| 8129.35| 7.65| 1062| 0| 34|
0| 1804| 0| 7| 487841| 487915|
502061| 0.00| 0.00
% | 0.0| -0.3| -0.5| +0.2| 0| +6.2|
0| +7.3| 0| 0.0| -0.3| -0.3|
-0.2| 0| 0
1 100| 1024| 8166.06| 7.53| 1083| 0| 34|
0| 1804| 0| 7| 490039| 490104|
502990| 0.00| 0.00
2 100| 1024| 8118.23| 7.77| 1044| 0| 33|
0| 1725| 0| 7| 487171| 487236|
501939| 0.00| 0.00
% | 0.0| -0.6| +3.2| -3.6| 0| -2.9|
0| -4.4| 0| 0.0| -0.6| -0.6|
-0.2| 0| 0
1 250| 1024| 8175.35| 7.58| 1079| 0| 35|
0| 1848| 0| 7| 490597| 490657|
503641| 0.00| 0.00
2 250| 1024| 8146.63| 7.59| 1072| 0| 34|
0| 1813| 0| 7| 488874| 488939|
502010| 0.00| 0.00
% | 0.0| -0.4| +0.1| -0.6| 0| -2.9|
0| -1.9| 0| 0.0| -0.4| -0.4|
-0.3| 0| 0
1 500| 1024| 8182.51| 7.61| 1075| 0| 32|
0| 1698| 0| 7| 491028| 491095|
504222| 0.00| 0.00
2 500| 1024| 8157.39| 7.58| 1075| 0| 33|
0| 1716| 0| 7| 489521| 489593|
502368| 0.00| 0.00
% | 0.0| -0.3| -0.4| 0.0| 0| +3.1|
0| +1.1| 0| 0.0| -0.3| -0.3|
-0.4| 0| 0
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.host_guest.txt
2 - avg-fixed.netperf.host_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 715.76| 28.44| 24| 0| 31|
0| 1629| 0| 36| 3206862| 1733540|
3245171| 0.00| 0.00
2 1| 64| 714.82| 28.44| 25| 0| 31|
0| 1612| 0| 36| 3204256| 1709508|
3242450| 0.00| 0.00
% | 0.0| -0.1| 0.0| +4.2| 0| 0.0|
0| -1.0| 0| 0.0| -0.1| -1.4|
-0.1| 0| 0
1 2| 64| 1449.31| 41.23| 35| 0| 33|
0| 1744| 0| 66| 2764635| 1667527|
2815591| 0.00| 0.00
2 2| 64| 1442.92| 41.32| 34| 0| 32|
0| 1709| 0| 66| 2751461| 1659498|
2799277| 0.00| 0.00
% | 0.0| -0.4| +0.2| -2.9| 0| -3.0|
0| -2.0| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 4| 64| 2671.25| 48.95| 54| 0| 30|
0| 1577| 0| 47| 914085| 289771|
947054| 0.00| 0.00
2 4| 64| 2652.68| 48.20| 54| 0| 30|
0| 1594| 0| 46| 882300| 293273|
914249| 0.00| 0.00
% | 0.0| -0.7| -1.5| 0.0| 0| 0.0|
0| +1.1| 0| -2.1| -3.5| +1.2|
-3.5| 0| 0
1 1| 256| 1478.61| 29.34| 50| 0| 32|
0| 1709| 0| 64| 3502384| 1541681|
3545371| 0.00| 0.00
2 1| 256| 1481.38| 29.27| 50| 0| 32|
0| 1726| 0| 64| 3485623| 1526105|
3528343| 0.00| 0.00
% | 0.0| +0.2| -0.2| 0.0| 0| 0.0|
0| +1.0| 0| 0.0| -0.5| -1.0|
-0.5| 0| 0
1 2| 256| 3095.93| 42.31| 72| 0| 31|
0| 1612| 0| 123| 1521019| 466426|
1637722| 0.00| 0.00
2 2| 256| 3098.16| 42.03| 73| 0| 30|
0| 1594| 0| 123| 1519458| 472632|
1632462| 0.00| 0.00
% | 0.0| +0.1| -0.7| +1.4| 0| -3.2|
0| -1.1| 0| 0.0| -0.1| +1.3|
-0.3| 0| 0
1 4| 256| 6553.60| 38.44| 170| 0| 33|
0| 1761| 0| 38| 1343193| 237604|
1402385| 0.00| 0.00
2 4| 256| 6649.37| 38.34| 172| 0| 32|
0| 1726| 0| 32| 1343770| 236320|
1400875| 0.00| 0.00
% | 0.0| +1.5| -0.3| +1.2| 0| -3.0|
0| -2.0| 0| -15.8| +0.0| -0.5|
-0.1| 0| 0
1 1| 512| 1818.40| 29.28| 61| 0| 31|
0| 1646| 0| 76| 3326887| 1491961|
3371189| 0.00| 0.00
2 1| 512| 1822.74| 29.45| 61| 0| 30|
0| 1577| 0| 76| 3309934| 1470715|
3352921| 0.00| 0.00
% | 0.0| +0.2| +0.6| 0.0| 0| -3.2|
0| -4.2| 0| 0.0| -0.5| -1.4|
-0.5| 0| 0
1 2| 512| 3931.72| 43.51| 89| 0| 33|
0| 1761| 0| 137| 1148331| 301194|
1270351| 0.00| 0.00
2 2| 512| 3926.16| 43.45| 90| 0| 32|
0| 1726| 0| 135| 1166280| 306110|
1288869| 0.00| 0.00
% | 0.0| -0.1| -0.1| +1.1| 0| -3.0|
0| -2.0| 0| -1.5| +1.6| +1.6|
+1.5| 0| 0
1 4| 512| 8634.49| 40.69| 211| 0| 31|
0| 1612| 0| 53| 1869998| 353856|
1948593| 0.00| 0.00
2 4| 512| 9137.12| 40.77| 223| 0| 30|
0| 1594| 0| 48| 1879574| 362851|
1959044| 0.00| 0.00
% | 0.0| +5.8| +0.2| +5.7| 0| -3.2|
0| -1.1| 0| -9.4| +0.5| +2.5|
+0.5| 0| 0
1 1| 1024| 2042.67| 29.50| 68| 0| 33|
0| 1778| 0| 84| 3087032| 1309160|
3130736| 0.00| 0.00
2 1| 1024| 2033.24| 29.51| 68| 0| 32|
0| 1726| 0| 83| 3082898| 1295936|
3125229| 0.00| 0.00
% | 0.0| -0.5| +0.0| 0.0| 0| -3.0|
0| -2.9| 0| -1.2| -0.1| -1.0|
-0.2| 0| 0
1 2| 1024| 7703.26| 39.58| 194| 0| 32|
0| 1673| 0| 65| 2522172| 663302|
2684835| 0.00| 0.00
2 2| 1024| 7657.00| 39.27| 194| 0| 30|
0| 1594| 0| 62| 2607281| 698035|
2755198| 0.00| 0.00
% | 0.0| -0.6| -0.8| 0.0| 0| -6.2|
0| -4.7| 0| -4.6| +3.4| +5.2|
+2.6| 0| 0
1 4| 1024| 11814.84| 39.38| 299| 0| 32|
0| 1700| 0| 28| 2510318| 576071|
2596631| 0.00| 0.00
2 4| 1024| 12871.76| 38.93| 330| 0| 32|
0| 1726| 0| 25| 2232437| 632785|
2316035| 0.00| 0.00
% | 0.0| +8.9| -1.1| +10.4| 0| 0.0|
0| +1.5| 0| -10.7| -11.1| +9.8|
-10.8| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 706.98| 26.25| 26| 0| 31|
0| 1656| 0| 80| 2630204| 4185330|
2692397| 0.00| 0.00
2 1| 64| 767.45| 27.78| 27| 0| 30|
0| 1594| 0| 85| 2626694| 4317273|
2688799| 0.00| 0.00
% | 0.0| +8.6| +5.8| +3.8| 0| -3.2|
0| -3.7| 0| +6.2| -0.1| +3.2|
-0.1| 0| 0
1 2| 64| 2644.57| 42.60| 61| 0| 32|
0| 1700| 0| 34863| 49057| 16791|
204805| 0.00| 0.00
2 2| 64| 2721.19| 42.69| 63| 0| 32|
0| 1709| 0| 42365| 52739| 20094|
215895| 0.00| 0.00
% | 0.0| +2.9| +0.2| +3.3| 0| 0.0|
0| +0.5| 0| +21.5| +7.5| +19.7|
+5.4| 0| 0
1 4| 64| 2756.40| 42.69| 64| 0| 32|
0| 1708| 0| 52043| 47976| 12694|
220732| 0.00| 0.00
2 4| 64| 2709.19| 42.79| 62| 0| 30|
0| 1594| 0| 50144| 47275| 12743|
218074| 0.00| 0.00
% | 0.0| -1.7| +0.2| -3.1| 0| -6.2|
0| -6.7| 0| -3.6| -1.5| +0.4|
-1.2| 0| 0
1 1| 256| 3785.63| 32.34| 116| 0| 33|
0| 1734| 0| 36642| 58940| 1187|
157652| 0.00| 0.00
2 1| 256| 3593.17| 32.90| 108| 0| 32|
0| 1726| 0| 33179| 54980| 1130|
150168| 0.00| 0.00
% | 0.0| -5.1| +1.7| -6.9| 0| -3.0|
0| -0.5| 0| -9.5| -6.7| -4.8|
-4.7| 0| 0
1 2| 256| 8316.26| 40.45| 205| 0| 32|
0| 1673| 0| 28302| 114835| 1655|
251137| 0.00| 0.00
2 2| 256| 8390.41| 41.17| 203| 0| 30|
0| 1594| 0| 31222| 115372| 1696|
257151| 0.00| 0.00
% | 0.0| +0.9| +1.8| -1.0| 0| -6.2|
0| -4.7| 0| +10.3| +0.5| +2.5|
+2.4| 0| 0
1 4| 256| 9672.49| 42.40| 227| 0| 33|
0| 1761| 0| 30045| 132027| 3059|
283491| 0.00| 0.00
2 4| 256| 9741.71| 42.57| 228| 0| 32|
0| 1726| 6| 28875| 132125| 1999|
283036| 0.00| 0.00
% | 0.0| +0.7| +0.4| +0.4| 0| -3.0|
0| -2.0| 0| -3.9| +0.1| -34.7|
-0.2| 0| 0
1 1| 512| 6052.41| 32.23| 187| 0| 31|
0| 1612| 0| 44681| 86084| 2592|
187465| 0.00| 0.00
2 1| 512| 6267.37| 32.51| 192| 0| 30|
0| 1577| 0| 45278| 88449| 2708|
191374| 0.00| 0.00
% | 0.0| +3.6| +0.9| +2.7| 0| -3.2|
0| -2.2| 0| +1.3| +2.7| +4.5|
+2.1| 0| 0
1 2| 512| 12714.52| 38.27| 331| 0| 33|
0| 1744| 0| 24843| 169170| 2381|
292210| 0.00| 0.00
2 2| 512| 11341.65| 37.30| 303| 0| 32|
0| 1726| 14| 27393| 152465| 2980|
270740| 0.00| 0.00
% | 0.0| -10.8| -2.5| -8.5| 0| -3.0|
0| -1.0| 0| +10.3| -9.9| +25.2|
-7.3| 0| 0
1 4| 512| 16127.03| 40.80| 394| 0| 31|
0| 1612| 0| 15063| 210628| 2234|
344124| 0.00| 0.00
2 4| 512| 14709.72| 39.94| 367| 0| 31|
0| 1612| 0| 17823| 193670| 4457|
324744| 0.00| 0.00
% | 0.0| -8.8| -2.1| -6.9| 0| 0.0|
0| 0.0| 0| +18.3| -8.1| +99.5|
-5.6| 0| 0
1 1| 1024| 6436.88| 30.31| 212| 0| 33|
0| 1778| 0| 47820| 83940| 2007|
172847| 0.00| 0.00
2 1| 1024| 6495.48| 30.51| 212| 0| 32|
0| 1726| 0| 47771| 85436| 2038|
175027| 0.00| 0.00
% | 0.0| +0.9| +0.7| 0.0| 0| -3.0|
0| -2.9| 0| -0.1| +1.8| +1.5|
+1.3| 0| 0
1 2| 1024| 12245.34| 33.44| 365| 0| 31|
0| 1629| 0| 26499| 162142| 2909|
255717| 0.00| 0.00
2 2| 1024| 12913.57| 33.93| 380| 0| 31|
0| 1612| 0| 24196| 171386| 3671|
266270| 0.00| 0.00
% | 0.0| +5.5| +1.5| +4.1| 0| 0.0|
0| -1.0| 0| -8.7| +5.7| +26.2|
+4.1| 0| 0
1 4| 1024| 16428.48| 34.81| 471| 0| 32|
0| 1709| 0| 12496| 215031| 6557|
318039| 0.00| 0.00
2 4| 1024| 17294.33| 35.05| 492| 0| 32|
0| 1709| 0| 9444| 224694| 4095|
328098| 0.00| 0.00
% | 0.0| +5.3| +0.7| +4.5| 0| 0.0|
0| 0.0| 0| -24.4| +4.5| -37.5|
+3.2| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 14626.43| 14.93| 980| 0| 32|
0| 1681| 0| 13| 877664| 877731|
902624| 0.00| 0.00
2 50| 64| 14639.95| 13.10| 1123| 0| 32|
0| 1681| 0| 13| 878475| 878538|
897278| 0.00| 0.00
% | 0.0| +0.1| -12.3| +14.6| 0| 0.0|
0| 0.0| 0| 0.0| +0.1| +0.1|
-0.6| 0| 0
1 100| 64| 14697.50| 14.31| 1029| 0| 34|
0| 1830| 0| 13| 881930| 881991|
903837| 0.00| 0.00
2 100| 64| 14692.35| 13.08| 1128| 0| 34|
0| 1830| 0| 13| 881619| 881679|
898952| 0.00| 0.00
% | 0.0| -0.0| -8.6| +9.6| 0| 0.0|
0| 0.0| 0| 0.0| -0.0| -0.0|
-0.5| 0| 0
1 250| 64| 14683.40| 14.34| 1027| 0| 32|
0| 1698| 0| 13| 881083| 881147|
903071| 0.00| 0.00
2 250| 64| 14677.06| 12.85| 1144| 0| 32|
0| 1698| 0| 13| 880702| 880762|
898190| 0.00| 0.00
% | 0.0| -0.0| -10.4| +11.4| 0| 0.0|
0| 0.0| 0| 0.0| -0.0| -0.0|
-0.5| 0| 0
1 500| 64| 14698.45| 14.39| 1025| 0| 34|
0| 1830| 0| 13| 881985| 882060|
905537| 0.00| 0.00
2 500| 64| 14626.17| 13.54| 1083| 0| 34|
0| 1830| 0| 13| 877648| 877726|
896427| 0.00| 0.00
% | 0.0| -0.5| -5.9| +5.7| 0| 0.0|
0| 0.0| 0| 0.0| -0.5| -0.5|
-1.0| 0| 0
1 50| 256| 14386.52| 14.14| 1018| 0| 33|
0| 1716| 0| 13| 863266| 863336|
887195| 0.00| 0.00
2 50| 256| 14359.26| 14.22| 1016| 0| 32|
0| 1681| 0| 13| 861630| 861698|
882444| 0.00| 0.00
% | 0.0| -0.2| +0.6| -0.2| 0| -3.0|
0| -2.0| 0| 0.0| -0.2| -0.2|
-0.5| 0| 0
1 100| 256| 14364.89| 14.25| 1008| 0| 34|
0| 1813| 0| 13| 861969| 862033|
886679| 0.00| 0.00
2 100| 256| 14393.82| 14.53| 999| 0| 34|
0| 1813| 0| 13| 863704| 863765|
884487| 0.00| 0.00
% | 0.0| +0.2| +2.0| -0.9| 0| 0.0|
0| 0.0| 0| 0.0| +0.2| +0.2|
-0.2| 0| 0
1 250| 256| 14387.95| 14.05| 1024| 0| 32|
0| 1681| 0| 13| 863352| 863429|
887505| 0.00| 0.00
2 250| 256| 14344.74| 14.62| 987| 0| 32|
0| 1698| 0| 13| 860760| 860843|
882154| 0.00| 0.00
% | 0.0| -0.3| +4.1| -3.6| 0| 0.0|
0| +1.0| 0| 0.0| -0.3| -0.3|
-0.6| 0| 0
1 500| 256| 14365.89| 14.19| 1013| 0| 33|
0| 1769| 0| 13| 862029| 862099|
885852| 0.00| 0.00
2 500| 256| 14329.59| 14.62| 990| 0| 34|
0| 1830| 0| 13| 859852| 861233|
880082| 0.00| 0.00
% | 0.0| -0.3| +3.0| -2.3| 0| +3.0|
0| +3.4| 0| 0.0| -0.3| -0.1|
-0.7| 0| 0
1 50| 512| 14273.07| 14.12| 1010| 0| 33|
0| 1742| 0| 13| 856460| 856524|
880356| 0.00| 0.00
2 50| 512| 14222.08| 14.72| 966| 0| 32|
0| 1698| 0| 12| 853398| 853468|
875621| 0.00| 0.00
% | 0.0| -0.4| +4.2| -4.4| 0| -3.0|
0| -2.5| 0| -7.7| -0.4| -0.4|
-0.5| 0| 0
1 100| 512| 14236.34| 14.51| 982| 0| 34|
0| 1804| 0| 13| 854258| 854335|
876662| 0.00| 0.00
2 100| 512| 14147.89| 14.85| 953| 0| 34|
0| 1813| 0| 13| 848947| 849031|
871773| 0.00| 0.00
% | 0.0| -0.6| +2.3| -3.0| 0| 0.0|
0| +0.5| 0| 0.0| -0.6| -0.6|
-0.6| 0| 0
1 250| 512| 14260.79| 14.53| 983| 0| 33|
0| 1760| 0| 13| 855721| 855791|
879099| 0.00| 0.00
2 250| 512| 14190.68| 14.87| 954| 0| 32|
0| 1698| 0| 13| 851517| 851580|
874119| 0.00| 0.00
% | 0.0| -0.5| +2.3| -3.0| 0| -3.0|
0| -3.5| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 500| 512| 14273.71| 14.18| 1008| 0| 33|
0| 1769| 0| 13| 856499| 856562|
879984| 0.00| 0.00
2 500| 512| 14213.87| 14.72| 967| 0| 34|
0| 1830| 0| 13| 852907| 852976|
875328| 0.00| 0.00
% | 0.0| -0.4| +3.8| -4.1| 0| +3.0|
0| +3.4| 0| 0.0| -0.4| -0.4|
-0.5| 0| 0
1 50| 1024| 14049.77| 13.89| 1024| 0| 32|
0| 1708| 0| 12| 843061| 843134|
863697| 0.00| 0.00
2 50| 1024| 13980.25| 14.38| 980| 0| 32|
0| 1698| 0| 12| 838890| 838973|
858350| 0.00| 0.00
% | 0.0| -0.5| +3.5| -4.3| 0| 0.0|
0| -0.6| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 100| 1024| 14025.66| 13.32| 1066| 0| 33|
0| 1769| 0| 13| 841616| 841685|
864460| 0.00| 0.00
2 100| 1024| 13993.30| 14.82| 946| 0| 34|
0| 1830| 0| 12| 839676| 839735|
859288| 0.00| 0.00
% | 0.0| -0.2| +11.3| -11.3| 0| +3.0|
0| +3.4| 0| -7.7| -0.2| -0.2|
-0.6| 0| 0
1 250| 1024| 14060.15| 13.90| 1023| 0| 35|
0| 1848| 0| 12| 843688| 843752|
864475| 0.00| 0.00
2 250| 1024| 13982.47| 15.34| 913| 0| 34|
0| 1830| 0| 12| 839026| 839089|
859914| 0.00| 0.00
% | 0.0| -0.6| +10.4| -10.8| 0| -2.9|
0| -1.0| 0| 0.0| -0.6| -0.6|
-0.5| 0| 0
1 500| 1024| 14051.14| 13.80| 1024| 0| 33|
0| 1716| 0| 13| 843144| 843212|
862981| 0.00| 0.00
2 500| 1024| 14013.95| 15.27| 918| 0| 32|
0| 1681| 0| 13| 840915| 840983|
862635| 0.00| 0.00
% | 0.0| -0.3| +10.7| -10.4| 0| -3.0|
0| -2.0| 0| 0.0| -0.3| -0.3|
-0.0| 0| 0
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:19 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 2:19 UTC (permalink / raw)
To: Rusty Russell
Cc: Benjamin Herrenschmidt, Michael S. Tsirkin, Ohad Ben-Cohen,
virtualization, kvm, linux-kernel, linux-arm-kernel, rhod,
Jason Wang
On 12/12/11 13:12, Rusty Russell wrote:
> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong<akong@redhat.com> wrote:
>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>
>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>> varies even as message size is constant.
>>>>
>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>> regressed consistently, between 7 and 35%
>>>>
>>>> The "fix" applied was simply this:
>>>
>>> What machine& processor was this ?
>>
>> pined guest memory to numa node 1
>
> Please try this patch. How much does the branch cost us?
>
> (Compiles, untested).
>
> Thanks,
> Rusty.
>
> From: Rusty Russell<rusty@rustcorp.com.au>
> Subject: virtio: harsher barriers for virtio-mmio.
>
> We were cheating with our barriers; using the smp ones rather than the
> real device ones. That was fine, until virtio-mmio came along, which
> could be talking to a real device (a non-SMP CPU).
>
> Unfortunately, just putting back the real barriers (reverting
> d57ed95d) causes a performance regression on virtio-pci. In
> particular, Amos reports netbench's TCP_RR over virtio_net CPU
> utilization increased up to 35% while throughput went down by up to
> 14%.
>
> By comparison, this branch costs us???
>
> Reference: https://lkml.org/lkml/2011/12/11/22
>
> Signed-off-by: Rusty Russell<rusty@rustcorp.com.au>
> ---
> drivers/lguest/lguest_device.c | 10 ++++++----
> drivers/s390/kvm/kvm_virtio.c | 2 +-
> drivers/virtio/virtio_mmio.c | 7 ++++---
> drivers/virtio/virtio_pci.c | 4 ++--
> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
> include/linux/virtio_ring.h | 1 +
> tools/virtio/linux/virtio.h | 1 +
> tools/virtio/virtio_test.c | 3 ++-
> 8 files changed, 38 insertions(+), 24 deletions(-)
Hi all,
I tested with the same environment and scenarios.
tested one scenarios for three times and compute the average for more
precision.
Thanks, Amos
--------- compare results -----------
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.exhost_guest.txt
2 - avg-fixed.netperf.exhost_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1073.54| 10.50| 102| 0| 31|
0| 1612| 0| 16| 487641| 489753|
504764| 0.00| 0.00
2 1| 64| 1079.44| 10.29| 104| 0| 30|
0| 1594| 0| 17| 487156| 488828|
504411| 0.00| 0.00
% | 0.0| +0.5| -2.0| +2.0| 0| -3.2|
0| -1.1| 0| +6.2| -0.1| -0.2|
-0.1| 0| 0
1 2| 64| 2141.12| 15.72| 136| 0| 33|
0| 1744| 0| 34| 873777| 972303|
928926| 0.00| 0.00
2 2| 64| 2140.88| 15.64| 137| 0| 33|
0| 1744| 0| 34| 926588| 942841|
974095| 0.00| 0.00
% | 0.0| -0.0| -0.5| +0.7| 0| 0.0|
0| 0.0| 0| 0.0| +6.0| -3.0|
+4.9| 0| 0
1 4| 64| 4076.80| 19.82| 205| 0| 30|
0| 1577| 0| 67| 1422282| 1166425|
1539219| 0.00| 0.00
2 4| 64| 4094.32| 20.70| 197| 0| 31|
0| 1612| 0| 68| 1704330| 1314077|
1833394| 0.00| 0.00
% | 0.0| +0.4| +4.4| -3.9| 0| +3.3|
0| +2.2| 0| +1.5| +19.8| +12.7|
+19.1| 0| 0
1 1| 256| 2867.48| 13.44| 213| 0| 32|
0| 1726| 0| 14| 666430| 694922|
690730| 0.00| 0.00
2 1| 256| 2874.20| 12.71| 226| 0| 32|
0| 1709| 0| 14| 697960| 740407|
721807| 0.00| 0.00
% | 0.0| +0.2| -5.4| +6.1| 0| 0.0|
0| -1.0| 0| 0.0| +4.7| +6.5|
+4.5| 0| 0
1 2| 256| 5642.82| 17.61| 320| 0| 30|
0| 1594| 0| 30| 1226861| 1236081|
1268562| 0.00| 0.00
2 2| 256| 5661.06| 17.41| 326| 0| 30|
0| 1594| 0| 29| 1175696| 1143490|
1221528| 0.00| 0.00
% | 0.0| +0.3| -1.1| +1.9| 0| 0.0|
0| 0.0| 0| -3.3| -4.2| -7.5|
-3.7| 0| 0
1 4| 256| 9404.27| 23.55| 399| 0| 33|
0| 1744| 0| 37| 1692245| 659975|
1765103| 0.00| 0.00
2 4| 256| 8761.11| 23.18| 376| 0| 32|
0| 1726| 0| 36| 1699382| 418992|
1870804| 0.00| 0.00
% | 0.0| -6.8| -1.6| -5.8| 0| -3.0|
0| -1.0| 0| -2.7| +0.4| -36.5|
+6.0| 0| 0
1 1| 512| 3803.66| 14.20| 267| 0| 30|
0| 1594| 0| 14| 693992| 750078|
721107| 0.00| 0.00
2 1| 512| 3838.02| 15.47| 248| 0| 31|
0| 1612| 0| 15| 811709| 773505|
838788| 0.00| 0.00
% | 0.0| +0.9| +8.9| -7.1| 0| +3.3|
0| +1.1| 0| +7.1| +17.0| +3.1|
+16.3| 0| 0
1 2| 512| 8606.11| 19.34| 444| 0| 32|
0| 1709| 0| 29| 1264624| 647652|
1309740| 0.00| 0.00
2 2| 512| 8127.80| 18.93| 428| 0| 32|
0| 1726| 0| 28| 1216606| 1179269|
1266260| 0.00| 0.00
% | 0.0| -5.6| -2.1| -3.6| 0| 0.0|
0| +1.0| 0| -3.4| -3.8| +82.1|
-3.3| 0| 0
1 4| 512| 9409.41| 22.88| 413| 0| 30|
0| 1577| 0| 35| 1592587| 1072862|
1746787| 0.00| 0.00
2 4| 512| 9217.34| 23.05| 400| 0| 30|
0| 1594| 0| 34| 1596515| 513742|
1831538| 0.00| 0.00
% | 0.0| -2.0| +0.7| -3.1| 0| 0.0|
0| +1.1| 0| -2.9| +0.2| -52.1|
+4.9| 0| 0
1 1| 1024| 4389.75| 14.62| 303| 0| 32|
0| 1726| 0| 14| 663417| 611555|
689028| 0.00| 0.00
2 1| 1024| 4390.44| 13.66| 321| 0| 32|
0| 1726| 0| 13| 609836| 556090|
634511| 0.00| 0.00
% | 0.0| +0.0| -6.6| +5.9| 0| 0.0|
0| 0.0| 0| -7.1| -8.1| -9.1|
-7.9| 0| 0
1 2| 1024| 9046.18| 19.63| 460| 0| 30|
0| 1594| 0| 28| 1206853| 1054653|
1256203| 0.00| 0.00
2 2| 1024| 9027.54| 20.15| 447| 0| 30|
0| 1577| 0| 27| 1179555| 884408|
1226843| 0.00| 0.00
% | 0.0| -0.2| +2.6| -2.8| 0| 0.0|
0| -1.1| 0| -3.6| -2.3| -16.1|
-2.3| 0| 0
1 4| 1024| 9410.41| 22.01| 427| 0| 32|
0| 1726| 0| 36| 1734433| 887190|
1852486| 0.00| 0.00
2 4| 1024| 9409.11| 23.18| 405| 0| 32|
0| 1726| 0| 34| 1695359| 625268|
1803599| 0.00| 0.00
% | 0.0| -0.0| +5.3| -5.2| 0| 0.0|
0| 0.0| 0| -5.6| -2.3| -29.5|
-2.6| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1056.13| 17.51| 59| 0| 30|
0| 1594| 3| 86| 476098| 4780186|
538158| 0.00| 0.00
2 1| 64| 1065.51| 17.64| 60| 0| 30|
0| 1594| 3| 87| 476836| 4823602|
538860| 0.00| 0.00
% | 0.0| +0.9| +0.7| +1.7| 0| 0.0|
0| 0.0| 0.0| +1.2| +0.2| +0.9|
+0.1| 0| 0
1 2| 64| 2472.80| 32.18| 76| 0| 32|
0| 1709| 2| 199| 479119| 2089931|
600119| 0.00| 0.00
2 2| 64| 2468.76| 32.28| 76| 0| 33|
0| 1744| 1| 199| 479372| 2179342|
600328| 0.00| 0.00
% | 0.0| -0.2| +0.3| 0.0| 0| +3.1|
0| +2.0| -50.0| 0.0| +0.1| +4.3|
+0.0| 0| 0
1 4| 64| 2453.22| 32.20| 75| 0| 31|
0| 1612| 2| 198| 479223| 2175801|
600081| 0.00| 0.00
2 4| 64| 2465.68| 32.30| 76| 0| 30|
0| 1594| 3| 200| 479404| 2108293|
600252| 0.00| 0.00
% | 0.0| +0.5| +0.3| +1.3| 0| -3.2|
0| -1.1| +50.0| +1.0| +0.0| -3.1|
+0.0| 0| 0
1 1| 256| 3608.37| 24.59| 146| 0| 32|
0| 1726| 2| 277| 88346| 108310|
150637| 0.00| 0.00
2 1| 256| 3611.12| 24.95| 144| 0| 32|
0| 1709| 0| 281| 83319| 64354|
145511| 0.00| 0.00
% | 0.0| +0.1| +1.5| -1.4| 0| 0.0|
0| -1.0| -100.0| +1.4| -5.7| -40.6|
-3.4| 0| 0
1 2| 256| 7373.32| 26.83| 274| 0| 31|
0| 1612| 0| 4185| 278932| 264031|
377267| 0.00| 0.00
2 2| 256| 7460.03| 26.93| 276| 0| 30|
0| 1594| 1| 5913| 270840| 246165|
371999| 0.00| 0.00
% | 0.0| +1.2| +0.4| +0.7| 0| -3.2|
0| -1.1| 0| +41.3| -2.9| -6.8|
-1.4| 0| 0
1 4| 256| 9322.66| 29.73| 313| 0| 32|
0| 1709| 848| 3041| 363114| 329308|
482586| 0.00| 0.00
2 4| 256| 9365.52| 29.59| 316| 0| 33|
0| 1744| 414| 2884| 371485| 339191|
491366| 0.00| 0.00
% | 0.0| +0.5| -0.5| +1.0| 0| +3.1|
0| +2.0| -51.2| -5.2| +2.3| +3.0|
+1.8| 0| 0
1 1| 512| 9360.25| 17.20| 543| 0| 30|
0| 1577| 0| 387| 438621| 408062|
499989| 0.00| 0.00
2 1| 512| 8899.37| 18.17| 495| 0| 30|
0| 1594| 0| 5049| 393341| 371545|
459397| 0.00| 0.00
% | 0.0| -4.9| +5.6| -8.8| 0| 0.0|
0| +1.1| 0| +1204.7| -10.3| -8.9|
-8.1| 0| 0
1 2| 512| 8713.11| 20.77| 420| 0| 32|
0| 1726| 0| 11227| 296157| 246495|
371632| 0.00| 0.00
2 2| 512| 8686.31| 20.72| 421| 0| 32|
0| 1709| 0| 11002| 296608| 246597|
371797| 0.00| 0.00
% | 0.0| -0.3| -0.2| +0.2| 0| 0.0|
0| -1.0| 0| -2.0| +0.2| +0.0|
+0.0| 0| 0
1 4| 512| 8780.40| 22.72| 386| 0| 30|
0| 1594| 0| 10337| 303619| 249822|
385457| 0.00| 0.00
2 4| 512| 8858.51| 22.66| 390| 0| 30|
0| 1577| 0| 9968| 301847| 246543|
382121| 0.00| 0.00
% | 0.0| +0.9| -0.3| +1.0| 0| 0.0|
0| -1.1| 0| -3.6| -0.6| -1.3|
-0.9| 0| 0
1 1| 1024| 9387.09| 16.43| 571| 0| 32|
0| 1726| 0| 84| 452351| 429483|
504022| 0.00| 0.00
2 1| 1024| 9388.90| 16.51| 568| 0| 32|
0| 1726| 2| 76| 446994| 422489|
499025| 0.00| 0.00
% | 0.0| +0.0| +0.5| -0.5| 0| 0.0|
0| 0.0| 0| -9.5| -1.2| -1.6|
-1.0| 0| 0
1 2| 1024| 9361.43| 17.26| 542| 0| 30|
0| 1594| 5| 647| 388626| 358303|
442125| 0.00| 0.00
2 2| 1024| 9364.78| 17.25| 542| 0| 31|
0| 1612| 35| 554| 389326| 360169|
442343| 0.00| 0.00
% | 0.0| +0.0| -0.1| 0.0| 0| +3.3|
0| +1.1| +600.0| -14.4| +0.2| +0.5|
+0.0| 0| 0
1 4| 1024| 9381.57| 18.35| 510| 0| 32|
0| 1726| 1189| 648| 405900| 376269|
459845| 0.00| 0.00
2 4| 1024| 9393.48| 18.27| 513| 0| 32|
0| 1726| 1754| 610| 402132| 373768|
455629| 0.00| 0.00
% | 0.0| +0.1| -0.4| +0.6| 0| 0.0|
0| 0.0| +47.5| -5.9| -0.9| -0.7|
-0.9| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 10903.70| 8.03| 1382| 0| 32|
0| 1698| 0| 9| 654298| 654362|
665532| 0.00| 0.00
2 50| 64| 10880.50| 7.40| 1488| 0| 32|
0| 1698| 0| 10| 652907| 652973|
667042| 0.00| 0.00
% | 0.0| -0.2| -7.8| +7.7| 0| 0.0|
0| 0.0| 0| +11.1| -0.2| -0.2|
+0.2| 0| 0
1 100| 64| 10953.00| 8.40| 1332| 0| 34|
0| 1830| 0| 10| 657257| 657325|
667088| 0.00| 0.00
2 100| 64| 10882.78| 7.67| 1439| 0| 34|
0| 1830| 0| 9| 653044| 653110|
668883| 0.00| 0.00
% | 0.0| -0.6| -8.7| +8.0| 0| 0.0|
0| 0.0| 0| -10.0| -0.6| -0.6|
+0.3| 0| 0
1 250| 64| 10902.66| 8.57| 1300| 0| 33|
0| 1716| 0| 10| 654235| 654308|
665518| 0.00| 0.00
2 250| 64| 10866.79| 7.58| 1449| 0| 32|
0| 1664| 0| 10| 652083| 652155|
666869| 0.00| 0.00
% | 0.0| -0.3| -11.6| +11.5| 0| -3.0|
0| -3.0| 0| 0.0| -0.3| -0.3|
+0.2| 0| 0
1 500| 64| 10924.34| 7.25| 1509| 0| 34|
0| 1830| 0| 10| 655536| 655619|
665776| 0.00| 0.00
2 500| 64| 10927.52| 6.50| 1684| 0| 34|
0| 1813| 0| 10| 655726| 655803|
668527| 0.00| 0.00
% | 0.0| +0.0| -10.3| +11.6| 0| 0.0|
0| -0.9| 0| 0.0| +0.0| +0.0|
+0.4| 0| 0
1 50| 256| 10407.35| 9.38| 1112| 0| 32|
0| 1681| 0| 9| 624516| 624581|
639159| 0.00| 0.00
2 50| 256| 10422.60| 9.45| 1108| 0| 33|
0| 1716| 0| 9| 625432| 625498|
641343| 0.00| 0.00
% | 0.0| +0.1| +0.7| -0.4| 0| +3.1|
0| +2.1| 0| 0.0| +0.1| +0.1|
+0.3| 0| 0
1 100| 256| 10404.30| 8.99| 1159| 0| 34|
0| 1830| 0| 9| 624335| 624400|
637357| 0.00| 0.00
2 100| 256| 10442.84| 9.57| 1093| 0| 35|
0| 1848| 0| 9| 626650| 626714|
639017| 0.00| 0.00
% | 0.0| +0.4| +6.5| -5.7| 0| +2.9|
0| +1.0| 0| 0.0| +0.4| +0.4|
+0.3| 0| 0
1 250| 256| 10427.71| 9.10| 1157| 0| 32|
0| 1698| 0| 9| 625738| 625822|
641221| 0.00| 0.00
2 250| 256| 10464.71| 9.69| 1085| 0| 32|
0| 1698| 0| 9| 627960| 628040|
640680| 0.00| 0.00
% | 0.0| +0.4| +6.5| -6.2| 0| 0.0|
0| 0.0| 0| 0.0| +0.4| +0.4|
-0.1| 0| 0
1 500| 256| 10442.18| 8.65| 1217| 0| 34|
0| 1830| 0| 10| 626608| 626675|
640081| 0.00| 0.00
2 500| 256| 10463.74| 9.63| 1089| 0| 34|
0| 1813| 0| 9| 627904| 627967|
643152| 0.00| 0.00
% | 0.0| +0.2| +11.3| -10.5| 0| 0.0|
0| -0.9| 0| -10.0| +0.2| +0.2|
+0.5| 0| 0
1 50| 512| 8505.70| 7.20| 1191| 0| 33|
0| 1716| 0| 7| 510418| 510486|
524904| 0.00| 0.00
2 50| 512| 8563.34| 7.24| 1185| 0| 32|
0| 1664| 0| 8| 513877| 513940|
526294| 0.00| 0.00
% | 0.0| +0.7| +0.6| -0.5| 0| -3.0|
0| -3.0| 0| +14.3| +0.7| +0.7|
+0.3| 0| 0
1 100| 512| 8509.97| 7.00| 1226| 0| 34|
0| 1830| 0| 7| 510674| 510756|
525205| 0.00| 0.00
2 100| 512| 8555.22| 7.52| 1144| 0| 34|
0| 1830| 0| 7| 513389| 513471|
526609| 0.00| 0.00
% | 0.0| +0.5| +7.4| -6.7| 0| 0.0|
0| 0.0| 0| 0.0| +0.5| +0.5|
+0.3| 0| 0
1 250| 512| 8507.35| 7.21| 1183| 0| 32|
0| 1681| 0| 7| 510518| 510579|
524294| 0.00| 0.00
2 250| 512| 8578.13| 7.01| 1223| 0| 33|
0| 1716| 0| 8| 514765| 514829|
526481| 0.00| 0.00
% | 0.0| +0.8| -2.8| +3.4| 0| +3.1|
0| +2.1| 0| +14.3| +0.8| +0.8|
+0.4| 0| 0
1 500| 512| 8521.68| 6.54| 1302| 0| 34|
0| 1813| 0| 8| 511375| 511443|
523357| 0.00| 0.00
2 500| 512| 8573.17| 6.94| 1235| 0| 34|
0| 1830| 0| 7| 514467| 514533|
526131| 0.00| 0.00
% | 0.0| +0.6| +6.1| -5.1| 0| 0.0|
0| +0.9| 0| -12.5| +0.6| +0.6|
+0.5| 0| 0
1 50| 1024| 8150.01| 7.69| 1060| 0| 32|
0| 1681| 0| 7| 489075| 489155|
503136| 0.00| 0.00
2 50| 1024| 8129.35| 7.65| 1062| 0| 34|
0| 1804| 0| 7| 487841| 487915|
502061| 0.00| 0.00
% | 0.0| -0.3| -0.5| +0.2| 0| +6.2|
0| +7.3| 0| 0.0| -0.3| -0.3|
-0.2| 0| 0
1 100| 1024| 8166.06| 7.53| 1083| 0| 34|
0| 1804| 0| 7| 490039| 490104|
502990| 0.00| 0.00
2 100| 1024| 8118.23| 7.77| 1044| 0| 33|
0| 1725| 0| 7| 487171| 487236|
501939| 0.00| 0.00
% | 0.0| -0.6| +3.2| -3.6| 0| -2.9|
0| -4.4| 0| 0.0| -0.6| -0.6|
-0.2| 0| 0
1 250| 1024| 8175.35| 7.58| 1079| 0| 35|
0| 1848| 0| 7| 490597| 490657|
503641| 0.00| 0.00
2 250| 1024| 8146.63| 7.59| 1072| 0| 34|
0| 1813| 0| 7| 488874| 488939|
502010| 0.00| 0.00
% | 0.0| -0.4| +0.1| -0.6| 0| -2.9|
0| -1.9| 0| 0.0| -0.4| -0.4|
-0.3| 0| 0
1 500| 1024| 8182.51| 7.61| 1075| 0| 32|
0| 1698| 0| 7| 491028| 491095|
504222| 0.00| 0.00
2 500| 1024| 8157.39| 7.58| 1075| 0| 33|
0| 1716| 0| 7| 489521| 489593|
502368| 0.00| 0.00
% | 0.0| -0.3| -0.4| 0.0| 0| +3.1|
0| +1.1| 0| 0.0| -0.3| -0.3|
-0.4| 0| 0
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.host_guest.txt
2 - avg-fixed.netperf.host_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 715.76| 28.44| 24| 0| 31|
0| 1629| 0| 36| 3206862| 1733540|
3245171| 0.00| 0.00
2 1| 64| 714.82| 28.44| 25| 0| 31|
0| 1612| 0| 36| 3204256| 1709508|
3242450| 0.00| 0.00
% | 0.0| -0.1| 0.0| +4.2| 0| 0.0|
0| -1.0| 0| 0.0| -0.1| -1.4|
-0.1| 0| 0
1 2| 64| 1449.31| 41.23| 35| 0| 33|
0| 1744| 0| 66| 2764635| 1667527|
2815591| 0.00| 0.00
2 2| 64| 1442.92| 41.32| 34| 0| 32|
0| 1709| 0| 66| 2751461| 1659498|
2799277| 0.00| 0.00
% | 0.0| -0.4| +0.2| -2.9| 0| -3.0|
0| -2.0| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 4| 64| 2671.25| 48.95| 54| 0| 30|
0| 1577| 0| 47| 914085| 289771|
947054| 0.00| 0.00
2 4| 64| 2652.68| 48.20| 54| 0| 30|
0| 1594| 0| 46| 882300| 293273|
914249| 0.00| 0.00
% | 0.0| -0.7| -1.5| 0.0| 0| 0.0|
0| +1.1| 0| -2.1| -3.5| +1.2|
-3.5| 0| 0
1 1| 256| 1478.61| 29.34| 50| 0| 32|
0| 1709| 0| 64| 3502384| 1541681|
3545371| 0.00| 0.00
2 1| 256| 1481.38| 29.27| 50| 0| 32|
0| 1726| 0| 64| 3485623| 1526105|
3528343| 0.00| 0.00
% | 0.0| +0.2| -0.2| 0.0| 0| 0.0|
0| +1.0| 0| 0.0| -0.5| -1.0|
-0.5| 0| 0
1 2| 256| 3095.93| 42.31| 72| 0| 31|
0| 1612| 0| 123| 1521019| 466426|
1637722| 0.00| 0.00
2 2| 256| 3098.16| 42.03| 73| 0| 30|
0| 1594| 0| 123| 1519458| 472632|
1632462| 0.00| 0.00
% | 0.0| +0.1| -0.7| +1.4| 0| -3.2|
0| -1.1| 0| 0.0| -0.1| +1.3|
-0.3| 0| 0
1 4| 256| 6553.60| 38.44| 170| 0| 33|
0| 1761| 0| 38| 1343193| 237604|
1402385| 0.00| 0.00
2 4| 256| 6649.37| 38.34| 172| 0| 32|
0| 1726| 0| 32| 1343770| 236320|
1400875| 0.00| 0.00
% | 0.0| +1.5| -0.3| +1.2| 0| -3.0|
0| -2.0| 0| -15.8| +0.0| -0.5|
-0.1| 0| 0
1 1| 512| 1818.40| 29.28| 61| 0| 31|
0| 1646| 0| 76| 3326887| 1491961|
3371189| 0.00| 0.00
2 1| 512| 1822.74| 29.45| 61| 0| 30|
0| 1577| 0| 76| 3309934| 1470715|
3352921| 0.00| 0.00
% | 0.0| +0.2| +0.6| 0.0| 0| -3.2|
0| -4.2| 0| 0.0| -0.5| -1.4|
-0.5| 0| 0
1 2| 512| 3931.72| 43.51| 89| 0| 33|
0| 1761| 0| 137| 1148331| 301194|
1270351| 0.00| 0.00
2 2| 512| 3926.16| 43.45| 90| 0| 32|
0| 1726| 0| 135| 1166280| 306110|
1288869| 0.00| 0.00
% | 0.0| -0.1| -0.1| +1.1| 0| -3.0|
0| -2.0| 0| -1.5| +1.6| +1.6|
+1.5| 0| 0
1 4| 512| 8634.49| 40.69| 211| 0| 31|
0| 1612| 0| 53| 1869998| 353856|
1948593| 0.00| 0.00
2 4| 512| 9137.12| 40.77| 223| 0| 30|
0| 1594| 0| 48| 1879574| 362851|
1959044| 0.00| 0.00
% | 0.0| +5.8| +0.2| +5.7| 0| -3.2|
0| -1.1| 0| -9.4| +0.5| +2.5|
+0.5| 0| 0
1 1| 1024| 2042.67| 29.50| 68| 0| 33|
0| 1778| 0| 84| 3087032| 1309160|
3130736| 0.00| 0.00
2 1| 1024| 2033.24| 29.51| 68| 0| 32|
0| 1726| 0| 83| 3082898| 1295936|
3125229| 0.00| 0.00
% | 0.0| -0.5| +0.0| 0.0| 0| -3.0|
0| -2.9| 0| -1.2| -0.1| -1.0|
-0.2| 0| 0
1 2| 1024| 7703.26| 39.58| 194| 0| 32|
0| 1673| 0| 65| 2522172| 663302|
2684835| 0.00| 0.00
2 2| 1024| 7657.00| 39.27| 194| 0| 30|
0| 1594| 0| 62| 2607281| 698035|
2755198| 0.00| 0.00
% | 0.0| -0.6| -0.8| 0.0| 0| -6.2|
0| -4.7| 0| -4.6| +3.4| +5.2|
+2.6| 0| 0
1 4| 1024| 11814.84| 39.38| 299| 0| 32|
0| 1700| 0| 28| 2510318| 576071|
2596631| 0.00| 0.00
2 4| 1024| 12871.76| 38.93| 330| 0| 32|
0| 1726| 0| 25| 2232437| 632785|
2316035| 0.00| 0.00
% | 0.0| +8.9| -1.1| +10.4| 0| 0.0|
0| +1.5| 0| -10.7| -11.1| +9.8|
-10.8| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 706.98| 26.25| 26| 0| 31|
0| 1656| 0| 80| 2630204| 4185330|
2692397| 0.00| 0.00
2 1| 64| 767.45| 27.78| 27| 0| 30|
0| 1594| 0| 85| 2626694| 4317273|
2688799| 0.00| 0.00
% | 0.0| +8.6| +5.8| +3.8| 0| -3.2|
0| -3.7| 0| +6.2| -0.1| +3.2|
-0.1| 0| 0
1 2| 64| 2644.57| 42.60| 61| 0| 32|
0| 1700| 0| 34863| 49057| 16791|
204805| 0.00| 0.00
2 2| 64| 2721.19| 42.69| 63| 0| 32|
0| 1709| 0| 42365| 52739| 20094|
215895| 0.00| 0.00
% | 0.0| +2.9| +0.2| +3.3| 0| 0.0|
0| +0.5| 0| +21.5| +7.5| +19.7|
+5.4| 0| 0
1 4| 64| 2756.40| 42.69| 64| 0| 32|
0| 1708| 0| 52043| 47976| 12694|
220732| 0.00| 0.00
2 4| 64| 2709.19| 42.79| 62| 0| 30|
0| 1594| 0| 50144| 47275| 12743|
218074| 0.00| 0.00
% | 0.0| -1.7| +0.2| -3.1| 0| -6.2|
0| -6.7| 0| -3.6| -1.5| +0.4|
-1.2| 0| 0
1 1| 256| 3785.63| 32.34| 116| 0| 33|
0| 1734| 0| 36642| 58940| 1187|
157652| 0.00| 0.00
2 1| 256| 3593.17| 32.90| 108| 0| 32|
0| 1726| 0| 33179| 54980| 1130|
150168| 0.00| 0.00
% | 0.0| -5.1| +1.7| -6.9| 0| -3.0|
0| -0.5| 0| -9.5| -6.7| -4.8|
-4.7| 0| 0
1 2| 256| 8316.26| 40.45| 205| 0| 32|
0| 1673| 0| 28302| 114835| 1655|
251137| 0.00| 0.00
2 2| 256| 8390.41| 41.17| 203| 0| 30|
0| 1594| 0| 31222| 115372| 1696|
257151| 0.00| 0.00
% | 0.0| +0.9| +1.8| -1.0| 0| -6.2|
0| -4.7| 0| +10.3| +0.5| +2.5|
+2.4| 0| 0
1 4| 256| 9672.49| 42.40| 227| 0| 33|
0| 1761| 0| 30045| 132027| 3059|
283491| 0.00| 0.00
2 4| 256| 9741.71| 42.57| 228| 0| 32|
0| 1726| 6| 28875| 132125| 1999|
283036| 0.00| 0.00
% | 0.0| +0.7| +0.4| +0.4| 0| -3.0|
0| -2.0| 0| -3.9| +0.1| -34.7|
-0.2| 0| 0
1 1| 512| 6052.41| 32.23| 187| 0| 31|
0| 1612| 0| 44681| 86084| 2592|
187465| 0.00| 0.00
2 1| 512| 6267.37| 32.51| 192| 0| 30|
0| 1577| 0| 45278| 88449| 2708|
191374| 0.00| 0.00
% | 0.0| +3.6| +0.9| +2.7| 0| -3.2|
0| -2.2| 0| +1.3| +2.7| +4.5|
+2.1| 0| 0
1 2| 512| 12714.52| 38.27| 331| 0| 33|
0| 1744| 0| 24843| 169170| 2381|
292210| 0.00| 0.00
2 2| 512| 11341.65| 37.30| 303| 0| 32|
0| 1726| 14| 27393| 152465| 2980|
270740| 0.00| 0.00
% | 0.0| -10.8| -2.5| -8.5| 0| -3.0|
0| -1.0| 0| +10.3| -9.9| +25.2|
-7.3| 0| 0
1 4| 512| 16127.03| 40.80| 394| 0| 31|
0| 1612| 0| 15063| 210628| 2234|
344124| 0.00| 0.00
2 4| 512| 14709.72| 39.94| 367| 0| 31|
0| 1612| 0| 17823| 193670| 4457|
324744| 0.00| 0.00
% | 0.0| -8.8| -2.1| -6.9| 0| 0.0|
0| 0.0| 0| +18.3| -8.1| +99.5|
-5.6| 0| 0
1 1| 1024| 6436.88| 30.31| 212| 0| 33|
0| 1778| 0| 47820| 83940| 2007|
172847| 0.00| 0.00
2 1| 1024| 6495.48| 30.51| 212| 0| 32|
0| 1726| 0| 47771| 85436| 2038|
175027| 0.00| 0.00
% | 0.0| +0.9| +0.7| 0.0| 0| -3.0|
0| -2.9| 0| -0.1| +1.8| +1.5|
+1.3| 0| 0
1 2| 1024| 12245.34| 33.44| 365| 0| 31|
0| 1629| 0| 26499| 162142| 2909|
255717| 0.00| 0.00
2 2| 1024| 12913.57| 33.93| 380| 0| 31|
0| 1612| 0| 24196| 171386| 3671|
266270| 0.00| 0.00
% | 0.0| +5.5| +1.5| +4.1| 0| 0.0|
0| -1.0| 0| -8.7| +5.7| +26.2|
+4.1| 0| 0
1 4| 1024| 16428.48| 34.81| 471| 0| 32|
0| 1709| 0| 12496| 215031| 6557|
318039| 0.00| 0.00
2 4| 1024| 17294.33| 35.05| 492| 0| 32|
0| 1709| 0| 9444| 224694| 4095|
328098| 0.00| 0.00
% | 0.0| +5.3| +0.7| +4.5| 0| 0.0|
0| 0.0| 0| -24.4| +4.5| -37.5|
+3.2| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 14626.43| 14.93| 980| 0| 32|
0| 1681| 0| 13| 877664| 877731|
902624| 0.00| 0.00
2 50| 64| 14639.95| 13.10| 1123| 0| 32|
0| 1681| 0| 13| 878475| 878538|
897278| 0.00| 0.00
% | 0.0| +0.1| -12.3| +14.6| 0| 0.0|
0| 0.0| 0| 0.0| +0.1| +0.1|
-0.6| 0| 0
1 100| 64| 14697.50| 14.31| 1029| 0| 34|
0| 1830| 0| 13| 881930| 881991|
903837| 0.00| 0.00
2 100| 64| 14692.35| 13.08| 1128| 0| 34|
0| 1830| 0| 13| 881619| 881679|
898952| 0.00| 0.00
% | 0.0| -0.0| -8.6| +9.6| 0| 0.0|
0| 0.0| 0| 0.0| -0.0| -0.0|
-0.5| 0| 0
1 250| 64| 14683.40| 14.34| 1027| 0| 32|
0| 1698| 0| 13| 881083| 881147|
903071| 0.00| 0.00
2 250| 64| 14677.06| 12.85| 1144| 0| 32|
0| 1698| 0| 13| 880702| 880762|
898190| 0.00| 0.00
% | 0.0| -0.0| -10.4| +11.4| 0| 0.0|
0| 0.0| 0| 0.0| -0.0| -0.0|
-0.5| 0| 0
1 500| 64| 14698.45| 14.39| 1025| 0| 34|
0| 1830| 0| 13| 881985| 882060|
905537| 0.00| 0.00
2 500| 64| 14626.17| 13.54| 1083| 0| 34|
0| 1830| 0| 13| 877648| 877726|
896427| 0.00| 0.00
% | 0.0| -0.5| -5.9| +5.7| 0| 0.0|
0| 0.0| 0| 0.0| -0.5| -0.5|
-1.0| 0| 0
1 50| 256| 14386.52| 14.14| 1018| 0| 33|
0| 1716| 0| 13| 863266| 863336|
887195| 0.00| 0.00
2 50| 256| 14359.26| 14.22| 1016| 0| 32|
0| 1681| 0| 13| 861630| 861698|
882444| 0.00| 0.00
% | 0.0| -0.2| +0.6| -0.2| 0| -3.0|
0| -2.0| 0| 0.0| -0.2| -0.2|
-0.5| 0| 0
1 100| 256| 14364.89| 14.25| 1008| 0| 34|
0| 1813| 0| 13| 861969| 862033|
886679| 0.00| 0.00
2 100| 256| 14393.82| 14.53| 999| 0| 34|
0| 1813| 0| 13| 863704| 863765|
884487| 0.00| 0.00
% | 0.0| +0.2| +2.0| -0.9| 0| 0.0|
0| 0.0| 0| 0.0| +0.2| +0.2|
-0.2| 0| 0
1 250| 256| 14387.95| 14.05| 1024| 0| 32|
0| 1681| 0| 13| 863352| 863429|
887505| 0.00| 0.00
2 250| 256| 14344.74| 14.62| 987| 0| 32|
0| 1698| 0| 13| 860760| 860843|
882154| 0.00| 0.00
% | 0.0| -0.3| +4.1| -3.6| 0| 0.0|
0| +1.0| 0| 0.0| -0.3| -0.3|
-0.6| 0| 0
1 500| 256| 14365.89| 14.19| 1013| 0| 33|
0| 1769| 0| 13| 862029| 862099|
885852| 0.00| 0.00
2 500| 256| 14329.59| 14.62| 990| 0| 34|
0| 1830| 0| 13| 859852| 861233|
880082| 0.00| 0.00
% | 0.0| -0.3| +3.0| -2.3| 0| +3.0|
0| +3.4| 0| 0.0| -0.3| -0.1|
-0.7| 0| 0
1 50| 512| 14273.07| 14.12| 1010| 0| 33|
0| 1742| 0| 13| 856460| 856524|
880356| 0.00| 0.00
2 50| 512| 14222.08| 14.72| 966| 0| 32|
0| 1698| 0| 12| 853398| 853468|
875621| 0.00| 0.00
% | 0.0| -0.4| +4.2| -4.4| 0| -3.0|
0| -2.5| 0| -7.7| -0.4| -0.4|
-0.5| 0| 0
1 100| 512| 14236.34| 14.51| 982| 0| 34|
0| 1804| 0| 13| 854258| 854335|
876662| 0.00| 0.00
2 100| 512| 14147.89| 14.85| 953| 0| 34|
0| 1813| 0| 13| 848947| 849031|
871773| 0.00| 0.00
% | 0.0| -0.6| +2.3| -3.0| 0| 0.0|
0| +0.5| 0| 0.0| -0.6| -0.6|
-0.6| 0| 0
1 250| 512| 14260.79| 14.53| 983| 0| 33|
0| 1760| 0| 13| 855721| 855791|
879099| 0.00| 0.00
2 250| 512| 14190.68| 14.87| 954| 0| 32|
0| 1698| 0| 13| 851517| 851580|
874119| 0.00| 0.00
% | 0.0| -0.5| +2.3| -3.0| 0| -3.0|
0| -3.5| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 500| 512| 14273.71| 14.18| 1008| 0| 33|
0| 1769| 0| 13| 856499| 856562|
879984| 0.00| 0.00
2 500| 512| 14213.87| 14.72| 967| 0| 34|
0| 1830| 0| 13| 852907| 852976|
875328| 0.00| 0.00
% | 0.0| -0.4| +3.8| -4.1| 0| +3.0|
0| +3.4| 0| 0.0| -0.4| -0.4|
-0.5| 0| 0
1 50| 1024| 14049.77| 13.89| 1024| 0| 32|
0| 1708| 0| 12| 843061| 843134|
863697| 0.00| 0.00
2 50| 1024| 13980.25| 14.38| 980| 0| 32|
0| 1698| 0| 12| 838890| 838973|
858350| 0.00| 0.00
% | 0.0| -0.5| +3.5| -4.3| 0| 0.0|
0| -0.6| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 100| 1024| 14025.66| 13.32| 1066| 0| 33|
0| 1769| 0| 13| 841616| 841685|
864460| 0.00| 0.00
2 100| 1024| 13993.30| 14.82| 946| 0| 34|
0| 1830| 0| 12| 839676| 839735|
859288| 0.00| 0.00
% | 0.0| -0.2| +11.3| -11.3| 0| +3.0|
0| +3.4| 0| -7.7| -0.2| -0.2|
-0.6| 0| 0
1 250| 1024| 14060.15| 13.90| 1023| 0| 35|
0| 1848| 0| 12| 843688| 843752|
864475| 0.00| 0.00
2 250| 1024| 13982.47| 15.34| 913| 0| 34|
0| 1830| 0| 12| 839026| 839089|
859914| 0.00| 0.00
% | 0.0| -0.6| +10.4| -10.8| 0| -2.9|
0| -1.0| 0| 0.0| -0.6| -0.6|
-0.5| 0| 0
1 500| 1024| 14051.14| 13.80| 1024| 0| 33|
0| 1716| 0| 13| 843144| 843212|
862981| 0.00| 0.00
2 500| 1024| 14013.95| 15.27| 918| 0| 32|
0| 1681| 0| 13| 840915| 840983|
862635| 0.00| 0.00
% | 0.0| -0.3| +10.7| -10.4| 0| -3.0|
0| -2.0| 0| 0.0| -0.3| -0.3|
-0.0| 0| 0
^ permalink raw reply [flat|nested] 111+ messages in thread* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:19 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 2:19 UTC (permalink / raw)
To: linux-arm-kernel
On 12/12/11 13:12, Rusty Russell wrote:
> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong<akong@redhat.com> wrote:
>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>
>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>> varies even as message size is constant.
>>>>
>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>> regressed consistently, between 7 and 35%
>>>>
>>>> The "fix" applied was simply this:
>>>
>>> What machine& processor was this ?
>>
>> pined guest memory to numa node 1
>
> Please try this patch. How much does the branch cost us?
>
> (Compiles, untested).
>
> Thanks,
> Rusty.
>
> From: Rusty Russell<rusty@rustcorp.com.au>
> Subject: virtio: harsher barriers for virtio-mmio.
>
> We were cheating with our barriers; using the smp ones rather than the
> real device ones. That was fine, until virtio-mmio came along, which
> could be talking to a real device (a non-SMP CPU).
>
> Unfortunately, just putting back the real barriers (reverting
> d57ed95d) causes a performance regression on virtio-pci. In
> particular, Amos reports netbench's TCP_RR over virtio_net CPU
> utilization increased up to 35% while throughput went down by up to
> 14%.
>
> By comparison, this branch costs us???
>
> Reference: https://lkml.org/lkml/2011/12/11/22
>
> Signed-off-by: Rusty Russell<rusty@rustcorp.com.au>
> ---
> drivers/lguest/lguest_device.c | 10 ++++++----
> drivers/s390/kvm/kvm_virtio.c | 2 +-
> drivers/virtio/virtio_mmio.c | 7 ++++---
> drivers/virtio/virtio_pci.c | 4 ++--
> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
> include/linux/virtio_ring.h | 1 +
> tools/virtio/linux/virtio.h | 1 +
> tools/virtio/virtio_test.c | 3 ++-
> 8 files changed, 38 insertions(+), 24 deletions(-)
Hi all,
I tested with the same environment and scenarios.
tested one scenarios for three times and compute the average for more
precision.
Thanks, Amos
--------- compare results -----------
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.exhost_guest.txt
2 - avg-fixed.netperf.exhost_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1073.54| 10.50| 102| 0| 31|
0| 1612| 0| 16| 487641| 489753|
504764| 0.00| 0.00
2 1| 64| 1079.44| 10.29| 104| 0| 30|
0| 1594| 0| 17| 487156| 488828|
504411| 0.00| 0.00
% | 0.0| +0.5| -2.0| +2.0| 0| -3.2|
0| -1.1| 0| +6.2| -0.1| -0.2|
-0.1| 0| 0
1 2| 64| 2141.12| 15.72| 136| 0| 33|
0| 1744| 0| 34| 873777| 972303|
928926| 0.00| 0.00
2 2| 64| 2140.88| 15.64| 137| 0| 33|
0| 1744| 0| 34| 926588| 942841|
974095| 0.00| 0.00
% | 0.0| -0.0| -0.5| +0.7| 0| 0.0|
0| 0.0| 0| 0.0| +6.0| -3.0|
+4.9| 0| 0
1 4| 64| 4076.80| 19.82| 205| 0| 30|
0| 1577| 0| 67| 1422282| 1166425|
1539219| 0.00| 0.00
2 4| 64| 4094.32| 20.70| 197| 0| 31|
0| 1612| 0| 68| 1704330| 1314077|
1833394| 0.00| 0.00
% | 0.0| +0.4| +4.4| -3.9| 0| +3.3|
0| +2.2| 0| +1.5| +19.8| +12.7|
+19.1| 0| 0
1 1| 256| 2867.48| 13.44| 213| 0| 32|
0| 1726| 0| 14| 666430| 694922|
690730| 0.00| 0.00
2 1| 256| 2874.20| 12.71| 226| 0| 32|
0| 1709| 0| 14| 697960| 740407|
721807| 0.00| 0.00
% | 0.0| +0.2| -5.4| +6.1| 0| 0.0|
0| -1.0| 0| 0.0| +4.7| +6.5|
+4.5| 0| 0
1 2| 256| 5642.82| 17.61| 320| 0| 30|
0| 1594| 0| 30| 1226861| 1236081|
1268562| 0.00| 0.00
2 2| 256| 5661.06| 17.41| 326| 0| 30|
0| 1594| 0| 29| 1175696| 1143490|
1221528| 0.00| 0.00
% | 0.0| +0.3| -1.1| +1.9| 0| 0.0|
0| 0.0| 0| -3.3| -4.2| -7.5|
-3.7| 0| 0
1 4| 256| 9404.27| 23.55| 399| 0| 33|
0| 1744| 0| 37| 1692245| 659975|
1765103| 0.00| 0.00
2 4| 256| 8761.11| 23.18| 376| 0| 32|
0| 1726| 0| 36| 1699382| 418992|
1870804| 0.00| 0.00
% | 0.0| -6.8| -1.6| -5.8| 0| -3.0|
0| -1.0| 0| -2.7| +0.4| -36.5|
+6.0| 0| 0
1 1| 512| 3803.66| 14.20| 267| 0| 30|
0| 1594| 0| 14| 693992| 750078|
721107| 0.00| 0.00
2 1| 512| 3838.02| 15.47| 248| 0| 31|
0| 1612| 0| 15| 811709| 773505|
838788| 0.00| 0.00
% | 0.0| +0.9| +8.9| -7.1| 0| +3.3|
0| +1.1| 0| +7.1| +17.0| +3.1|
+16.3| 0| 0
1 2| 512| 8606.11| 19.34| 444| 0| 32|
0| 1709| 0| 29| 1264624| 647652|
1309740| 0.00| 0.00
2 2| 512| 8127.80| 18.93| 428| 0| 32|
0| 1726| 0| 28| 1216606| 1179269|
1266260| 0.00| 0.00
% | 0.0| -5.6| -2.1| -3.6| 0| 0.0|
0| +1.0| 0| -3.4| -3.8| +82.1|
-3.3| 0| 0
1 4| 512| 9409.41| 22.88| 413| 0| 30|
0| 1577| 0| 35| 1592587| 1072862|
1746787| 0.00| 0.00
2 4| 512| 9217.34| 23.05| 400| 0| 30|
0| 1594| 0| 34| 1596515| 513742|
1831538| 0.00| 0.00
% | 0.0| -2.0| +0.7| -3.1| 0| 0.0|
0| +1.1| 0| -2.9| +0.2| -52.1|
+4.9| 0| 0
1 1| 1024| 4389.75| 14.62| 303| 0| 32|
0| 1726| 0| 14| 663417| 611555|
689028| 0.00| 0.00
2 1| 1024| 4390.44| 13.66| 321| 0| 32|
0| 1726| 0| 13| 609836| 556090|
634511| 0.00| 0.00
% | 0.0| +0.0| -6.6| +5.9| 0| 0.0|
0| 0.0| 0| -7.1| -8.1| -9.1|
-7.9| 0| 0
1 2| 1024| 9046.18| 19.63| 460| 0| 30|
0| 1594| 0| 28| 1206853| 1054653|
1256203| 0.00| 0.00
2 2| 1024| 9027.54| 20.15| 447| 0| 30|
0| 1577| 0| 27| 1179555| 884408|
1226843| 0.00| 0.00
% | 0.0| -0.2| +2.6| -2.8| 0| 0.0|
0| -1.1| 0| -3.6| -2.3| -16.1|
-2.3| 0| 0
1 4| 1024| 9410.41| 22.01| 427| 0| 32|
0| 1726| 0| 36| 1734433| 887190|
1852486| 0.00| 0.00
2 4| 1024| 9409.11| 23.18| 405| 0| 32|
0| 1726| 0| 34| 1695359| 625268|
1803599| 0.00| 0.00
% | 0.0| -0.0| +5.3| -5.2| 0| 0.0|
0| 0.0| 0| -5.6| -2.3| -29.5|
-2.6| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1056.13| 17.51| 59| 0| 30|
0| 1594| 3| 86| 476098| 4780186|
538158| 0.00| 0.00
2 1| 64| 1065.51| 17.64| 60| 0| 30|
0| 1594| 3| 87| 476836| 4823602|
538860| 0.00| 0.00
% | 0.0| +0.9| +0.7| +1.7| 0| 0.0|
0| 0.0| 0.0| +1.2| +0.2| +0.9|
+0.1| 0| 0
1 2| 64| 2472.80| 32.18| 76| 0| 32|
0| 1709| 2| 199| 479119| 2089931|
600119| 0.00| 0.00
2 2| 64| 2468.76| 32.28| 76| 0| 33|
0| 1744| 1| 199| 479372| 2179342|
600328| 0.00| 0.00
% | 0.0| -0.2| +0.3| 0.0| 0| +3.1|
0| +2.0| -50.0| 0.0| +0.1| +4.3|
+0.0| 0| 0
1 4| 64| 2453.22| 32.20| 75| 0| 31|
0| 1612| 2| 198| 479223| 2175801|
600081| 0.00| 0.00
2 4| 64| 2465.68| 32.30| 76| 0| 30|
0| 1594| 3| 200| 479404| 2108293|
600252| 0.00| 0.00
% | 0.0| +0.5| +0.3| +1.3| 0| -3.2|
0| -1.1| +50.0| +1.0| +0.0| -3.1|
+0.0| 0| 0
1 1| 256| 3608.37| 24.59| 146| 0| 32|
0| 1726| 2| 277| 88346| 108310|
150637| 0.00| 0.00
2 1| 256| 3611.12| 24.95| 144| 0| 32|
0| 1709| 0| 281| 83319| 64354|
145511| 0.00| 0.00
% | 0.0| +0.1| +1.5| -1.4| 0| 0.0|
0| -1.0| -100.0| +1.4| -5.7| -40.6|
-3.4| 0| 0
1 2| 256| 7373.32| 26.83| 274| 0| 31|
0| 1612| 0| 4185| 278932| 264031|
377267| 0.00| 0.00
2 2| 256| 7460.03| 26.93| 276| 0| 30|
0| 1594| 1| 5913| 270840| 246165|
371999| 0.00| 0.00
% | 0.0| +1.2| +0.4| +0.7| 0| -3.2|
0| -1.1| 0| +41.3| -2.9| -6.8|
-1.4| 0| 0
1 4| 256| 9322.66| 29.73| 313| 0| 32|
0| 1709| 848| 3041| 363114| 329308|
482586| 0.00| 0.00
2 4| 256| 9365.52| 29.59| 316| 0| 33|
0| 1744| 414| 2884| 371485| 339191|
491366| 0.00| 0.00
% | 0.0| +0.5| -0.5| +1.0| 0| +3.1|
0| +2.0| -51.2| -5.2| +2.3| +3.0|
+1.8| 0| 0
1 1| 512| 9360.25| 17.20| 543| 0| 30|
0| 1577| 0| 387| 438621| 408062|
499989| 0.00| 0.00
2 1| 512| 8899.37| 18.17| 495| 0| 30|
0| 1594| 0| 5049| 393341| 371545|
459397| 0.00| 0.00
% | 0.0| -4.9| +5.6| -8.8| 0| 0.0|
0| +1.1| 0| +1204.7| -10.3| -8.9|
-8.1| 0| 0
1 2| 512| 8713.11| 20.77| 420| 0| 32|
0| 1726| 0| 11227| 296157| 246495|
371632| 0.00| 0.00
2 2| 512| 8686.31| 20.72| 421| 0| 32|
0| 1709| 0| 11002| 296608| 246597|
371797| 0.00| 0.00
% | 0.0| -0.3| -0.2| +0.2| 0| 0.0|
0| -1.0| 0| -2.0| +0.2| +0.0|
+0.0| 0| 0
1 4| 512| 8780.40| 22.72| 386| 0| 30|
0| 1594| 0| 10337| 303619| 249822|
385457| 0.00| 0.00
2 4| 512| 8858.51| 22.66| 390| 0| 30|
0| 1577| 0| 9968| 301847| 246543|
382121| 0.00| 0.00
% | 0.0| +0.9| -0.3| +1.0| 0| 0.0|
0| -1.1| 0| -3.6| -0.6| -1.3|
-0.9| 0| 0
1 1| 1024| 9387.09| 16.43| 571| 0| 32|
0| 1726| 0| 84| 452351| 429483|
504022| 0.00| 0.00
2 1| 1024| 9388.90| 16.51| 568| 0| 32|
0| 1726| 2| 76| 446994| 422489|
499025| 0.00| 0.00
% | 0.0| +0.0| +0.5| -0.5| 0| 0.0|
0| 0.0| 0| -9.5| -1.2| -1.6|
-1.0| 0| 0
1 2| 1024| 9361.43| 17.26| 542| 0| 30|
0| 1594| 5| 647| 388626| 358303|
442125| 0.00| 0.00
2 2| 1024| 9364.78| 17.25| 542| 0| 31|
0| 1612| 35| 554| 389326| 360169|
442343| 0.00| 0.00
% | 0.0| +0.0| -0.1| 0.0| 0| +3.3|
0| +1.1| +600.0| -14.4| +0.2| +0.5|
+0.0| 0| 0
1 4| 1024| 9381.57| 18.35| 510| 0| 32|
0| 1726| 1189| 648| 405900| 376269|
459845| 0.00| 0.00
2 4| 1024| 9393.48| 18.27| 513| 0| 32|
0| 1726| 1754| 610| 402132| 373768|
455629| 0.00| 0.00
% | 0.0| +0.1| -0.4| +0.6| 0| 0.0|
0| 0.0| +47.5| -5.9| -0.9| -0.7|
-0.9| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 10903.70| 8.03| 1382| 0| 32|
0| 1698| 0| 9| 654298| 654362|
665532| 0.00| 0.00
2 50| 64| 10880.50| 7.40| 1488| 0| 32|
0| 1698| 0| 10| 652907| 652973|
667042| 0.00| 0.00
% | 0.0| -0.2| -7.8| +7.7| 0| 0.0|
0| 0.0| 0| +11.1| -0.2| -0.2|
+0.2| 0| 0
1 100| 64| 10953.00| 8.40| 1332| 0| 34|
0| 1830| 0| 10| 657257| 657325|
667088| 0.00| 0.00
2 100| 64| 10882.78| 7.67| 1439| 0| 34|
0| 1830| 0| 9| 653044| 653110|
668883| 0.00| 0.00
% | 0.0| -0.6| -8.7| +8.0| 0| 0.0|
0| 0.0| 0| -10.0| -0.6| -0.6|
+0.3| 0| 0
1 250| 64| 10902.66| 8.57| 1300| 0| 33|
0| 1716| 0| 10| 654235| 654308|
665518| 0.00| 0.00
2 250| 64| 10866.79| 7.58| 1449| 0| 32|
0| 1664| 0| 10| 652083| 652155|
666869| 0.00| 0.00
% | 0.0| -0.3| -11.6| +11.5| 0| -3.0|
0| -3.0| 0| 0.0| -0.3| -0.3|
+0.2| 0| 0
1 500| 64| 10924.34| 7.25| 1509| 0| 34|
0| 1830| 0| 10| 655536| 655619|
665776| 0.00| 0.00
2 500| 64| 10927.52| 6.50| 1684| 0| 34|
0| 1813| 0| 10| 655726| 655803|
668527| 0.00| 0.00
% | 0.0| +0.0| -10.3| +11.6| 0| 0.0|
0| -0.9| 0| 0.0| +0.0| +0.0|
+0.4| 0| 0
1 50| 256| 10407.35| 9.38| 1112| 0| 32|
0| 1681| 0| 9| 624516| 624581|
639159| 0.00| 0.00
2 50| 256| 10422.60| 9.45| 1108| 0| 33|
0| 1716| 0| 9| 625432| 625498|
641343| 0.00| 0.00
% | 0.0| +0.1| +0.7| -0.4| 0| +3.1|
0| +2.1| 0| 0.0| +0.1| +0.1|
+0.3| 0| 0
1 100| 256| 10404.30| 8.99| 1159| 0| 34|
0| 1830| 0| 9| 624335| 624400|
637357| 0.00| 0.00
2 100| 256| 10442.84| 9.57| 1093| 0| 35|
0| 1848| 0| 9| 626650| 626714|
639017| 0.00| 0.00
% | 0.0| +0.4| +6.5| -5.7| 0| +2.9|
0| +1.0| 0| 0.0| +0.4| +0.4|
+0.3| 0| 0
1 250| 256| 10427.71| 9.10| 1157| 0| 32|
0| 1698| 0| 9| 625738| 625822|
641221| 0.00| 0.00
2 250| 256| 10464.71| 9.69| 1085| 0| 32|
0| 1698| 0| 9| 627960| 628040|
640680| 0.00| 0.00
% | 0.0| +0.4| +6.5| -6.2| 0| 0.0|
0| 0.0| 0| 0.0| +0.4| +0.4|
-0.1| 0| 0
1 500| 256| 10442.18| 8.65| 1217| 0| 34|
0| 1830| 0| 10| 626608| 626675|
640081| 0.00| 0.00
2 500| 256| 10463.74| 9.63| 1089| 0| 34|
0| 1813| 0| 9| 627904| 627967|
643152| 0.00| 0.00
% | 0.0| +0.2| +11.3| -10.5| 0| 0.0|
0| -0.9| 0| -10.0| +0.2| +0.2|
+0.5| 0| 0
1 50| 512| 8505.70| 7.20| 1191| 0| 33|
0| 1716| 0| 7| 510418| 510486|
524904| 0.00| 0.00
2 50| 512| 8563.34| 7.24| 1185| 0| 32|
0| 1664| 0| 8| 513877| 513940|
526294| 0.00| 0.00
% | 0.0| +0.7| +0.6| -0.5| 0| -3.0|
0| -3.0| 0| +14.3| +0.7| +0.7|
+0.3| 0| 0
1 100| 512| 8509.97| 7.00| 1226| 0| 34|
0| 1830| 0| 7| 510674| 510756|
525205| 0.00| 0.00
2 100| 512| 8555.22| 7.52| 1144| 0| 34|
0| 1830| 0| 7| 513389| 513471|
526609| 0.00| 0.00
% | 0.0| +0.5| +7.4| -6.7| 0| 0.0|
0| 0.0| 0| 0.0| +0.5| +0.5|
+0.3| 0| 0
1 250| 512| 8507.35| 7.21| 1183| 0| 32|
0| 1681| 0| 7| 510518| 510579|
524294| 0.00| 0.00
2 250| 512| 8578.13| 7.01| 1223| 0| 33|
0| 1716| 0| 8| 514765| 514829|
526481| 0.00| 0.00
% | 0.0| +0.8| -2.8| +3.4| 0| +3.1|
0| +2.1| 0| +14.3| +0.8| +0.8|
+0.4| 0| 0
1 500| 512| 8521.68| 6.54| 1302| 0| 34|
0| 1813| 0| 8| 511375| 511443|
523357| 0.00| 0.00
2 500| 512| 8573.17| 6.94| 1235| 0| 34|
0| 1830| 0| 7| 514467| 514533|
526131| 0.00| 0.00
% | 0.0| +0.6| +6.1| -5.1| 0| 0.0|
0| +0.9| 0| -12.5| +0.6| +0.6|
+0.5| 0| 0
1 50| 1024| 8150.01| 7.69| 1060| 0| 32|
0| 1681| 0| 7| 489075| 489155|
503136| 0.00| 0.00
2 50| 1024| 8129.35| 7.65| 1062| 0| 34|
0| 1804| 0| 7| 487841| 487915|
502061| 0.00| 0.00
% | 0.0| -0.3| -0.5| +0.2| 0| +6.2|
0| +7.3| 0| 0.0| -0.3| -0.3|
-0.2| 0| 0
1 100| 1024| 8166.06| 7.53| 1083| 0| 34|
0| 1804| 0| 7| 490039| 490104|
502990| 0.00| 0.00
2 100| 1024| 8118.23| 7.77| 1044| 0| 33|
0| 1725| 0| 7| 487171| 487236|
501939| 0.00| 0.00
% | 0.0| -0.6| +3.2| -3.6| 0| -2.9|
0| -4.4| 0| 0.0| -0.6| -0.6|
-0.2| 0| 0
1 250| 1024| 8175.35| 7.58| 1079| 0| 35|
0| 1848| 0| 7| 490597| 490657|
503641| 0.00| 0.00
2 250| 1024| 8146.63| 7.59| 1072| 0| 34|
0| 1813| 0| 7| 488874| 488939|
502010| 0.00| 0.00
% | 0.0| -0.4| +0.1| -0.6| 0| -2.9|
0| -1.9| 0| 0.0| -0.4| -0.4|
-0.3| 0| 0
1 500| 1024| 8182.51| 7.61| 1075| 0| 32|
0| 1698| 0| 7| 491028| 491095|
504222| 0.00| 0.00
2 500| 1024| 8157.39| 7.58| 1075| 0| 33|
0| 1716| 0| 7| 489521| 489593|
502368| 0.00| 0.00
% | 0.0| -0.3| -0.4| 0.0| 0| +3.1|
0| +1.1| 0| 0.0| -0.3| -0.3|
-0.4| 0| 0
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.host_guest.txt
2 - avg-fixed.netperf.host_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 715.76| 28.44| 24| 0| 31|
0| 1629| 0| 36| 3206862| 1733540|
3245171| 0.00| 0.00
2 1| 64| 714.82| 28.44| 25| 0| 31|
0| 1612| 0| 36| 3204256| 1709508|
3242450| 0.00| 0.00
% | 0.0| -0.1| 0.0| +4.2| 0| 0.0|
0| -1.0| 0| 0.0| -0.1| -1.4|
-0.1| 0| 0
1 2| 64| 1449.31| 41.23| 35| 0| 33|
0| 1744| 0| 66| 2764635| 1667527|
2815591| 0.00| 0.00
2 2| 64| 1442.92| 41.32| 34| 0| 32|
0| 1709| 0| 66| 2751461| 1659498|
2799277| 0.00| 0.00
% | 0.0| -0.4| +0.2| -2.9| 0| -3.0|
0| -2.0| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 4| 64| 2671.25| 48.95| 54| 0| 30|
0| 1577| 0| 47| 914085| 289771|
947054| 0.00| 0.00
2 4| 64| 2652.68| 48.20| 54| 0| 30|
0| 1594| 0| 46| 882300| 293273|
914249| 0.00| 0.00
% | 0.0| -0.7| -1.5| 0.0| 0| 0.0|
0| +1.1| 0| -2.1| -3.5| +1.2|
-3.5| 0| 0
1 1| 256| 1478.61| 29.34| 50| 0| 32|
0| 1709| 0| 64| 3502384| 1541681|
3545371| 0.00| 0.00
2 1| 256| 1481.38| 29.27| 50| 0| 32|
0| 1726| 0| 64| 3485623| 1526105|
3528343| 0.00| 0.00
% | 0.0| +0.2| -0.2| 0.0| 0| 0.0|
0| +1.0| 0| 0.0| -0.5| -1.0|
-0.5| 0| 0
1 2| 256| 3095.93| 42.31| 72| 0| 31|
0| 1612| 0| 123| 1521019| 466426|
1637722| 0.00| 0.00
2 2| 256| 3098.16| 42.03| 73| 0| 30|
0| 1594| 0| 123| 1519458| 472632|
1632462| 0.00| 0.00
% | 0.0| +0.1| -0.7| +1.4| 0| -3.2|
0| -1.1| 0| 0.0| -0.1| +1.3|
-0.3| 0| 0
1 4| 256| 6553.60| 38.44| 170| 0| 33|
0| 1761| 0| 38| 1343193| 237604|
1402385| 0.00| 0.00
2 4| 256| 6649.37| 38.34| 172| 0| 32|
0| 1726| 0| 32| 1343770| 236320|
1400875| 0.00| 0.00
% | 0.0| +1.5| -0.3| +1.2| 0| -3.0|
0| -2.0| 0| -15.8| +0.0| -0.5|
-0.1| 0| 0
1 1| 512| 1818.40| 29.28| 61| 0| 31|
0| 1646| 0| 76| 3326887| 1491961|
3371189| 0.00| 0.00
2 1| 512| 1822.74| 29.45| 61| 0| 30|
0| 1577| 0| 76| 3309934| 1470715|
3352921| 0.00| 0.00
% | 0.0| +0.2| +0.6| 0.0| 0| -3.2|
0| -4.2| 0| 0.0| -0.5| -1.4|
-0.5| 0| 0
1 2| 512| 3931.72| 43.51| 89| 0| 33|
0| 1761| 0| 137| 1148331| 301194|
1270351| 0.00| 0.00
2 2| 512| 3926.16| 43.45| 90| 0| 32|
0| 1726| 0| 135| 1166280| 306110|
1288869| 0.00| 0.00
% | 0.0| -0.1| -0.1| +1.1| 0| -3.0|
0| -2.0| 0| -1.5| +1.6| +1.6|
+1.5| 0| 0
1 4| 512| 8634.49| 40.69| 211| 0| 31|
0| 1612| 0| 53| 1869998| 353856|
1948593| 0.00| 0.00
2 4| 512| 9137.12| 40.77| 223| 0| 30|
0| 1594| 0| 48| 1879574| 362851|
1959044| 0.00| 0.00
% | 0.0| +5.8| +0.2| +5.7| 0| -3.2|
0| -1.1| 0| -9.4| +0.5| +2.5|
+0.5| 0| 0
1 1| 1024| 2042.67| 29.50| 68| 0| 33|
0| 1778| 0| 84| 3087032| 1309160|
3130736| 0.00| 0.00
2 1| 1024| 2033.24| 29.51| 68| 0| 32|
0| 1726| 0| 83| 3082898| 1295936|
3125229| 0.00| 0.00
% | 0.0| -0.5| +0.0| 0.0| 0| -3.0|
0| -2.9| 0| -1.2| -0.1| -1.0|
-0.2| 0| 0
1 2| 1024| 7703.26| 39.58| 194| 0| 32|
0| 1673| 0| 65| 2522172| 663302|
2684835| 0.00| 0.00
2 2| 1024| 7657.00| 39.27| 194| 0| 30|
0| 1594| 0| 62| 2607281| 698035|
2755198| 0.00| 0.00
% | 0.0| -0.6| -0.8| 0.0| 0| -6.2|
0| -4.7| 0| -4.6| +3.4| +5.2|
+2.6| 0| 0
1 4| 1024| 11814.84| 39.38| 299| 0| 32|
0| 1700| 0| 28| 2510318| 576071|
2596631| 0.00| 0.00
2 4| 1024| 12871.76| 38.93| 330| 0| 32|
0| 1726| 0| 25| 2232437| 632785|
2316035| 0.00| 0.00
% | 0.0| +8.9| -1.1| +10.4| 0| 0.0|
0| +1.5| 0| -10.7| -11.1| +9.8|
-10.8| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 706.98| 26.25| 26| 0| 31|
0| 1656| 0| 80| 2630204| 4185330|
2692397| 0.00| 0.00
2 1| 64| 767.45| 27.78| 27| 0| 30|
0| 1594| 0| 85| 2626694| 4317273|
2688799| 0.00| 0.00
% | 0.0| +8.6| +5.8| +3.8| 0| -3.2|
0| -3.7| 0| +6.2| -0.1| +3.2|
-0.1| 0| 0
1 2| 64| 2644.57| 42.60| 61| 0| 32|
0| 1700| 0| 34863| 49057| 16791|
204805| 0.00| 0.00
2 2| 64| 2721.19| 42.69| 63| 0| 32|
0| 1709| 0| 42365| 52739| 20094|
215895| 0.00| 0.00
% | 0.0| +2.9| +0.2| +3.3| 0| 0.0|
0| +0.5| 0| +21.5| +7.5| +19.7|
+5.4| 0| 0
1 4| 64| 2756.40| 42.69| 64| 0| 32|
0| 1708| 0| 52043| 47976| 12694|
220732| 0.00| 0.00
2 4| 64| 2709.19| 42.79| 62| 0| 30|
0| 1594| 0| 50144| 47275| 12743|
218074| 0.00| 0.00
% | 0.0| -1.7| +0.2| -3.1| 0| -6.2|
0| -6.7| 0| -3.6| -1.5| +0.4|
-1.2| 0| 0
1 1| 256| 3785.63| 32.34| 116| 0| 33|
0| 1734| 0| 36642| 58940| 1187|
157652| 0.00| 0.00
2 1| 256| 3593.17| 32.90| 108| 0| 32|
0| 1726| 0| 33179| 54980| 1130|
150168| 0.00| 0.00
% | 0.0| -5.1| +1.7| -6.9| 0| -3.0|
0| -0.5| 0| -9.5| -6.7| -4.8|
-4.7| 0| 0
1 2| 256| 8316.26| 40.45| 205| 0| 32|
0| 1673| 0| 28302| 114835| 1655|
251137| 0.00| 0.00
2 2| 256| 8390.41| 41.17| 203| 0| 30|
0| 1594| 0| 31222| 115372| 1696|
257151| 0.00| 0.00
% | 0.0| +0.9| +1.8| -1.0| 0| -6.2|
0| -4.7| 0| +10.3| +0.5| +2.5|
+2.4| 0| 0
1 4| 256| 9672.49| 42.40| 227| 0| 33|
0| 1761| 0| 30045| 132027| 3059|
283491| 0.00| 0.00
2 4| 256| 9741.71| 42.57| 228| 0| 32|
0| 1726| 6| 28875| 132125| 1999|
283036| 0.00| 0.00
% | 0.0| +0.7| +0.4| +0.4| 0| -3.0|
0| -2.0| 0| -3.9| +0.1| -34.7|
-0.2| 0| 0
1 1| 512| 6052.41| 32.23| 187| 0| 31|
0| 1612| 0| 44681| 86084| 2592|
187465| 0.00| 0.00
2 1| 512| 6267.37| 32.51| 192| 0| 30|
0| 1577| 0| 45278| 88449| 2708|
191374| 0.00| 0.00
% | 0.0| +3.6| +0.9| +2.7| 0| -3.2|
0| -2.2| 0| +1.3| +2.7| +4.5|
+2.1| 0| 0
1 2| 512| 12714.52| 38.27| 331| 0| 33|
0| 1744| 0| 24843| 169170| 2381|
292210| 0.00| 0.00
2 2| 512| 11341.65| 37.30| 303| 0| 32|
0| 1726| 14| 27393| 152465| 2980|
270740| 0.00| 0.00
% | 0.0| -10.8| -2.5| -8.5| 0| -3.0|
0| -1.0| 0| +10.3| -9.9| +25.2|
-7.3| 0| 0
1 4| 512| 16127.03| 40.80| 394| 0| 31|
0| 1612| 0| 15063| 210628| 2234|
344124| 0.00| 0.00
2 4| 512| 14709.72| 39.94| 367| 0| 31|
0| 1612| 0| 17823| 193670| 4457|
324744| 0.00| 0.00
% | 0.0| -8.8| -2.1| -6.9| 0| 0.0|
0| 0.0| 0| +18.3| -8.1| +99.5|
-5.6| 0| 0
1 1| 1024| 6436.88| 30.31| 212| 0| 33|
0| 1778| 0| 47820| 83940| 2007|
172847| 0.00| 0.00
2 1| 1024| 6495.48| 30.51| 212| 0| 32|
0| 1726| 0| 47771| 85436| 2038|
175027| 0.00| 0.00
% | 0.0| +0.9| +0.7| 0.0| 0| -3.0|
0| -2.9| 0| -0.1| +1.8| +1.5|
+1.3| 0| 0
1 2| 1024| 12245.34| 33.44| 365| 0| 31|
0| 1629| 0| 26499| 162142| 2909|
255717| 0.00| 0.00
2 2| 1024| 12913.57| 33.93| 380| 0| 31|
0| 1612| 0| 24196| 171386| 3671|
266270| 0.00| 0.00
% | 0.0| +5.5| +1.5| +4.1| 0| 0.0|
0| -1.0| 0| -8.7| +5.7| +26.2|
+4.1| 0| 0
1 4| 1024| 16428.48| 34.81| 471| 0| 32|
0| 1709| 0| 12496| 215031| 6557|
318039| 0.00| 0.00
2 4| 1024| 17294.33| 35.05| 492| 0| 32|
0| 1709| 0| 9444| 224694| 4095|
328098| 0.00| 0.00
% | 0.0| +5.3| +0.7| +4.5| 0| 0.0|
0| 0.0| 0| -24.4| +4.5| -37.5|
+3.2| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts|
#rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
#io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 14626.43| 14.93| 980| 0| 32|
0| 1681| 0| 13| 877664| 877731|
902624| 0.00| 0.00
2 50| 64| 14639.95| 13.10| 1123| 0| 32|
0| 1681| 0| 13| 878475| 878538|
897278| 0.00| 0.00
% | 0.0| +0.1| -12.3| +14.6| 0| 0.0|
0| 0.0| 0| 0.0| +0.1| +0.1|
-0.6| 0| 0
1 100| 64| 14697.50| 14.31| 1029| 0| 34|
0| 1830| 0| 13| 881930| 881991|
903837| 0.00| 0.00
2 100| 64| 14692.35| 13.08| 1128| 0| 34|
0| 1830| 0| 13| 881619| 881679|
898952| 0.00| 0.00
% | 0.0| -0.0| -8.6| +9.6| 0| 0.0|
0| 0.0| 0| 0.0| -0.0| -0.0|
-0.5| 0| 0
1 250| 64| 14683.40| 14.34| 1027| 0| 32|
0| 1698| 0| 13| 881083| 881147|
903071| 0.00| 0.00
2 250| 64| 14677.06| 12.85| 1144| 0| 32|
0| 1698| 0| 13| 880702| 880762|
898190| 0.00| 0.00
% | 0.0| -0.0| -10.4| +11.4| 0| 0.0|
0| 0.0| 0| 0.0| -0.0| -0.0|
-0.5| 0| 0
1 500| 64| 14698.45| 14.39| 1025| 0| 34|
0| 1830| 0| 13| 881985| 882060|
905537| 0.00| 0.00
2 500| 64| 14626.17| 13.54| 1083| 0| 34|
0| 1830| 0| 13| 877648| 877726|
896427| 0.00| 0.00
% | 0.0| -0.5| -5.9| +5.7| 0| 0.0|
0| 0.0| 0| 0.0| -0.5| -0.5|
-1.0| 0| 0
1 50| 256| 14386.52| 14.14| 1018| 0| 33|
0| 1716| 0| 13| 863266| 863336|
887195| 0.00| 0.00
2 50| 256| 14359.26| 14.22| 1016| 0| 32|
0| 1681| 0| 13| 861630| 861698|
882444| 0.00| 0.00
% | 0.0| -0.2| +0.6| -0.2| 0| -3.0|
0| -2.0| 0| 0.0| -0.2| -0.2|
-0.5| 0| 0
1 100| 256| 14364.89| 14.25| 1008| 0| 34|
0| 1813| 0| 13| 861969| 862033|
886679| 0.00| 0.00
2 100| 256| 14393.82| 14.53| 999| 0| 34|
0| 1813| 0| 13| 863704| 863765|
884487| 0.00| 0.00
% | 0.0| +0.2| +2.0| -0.9| 0| 0.0|
0| 0.0| 0| 0.0| +0.2| +0.2|
-0.2| 0| 0
1 250| 256| 14387.95| 14.05| 1024| 0| 32|
0| 1681| 0| 13| 863352| 863429|
887505| 0.00| 0.00
2 250| 256| 14344.74| 14.62| 987| 0| 32|
0| 1698| 0| 13| 860760| 860843|
882154| 0.00| 0.00
% | 0.0| -0.3| +4.1| -3.6| 0| 0.0|
0| +1.0| 0| 0.0| -0.3| -0.3|
-0.6| 0| 0
1 500| 256| 14365.89| 14.19| 1013| 0| 33|
0| 1769| 0| 13| 862029| 862099|
885852| 0.00| 0.00
2 500| 256| 14329.59| 14.62| 990| 0| 34|
0| 1830| 0| 13| 859852| 861233|
880082| 0.00| 0.00
% | 0.0| -0.3| +3.0| -2.3| 0| +3.0|
0| +3.4| 0| 0.0| -0.3| -0.1|
-0.7| 0| 0
1 50| 512| 14273.07| 14.12| 1010| 0| 33|
0| 1742| 0| 13| 856460| 856524|
880356| 0.00| 0.00
2 50| 512| 14222.08| 14.72| 966| 0| 32|
0| 1698| 0| 12| 853398| 853468|
875621| 0.00| 0.00
% | 0.0| -0.4| +4.2| -4.4| 0| -3.0|
0| -2.5| 0| -7.7| -0.4| -0.4|
-0.5| 0| 0
1 100| 512| 14236.34| 14.51| 982| 0| 34|
0| 1804| 0| 13| 854258| 854335|
876662| 0.00| 0.00
2 100| 512| 14147.89| 14.85| 953| 0| 34|
0| 1813| 0| 13| 848947| 849031|
871773| 0.00| 0.00
% | 0.0| -0.6| +2.3| -3.0| 0| 0.0|
0| +0.5| 0| 0.0| -0.6| -0.6|
-0.6| 0| 0
1 250| 512| 14260.79| 14.53| 983| 0| 33|
0| 1760| 0| 13| 855721| 855791|
879099| 0.00| 0.00
2 250| 512| 14190.68| 14.87| 954| 0| 32|
0| 1698| 0| 13| 851517| 851580|
874119| 0.00| 0.00
% | 0.0| -0.5| +2.3| -3.0| 0| -3.0|
0| -3.5| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 500| 512| 14273.71| 14.18| 1008| 0| 33|
0| 1769| 0| 13| 856499| 856562|
879984| 0.00| 0.00
2 500| 512| 14213.87| 14.72| 967| 0| 34|
0| 1830| 0| 13| 852907| 852976|
875328| 0.00| 0.00
% | 0.0| -0.4| +3.8| -4.1| 0| +3.0|
0| +3.4| 0| 0.0| -0.4| -0.4|
-0.5| 0| 0
1 50| 1024| 14049.77| 13.89| 1024| 0| 32|
0| 1708| 0| 12| 843061| 843134|
863697| 0.00| 0.00
2 50| 1024| 13980.25| 14.38| 980| 0| 32|
0| 1698| 0| 12| 838890| 838973|
858350| 0.00| 0.00
% | 0.0| -0.5| +3.5| -4.3| 0| 0.0|
0| -0.6| 0| 0.0| -0.5| -0.5|
-0.6| 0| 0
1 100| 1024| 14025.66| 13.32| 1066| 0| 33|
0| 1769| 0| 13| 841616| 841685|
864460| 0.00| 0.00
2 100| 1024| 13993.30| 14.82| 946| 0| 34|
0| 1830| 0| 12| 839676| 839735|
859288| 0.00| 0.00
% | 0.0| -0.2| +11.3| -11.3| 0| +3.0|
0| +3.4| 0| -7.7| -0.2| -0.2|
-0.6| 0| 0
1 250| 1024| 14060.15| 13.90| 1023| 0| 35|
0| 1848| 0| 12| 843688| 843752|
864475| 0.00| 0.00
2 250| 1024| 13982.47| 15.34| 913| 0| 34|
0| 1830| 0| 12| 839026| 839089|
859914| 0.00| 0.00
% | 0.0| -0.6| +10.4| -10.8| 0| -2.9|
0| -1.0| 0| 0.0| -0.6| -0.6|
-0.5| 0| 0
1 500| 1024| 14051.14| 13.80| 1024| 0| 33|
0| 1716| 0| 13| 843144| 843212|
862981| 0.00| 0.00
2 500| 1024| 14013.95| 15.27| 918| 0| 32|
0| 1681| 0| 13| 840915| 840983|
862635| 0.00| 0.00
% | 0.0| -0.3| +10.7| -10.4| 0| -3.0|
0| -2.0| 0| 0.0| -0.3| -0.3|
-0.0| 0| 0
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
2011-12-19 2:19 ` Amos Kong
(?)
@ 2011-12-19 2:41 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 111+ messages in thread
From: Benjamin Herrenschmidt @ 2011-12-19 2:41 UTC (permalink / raw)
To: Amos Kong
Cc: kvm, Michael S. Tsirkin, linux-kernel, virtualization, rhod,
linux-arm-kernel
On Mon, 2011-12-19 at 10:19 +0800, Amos Kong wrote:
> I tested with the same environment and scenarios.
> tested one scenarios for three times and compute the average for more
> precision.
>
> Thanks, Amos
>
> --------- compare results -----------
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.exhost_guest.txt
> 2 - avg-fixed.netperf.exhost_guest.txt
The output is word wrapped and generally unreadable. Any chance you can
provide us with a summary of the outcome ?
Cheers,
Ben.
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 1073.54| 10.50| 102| 0| 31|
> 0| 1612| 0| 16| 487641| 489753|
> 504764| 0.00| 0.00
> 2 1| 64| 1079.44| 10.29| 104| 0| 30|
> 0| 1594| 0| 17| 487156| 488828|
> 504411| 0.00| 0.00
> % | 0.0| +0.5| -2.0| +2.0| 0| -3.2|
> 0| -1.1| 0| +6.2| -0.1| -0.2|
> -0.1| 0| 0
> 1 2| 64| 2141.12| 15.72| 136| 0| 33|
> 0| 1744| 0| 34| 873777| 972303|
> 928926| 0.00| 0.00
> 2 2| 64| 2140.88| 15.64| 137| 0| 33|
> 0| 1744| 0| 34| 926588| 942841|
> 974095| 0.00| 0.00
> % | 0.0| -0.0| -0.5| +0.7| 0| 0.0|
> 0| 0.0| 0| 0.0| +6.0| -3.0|
> +4.9| 0| 0
> 1 4| 64| 4076.80| 19.82| 205| 0| 30|
> 0| 1577| 0| 67| 1422282| 1166425|
> 1539219| 0.00| 0.00
> 2 4| 64| 4094.32| 20.70| 197| 0| 31|
> 0| 1612| 0| 68| 1704330| 1314077|
> 1833394| 0.00| 0.00
> % | 0.0| +0.4| +4.4| -3.9| 0| +3.3|
> 0| +2.2| 0| +1.5| +19.8| +12.7|
> +19.1| 0| 0
> 1 1| 256| 2867.48| 13.44| 213| 0| 32|
> 0| 1726| 0| 14| 666430| 694922|
> 690730| 0.00| 0.00
> 2 1| 256| 2874.20| 12.71| 226| 0| 32|
> 0| 1709| 0| 14| 697960| 740407|
> 721807| 0.00| 0.00
> % | 0.0| +0.2| -5.4| +6.1| 0| 0.0|
> 0| -1.0| 0| 0.0| +4.7| +6.5|
> +4.5| 0| 0
> 1 2| 256| 5642.82| 17.61| 320| 0| 30|
> 0| 1594| 0| 30| 1226861| 1236081|
> 1268562| 0.00| 0.00
> 2 2| 256| 5661.06| 17.41| 326| 0| 30|
> 0| 1594| 0| 29| 1175696| 1143490|
> 1221528| 0.00| 0.00
> % | 0.0| +0.3| -1.1| +1.9| 0| 0.0|
> 0| 0.0| 0| -3.3| -4.2| -7.5|
> -3.7| 0| 0
> 1 4| 256| 9404.27| 23.55| 399| 0| 33|
> 0| 1744| 0| 37| 1692245| 659975|
> 1765103| 0.00| 0.00
> 2 4| 256| 8761.11| 23.18| 376| 0| 32|
> 0| 1726| 0| 36| 1699382| 418992|
> 1870804| 0.00| 0.00
> % | 0.0| -6.8| -1.6| -5.8| 0| -3.0|
> 0| -1.0| 0| -2.7| +0.4| -36.5|
> +6.0| 0| 0
> 1 1| 512| 3803.66| 14.20| 267| 0| 30|
> 0| 1594| 0| 14| 693992| 750078|
> 721107| 0.00| 0.00
> 2 1| 512| 3838.02| 15.47| 248| 0| 31|
> 0| 1612| 0| 15| 811709| 773505|
> 838788| 0.00| 0.00
> % | 0.0| +0.9| +8.9| -7.1| 0| +3.3|
> 0| +1.1| 0| +7.1| +17.0| +3.1|
> +16.3| 0| 0
> 1 2| 512| 8606.11| 19.34| 444| 0| 32|
> 0| 1709| 0| 29| 1264624| 647652|
> 1309740| 0.00| 0.00
> 2 2| 512| 8127.80| 18.93| 428| 0| 32|
> 0| 1726| 0| 28| 1216606| 1179269|
> 1266260| 0.00| 0.00
> % | 0.0| -5.6| -2.1| -3.6| 0| 0.0|
> 0| +1.0| 0| -3.4| -3.8| +82.1|
> -3.3| 0| 0
> 1 4| 512| 9409.41| 22.88| 413| 0| 30|
> 0| 1577| 0| 35| 1592587| 1072862|
> 1746787| 0.00| 0.00
> 2 4| 512| 9217.34| 23.05| 400| 0| 30|
> 0| 1594| 0| 34| 1596515| 513742|
> 1831538| 0.00| 0.00
> % | 0.0| -2.0| +0.7| -3.1| 0| 0.0|
> 0| +1.1| 0| -2.9| +0.2| -52.1|
> +4.9| 0| 0
> 1 1| 1024| 4389.75| 14.62| 303| 0| 32|
> 0| 1726| 0| 14| 663417| 611555|
> 689028| 0.00| 0.00
> 2 1| 1024| 4390.44| 13.66| 321| 0| 32|
> 0| 1726| 0| 13| 609836| 556090|
> 634511| 0.00| 0.00
> % | 0.0| +0.0| -6.6| +5.9| 0| 0.0|
> 0| 0.0| 0| -7.1| -8.1| -9.1|
> -7.9| 0| 0
> 1 2| 1024| 9046.18| 19.63| 460| 0| 30|
> 0| 1594| 0| 28| 1206853| 1054653|
> 1256203| 0.00| 0.00
> 2 2| 1024| 9027.54| 20.15| 447| 0| 30|
> 0| 1577| 0| 27| 1179555| 884408|
> 1226843| 0.00| 0.00
> % | 0.0| -0.2| +2.6| -2.8| 0| 0.0|
> 0| -1.1| 0| -3.6| -2.3| -16.1|
> -2.3| 0| 0
> 1 4| 1024| 9410.41| 22.01| 427| 0| 32|
> 0| 1726| 0| 36| 1734433| 887190|
> 1852486| 0.00| 0.00
> 2 4| 1024| 9409.11| 23.18| 405| 0| 32|
> 0| 1726| 0| 34| 1695359| 625268|
> 1803599| 0.00| 0.00
> % | 0.0| -0.0| +5.3| -5.2| 0| 0.0|
> 0| 0.0| 0| -5.6| -2.3| -29.5|
> -2.6| 0| 0
> TCP_MAERTS
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 1056.13| 17.51| 59| 0| 30|
> 0| 1594| 3| 86| 476098| 4780186|
> 538158| 0.00| 0.00
> 2 1| 64| 1065.51| 17.64| 60| 0| 30|
> 0| 1594| 3| 87| 476836| 4823602|
> 538860| 0.00| 0.00
> % | 0.0| +0.9| +0.7| +1.7| 0| 0.0|
> 0| 0.0| 0.0| +1.2| +0.2| +0.9|
> +0.1| 0| 0
> 1 2| 64| 2472.80| 32.18| 76| 0| 32|
> 0| 1709| 2| 199| 479119| 2089931|
> 600119| 0.00| 0.00
> 2 2| 64| 2468.76| 32.28| 76| 0| 33|
> 0| 1744| 1| 199| 479372| 2179342|
> 600328| 0.00| 0.00
> % | 0.0| -0.2| +0.3| 0.0| 0| +3.1|
> 0| +2.0| -50.0| 0.0| +0.1| +4.3|
> +0.0| 0| 0
> 1 4| 64| 2453.22| 32.20| 75| 0| 31|
> 0| 1612| 2| 198| 479223| 2175801|
> 600081| 0.00| 0.00
> 2 4| 64| 2465.68| 32.30| 76| 0| 30|
> 0| 1594| 3| 200| 479404| 2108293|
> 600252| 0.00| 0.00
> % | 0.0| +0.5| +0.3| +1.3| 0| -3.2|
> 0| -1.1| +50.0| +1.0| +0.0| -3.1|
> +0.0| 0| 0
> 1 1| 256| 3608.37| 24.59| 146| 0| 32|
> 0| 1726| 2| 277| 88346| 108310|
> 150637| 0.00| 0.00
> 2 1| 256| 3611.12| 24.95| 144| 0| 32|
> 0| 1709| 0| 281| 83319| 64354|
> 145511| 0.00| 0.00
> % | 0.0| +0.1| +1.5| -1.4| 0| 0.0|
> 0| -1.0| -100.0| +1.4| -5.7| -40.6|
> -3.4| 0| 0
> 1 2| 256| 7373.32| 26.83| 274| 0| 31|
> 0| 1612| 0| 4185| 278932| 264031|
> 377267| 0.00| 0.00
> 2 2| 256| 7460.03| 26.93| 276| 0| 30|
> 0| 1594| 1| 5913| 270840| 246165|
> 371999| 0.00| 0.00
> % | 0.0| +1.2| +0.4| +0.7| 0| -3.2|
> 0| -1.1| 0| +41.3| -2.9| -6.8|
> -1.4| 0| 0
> 1 4| 256| 9322.66| 29.73| 313| 0| 32|
> 0| 1709| 848| 3041| 363114| 329308|
> 482586| 0.00| 0.00
> 2 4| 256| 9365.52| 29.59| 316| 0| 33|
> 0| 1744| 414| 2884| 371485| 339191|
> 491366| 0.00| 0.00
> % | 0.0| +0.5| -0.5| +1.0| 0| +3.1|
> 0| +2.0| -51.2| -5.2| +2.3| +3.0|
> +1.8| 0| 0
> 1 1| 512| 9360.25| 17.20| 543| 0| 30|
> 0| 1577| 0| 387| 438621| 408062|
> 499989| 0.00| 0.00
> 2 1| 512| 8899.37| 18.17| 495| 0| 30|
> 0| 1594| 0| 5049| 393341| 371545|
> 459397| 0.00| 0.00
> % | 0.0| -4.9| +5.6| -8.8| 0| 0.0|
> 0| +1.1| 0| +1204.7| -10.3| -8.9|
> -8.1| 0| 0
> 1 2| 512| 8713.11| 20.77| 420| 0| 32|
> 0| 1726| 0| 11227| 296157| 246495|
> 371632| 0.00| 0.00
> 2 2| 512| 8686.31| 20.72| 421| 0| 32|
> 0| 1709| 0| 11002| 296608| 246597|
> 371797| 0.00| 0.00
> % | 0.0| -0.3| -0.2| +0.2| 0| 0.0|
> 0| -1.0| 0| -2.0| +0.2| +0.0|
> +0.0| 0| 0
> 1 4| 512| 8780.40| 22.72| 386| 0| 30|
> 0| 1594| 0| 10337| 303619| 249822|
> 385457| 0.00| 0.00
> 2 4| 512| 8858.51| 22.66| 390| 0| 30|
> 0| 1577| 0| 9968| 301847| 246543|
> 382121| 0.00| 0.00
> % | 0.0| +0.9| -0.3| +1.0| 0| 0.0|
> 0| -1.1| 0| -3.6| -0.6| -1.3|
> -0.9| 0| 0
> 1 1| 1024| 9387.09| 16.43| 571| 0| 32|
> 0| 1726| 0| 84| 452351| 429483|
> 504022| 0.00| 0.00
> 2 1| 1024| 9388.90| 16.51| 568| 0| 32|
> 0| 1726| 2| 76| 446994| 422489|
> 499025| 0.00| 0.00
> % | 0.0| +0.0| +0.5| -0.5| 0| 0.0|
> 0| 0.0| 0| -9.5| -1.2| -1.6|
> -1.0| 0| 0
> 1 2| 1024| 9361.43| 17.26| 542| 0| 30|
> 0| 1594| 5| 647| 388626| 358303|
> 442125| 0.00| 0.00
> 2 2| 1024| 9364.78| 17.25| 542| 0| 31|
> 0| 1612| 35| 554| 389326| 360169|
> 442343| 0.00| 0.00
> % | 0.0| +0.0| -0.1| 0.0| 0| +3.3|
> 0| +1.1| +600.0| -14.4| +0.2| +0.5|
> +0.0| 0| 0
> 1 4| 1024| 9381.57| 18.35| 510| 0| 32|
> 0| 1726| 1189| 648| 405900| 376269|
> 459845| 0.00| 0.00
> 2 4| 1024| 9393.48| 18.27| 513| 0| 32|
> 0| 1726| 1754| 610| 402132| 373768|
> 455629| 0.00| 0.00
> % | 0.0| +0.1| -0.4| +0.6| 0| 0.0|
> 0| 0.0| +47.5| -5.9| -0.9| -0.7|
> -0.9| 0| 0
> TCP_RR
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 50| 64| 10903.70| 8.03| 1382| 0| 32|
> 0| 1698| 0| 9| 654298| 654362|
> 665532| 0.00| 0.00
> 2 50| 64| 10880.50| 7.40| 1488| 0| 32|
> 0| 1698| 0| 10| 652907| 652973|
> 667042| 0.00| 0.00
> % | 0.0| -0.2| -7.8| +7.7| 0| 0.0|
> 0| 0.0| 0| +11.1| -0.2| -0.2|
> +0.2| 0| 0
> 1 100| 64| 10953.00| 8.40| 1332| 0| 34|
> 0| 1830| 0| 10| 657257| 657325|
> 667088| 0.00| 0.00
> 2 100| 64| 10882.78| 7.67| 1439| 0| 34|
> 0| 1830| 0| 9| 653044| 653110|
> 668883| 0.00| 0.00
> % | 0.0| -0.6| -8.7| +8.0| 0| 0.0|
> 0| 0.0| 0| -10.0| -0.6| -0.6|
> +0.3| 0| 0
> 1 250| 64| 10902.66| 8.57| 1300| 0| 33|
> 0| 1716| 0| 10| 654235| 654308|
> 665518| 0.00| 0.00
> 2 250| 64| 10866.79| 7.58| 1449| 0| 32|
> 0| 1664| 0| 10| 652083| 652155|
> 666869| 0.00| 0.00
> % | 0.0| -0.3| -11.6| +11.5| 0| -3.0|
> 0| -3.0| 0| 0.0| -0.3| -0.3|
> +0.2| 0| 0
> 1 500| 64| 10924.34| 7.25| 1509| 0| 34|
> 0| 1830| 0| 10| 655536| 655619|
> 665776| 0.00| 0.00
> 2 500| 64| 10927.52| 6.50| 1684| 0| 34|
> 0| 1813| 0| 10| 655726| 655803|
> 668527| 0.00| 0.00
> % | 0.0| +0.0| -10.3| +11.6| 0| 0.0|
> 0| -0.9| 0| 0.0| +0.0| +0.0|
> +0.4| 0| 0
> 1 50| 256| 10407.35| 9.38| 1112| 0| 32|
> 0| 1681| 0| 9| 624516| 624581|
> 639159| 0.00| 0.00
> 2 50| 256| 10422.60| 9.45| 1108| 0| 33|
> 0| 1716| 0| 9| 625432| 625498|
> 641343| 0.00| 0.00
> % | 0.0| +0.1| +0.7| -0.4| 0| +3.1|
> 0| +2.1| 0| 0.0| +0.1| +0.1|
> +0.3| 0| 0
> 1 100| 256| 10404.30| 8.99| 1159| 0| 34|
> 0| 1830| 0| 9| 624335| 624400|
> 637357| 0.00| 0.00
> 2 100| 256| 10442.84| 9.57| 1093| 0| 35|
> 0| 1848| 0| 9| 626650| 626714|
> 639017| 0.00| 0.00
> % | 0.0| +0.4| +6.5| -5.7| 0| +2.9|
> 0| +1.0| 0| 0.0| +0.4| +0.4|
> +0.3| 0| 0
> 1 250| 256| 10427.71| 9.10| 1157| 0| 32|
> 0| 1698| 0| 9| 625738| 625822|
> 641221| 0.00| 0.00
> 2 250| 256| 10464.71| 9.69| 1085| 0| 32|
> 0| 1698| 0| 9| 627960| 628040|
> 640680| 0.00| 0.00
> % | 0.0| +0.4| +6.5| -6.2| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.4| +0.4|
> -0.1| 0| 0
> 1 500| 256| 10442.18| 8.65| 1217| 0| 34|
> 0| 1830| 0| 10| 626608| 626675|
> 640081| 0.00| 0.00
> 2 500| 256| 10463.74| 9.63| 1089| 0| 34|
> 0| 1813| 0| 9| 627904| 627967|
> 643152| 0.00| 0.00
> % | 0.0| +0.2| +11.3| -10.5| 0| 0.0|
> 0| -0.9| 0| -10.0| +0.2| +0.2|
> +0.5| 0| 0
> 1 50| 512| 8505.70| 7.20| 1191| 0| 33|
> 0| 1716| 0| 7| 510418| 510486|
> 524904| 0.00| 0.00
> 2 50| 512| 8563.34| 7.24| 1185| 0| 32|
> 0| 1664| 0| 8| 513877| 513940|
> 526294| 0.00| 0.00
> % | 0.0| +0.7| +0.6| -0.5| 0| -3.0|
> 0| -3.0| 0| +14.3| +0.7| +0.7|
> +0.3| 0| 0
> 1 100| 512| 8509.97| 7.00| 1226| 0| 34|
> 0| 1830| 0| 7| 510674| 510756|
> 525205| 0.00| 0.00
> 2 100| 512| 8555.22| 7.52| 1144| 0| 34|
> 0| 1830| 0| 7| 513389| 513471|
> 526609| 0.00| 0.00
> % | 0.0| +0.5| +7.4| -6.7| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.5| +0.5|
> +0.3| 0| 0
> 1 250| 512| 8507.35| 7.21| 1183| 0| 32|
> 0| 1681| 0| 7| 510518| 510579|
> 524294| 0.00| 0.00
> 2 250| 512| 8578.13| 7.01| 1223| 0| 33|
> 0| 1716| 0| 8| 514765| 514829|
> 526481| 0.00| 0.00
> % | 0.0| +0.8| -2.8| +3.4| 0| +3.1|
> 0| +2.1| 0| +14.3| +0.8| +0.8|
> +0.4| 0| 0
> 1 500| 512| 8521.68| 6.54| 1302| 0| 34|
> 0| 1813| 0| 8| 511375| 511443|
> 523357| 0.00| 0.00
> 2 500| 512| 8573.17| 6.94| 1235| 0| 34|
> 0| 1830| 0| 7| 514467| 514533|
> 526131| 0.00| 0.00
> % | 0.0| +0.6| +6.1| -5.1| 0| 0.0|
> 0| +0.9| 0| -12.5| +0.6| +0.6|
> +0.5| 0| 0
> 1 50| 1024| 8150.01| 7.69| 1060| 0| 32|
> 0| 1681| 0| 7| 489075| 489155|
> 503136| 0.00| 0.00
> 2 50| 1024| 8129.35| 7.65| 1062| 0| 34|
> 0| 1804| 0| 7| 487841| 487915|
> 502061| 0.00| 0.00
> % | 0.0| -0.3| -0.5| +0.2| 0| +6.2|
> 0| +7.3| 0| 0.0| -0.3| -0.3|
> -0.2| 0| 0
> 1 100| 1024| 8166.06| 7.53| 1083| 0| 34|
> 0| 1804| 0| 7| 490039| 490104|
> 502990| 0.00| 0.00
> 2 100| 1024| 8118.23| 7.77| 1044| 0| 33|
> 0| 1725| 0| 7| 487171| 487236|
> 501939| 0.00| 0.00
> % | 0.0| -0.6| +3.2| -3.6| 0| -2.9|
> 0| -4.4| 0| 0.0| -0.6| -0.6|
> -0.2| 0| 0
> 1 250| 1024| 8175.35| 7.58| 1079| 0| 35|
> 0| 1848| 0| 7| 490597| 490657|
> 503641| 0.00| 0.00
> 2 250| 1024| 8146.63| 7.59| 1072| 0| 34|
> 0| 1813| 0| 7| 488874| 488939|
> 502010| 0.00| 0.00
> % | 0.0| -0.4| +0.1| -0.6| 0| -2.9|
> 0| -1.9| 0| 0.0| -0.4| -0.4|
> -0.3| 0| 0
> 1 500| 1024| 8182.51| 7.61| 1075| 0| 32|
> 0| 1698| 0| 7| 491028| 491095|
> 504222| 0.00| 0.00
> 2 500| 1024| 8157.39| 7.58| 1075| 0| 33|
> 0| 1716| 0| 7| 489521| 489593|
> 502368| 0.00| 0.00
> % | 0.0| -0.3| -0.4| 0.0| 0| +3.1|
> 0| +1.1| 0| 0.0| -0.3| -0.3|
> -0.4| 0| 0
>
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.host_guest.txt
> 2 - avg-fixed.netperf.host_guest.txt
>
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 715.76| 28.44| 24| 0| 31|
> 0| 1629| 0| 36| 3206862| 1733540|
> 3245171| 0.00| 0.00
> 2 1| 64| 714.82| 28.44| 25| 0| 31|
> 0| 1612| 0| 36| 3204256| 1709508|
> 3242450| 0.00| 0.00
> % | 0.0| -0.1| 0.0| +4.2| 0| 0.0|
> 0| -1.0| 0| 0.0| -0.1| -1.4|
> -0.1| 0| 0
> 1 2| 64| 1449.31| 41.23| 35| 0| 33|
> 0| 1744| 0| 66| 2764635| 1667527|
> 2815591| 0.00| 0.00
> 2 2| 64| 1442.92| 41.32| 34| 0| 32|
> 0| 1709| 0| 66| 2751461| 1659498|
> 2799277| 0.00| 0.00
> % | 0.0| -0.4| +0.2| -2.9| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 4| 64| 2671.25| 48.95| 54| 0| 30|
> 0| 1577| 0| 47| 914085| 289771|
> 947054| 0.00| 0.00
> 2 4| 64| 2652.68| 48.20| 54| 0| 30|
> 0| 1594| 0| 46| 882300| 293273|
> 914249| 0.00| 0.00
> % | 0.0| -0.7| -1.5| 0.0| 0| 0.0|
> 0| +1.1| 0| -2.1| -3.5| +1.2|
> -3.5| 0| 0
> 1 1| 256| 1478.61| 29.34| 50| 0| 32|
> 0| 1709| 0| 64| 3502384| 1541681|
> 3545371| 0.00| 0.00
> 2 1| 256| 1481.38| 29.27| 50| 0| 32|
> 0| 1726| 0| 64| 3485623| 1526105|
> 3528343| 0.00| 0.00
> % | 0.0| +0.2| -0.2| 0.0| 0| 0.0|
> 0| +1.0| 0| 0.0| -0.5| -1.0|
> -0.5| 0| 0
> 1 2| 256| 3095.93| 42.31| 72| 0| 31|
> 0| 1612| 0| 123| 1521019| 466426|
> 1637722| 0.00| 0.00
> 2 2| 256| 3098.16| 42.03| 73| 0| 30|
> 0| 1594| 0| 123| 1519458| 472632|
> 1632462| 0.00| 0.00
> % | 0.0| +0.1| -0.7| +1.4| 0| -3.2|
> 0| -1.1| 0| 0.0| -0.1| +1.3|
> -0.3| 0| 0
> 1 4| 256| 6553.60| 38.44| 170| 0| 33|
> 0| 1761| 0| 38| 1343193| 237604|
> 1402385| 0.00| 0.00
> 2 4| 256| 6649.37| 38.34| 172| 0| 32|
> 0| 1726| 0| 32| 1343770| 236320|
> 1400875| 0.00| 0.00
> % | 0.0| +1.5| -0.3| +1.2| 0| -3.0|
> 0| -2.0| 0| -15.8| +0.0| -0.5|
> -0.1| 0| 0
> 1 1| 512| 1818.40| 29.28| 61| 0| 31|
> 0| 1646| 0| 76| 3326887| 1491961|
> 3371189| 0.00| 0.00
> 2 1| 512| 1822.74| 29.45| 61| 0| 30|
> 0| 1577| 0| 76| 3309934| 1470715|
> 3352921| 0.00| 0.00
> % | 0.0| +0.2| +0.6| 0.0| 0| -3.2|
> 0| -4.2| 0| 0.0| -0.5| -1.4|
> -0.5| 0| 0
> 1 2| 512| 3931.72| 43.51| 89| 0| 33|
> 0| 1761| 0| 137| 1148331| 301194|
> 1270351| 0.00| 0.00
> 2 2| 512| 3926.16| 43.45| 90| 0| 32|
> 0| 1726| 0| 135| 1166280| 306110|
> 1288869| 0.00| 0.00
> % | 0.0| -0.1| -0.1| +1.1| 0| -3.0|
> 0| -2.0| 0| -1.5| +1.6| +1.6|
> +1.5| 0| 0
> 1 4| 512| 8634.49| 40.69| 211| 0| 31|
> 0| 1612| 0| 53| 1869998| 353856|
> 1948593| 0.00| 0.00
> 2 4| 512| 9137.12| 40.77| 223| 0| 30|
> 0| 1594| 0| 48| 1879574| 362851|
> 1959044| 0.00| 0.00
> % | 0.0| +5.8| +0.2| +5.7| 0| -3.2|
> 0| -1.1| 0| -9.4| +0.5| +2.5|
> +0.5| 0| 0
> 1 1| 1024| 2042.67| 29.50| 68| 0| 33|
> 0| 1778| 0| 84| 3087032| 1309160|
> 3130736| 0.00| 0.00
> 2 1| 1024| 2033.24| 29.51| 68| 0| 32|
> 0| 1726| 0| 83| 3082898| 1295936|
> 3125229| 0.00| 0.00
> % | 0.0| -0.5| +0.0| 0.0| 0| -3.0|
> 0| -2.9| 0| -1.2| -0.1| -1.0|
> -0.2| 0| 0
> 1 2| 1024| 7703.26| 39.58| 194| 0| 32|
> 0| 1673| 0| 65| 2522172| 663302|
> 2684835| 0.00| 0.00
> 2 2| 1024| 7657.00| 39.27| 194| 0| 30|
> 0| 1594| 0| 62| 2607281| 698035|
> 2755198| 0.00| 0.00
> % | 0.0| -0.6| -0.8| 0.0| 0| -6.2|
> 0| -4.7| 0| -4.6| +3.4| +5.2|
> +2.6| 0| 0
> 1 4| 1024| 11814.84| 39.38| 299| 0| 32|
> 0| 1700| 0| 28| 2510318| 576071|
> 2596631| 0.00| 0.00
> 2 4| 1024| 12871.76| 38.93| 330| 0| 32|
> 0| 1726| 0| 25| 2232437| 632785|
> 2316035| 0.00| 0.00
> % | 0.0| +8.9| -1.1| +10.4| 0| 0.0|
> 0| +1.5| 0| -10.7| -11.1| +9.8|
> -10.8| 0| 0
> TCP_MAERTS
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 706.98| 26.25| 26| 0| 31|
> 0| 1656| 0| 80| 2630204| 4185330|
> 2692397| 0.00| 0.00
> 2 1| 64| 767.45| 27.78| 27| 0| 30|
> 0| 1594| 0| 85| 2626694| 4317273|
> 2688799| 0.00| 0.00
> % | 0.0| +8.6| +5.8| +3.8| 0| -3.2|
> 0| -3.7| 0| +6.2| -0.1| +3.2|
> -0.1| 0| 0
> 1 2| 64| 2644.57| 42.60| 61| 0| 32|
> 0| 1700| 0| 34863| 49057| 16791|
> 204805| 0.00| 0.00
> 2 2| 64| 2721.19| 42.69| 63| 0| 32|
> 0| 1709| 0| 42365| 52739| 20094|
> 215895| 0.00| 0.00
> % | 0.0| +2.9| +0.2| +3.3| 0| 0.0|
> 0| +0.5| 0| +21.5| +7.5| +19.7|
> +5.4| 0| 0
> 1 4| 64| 2756.40| 42.69| 64| 0| 32|
> 0| 1708| 0| 52043| 47976| 12694|
> 220732| 0.00| 0.00
> 2 4| 64| 2709.19| 42.79| 62| 0| 30|
> 0| 1594| 0| 50144| 47275| 12743|
> 218074| 0.00| 0.00
> % | 0.0| -1.7| +0.2| -3.1| 0| -6.2|
> 0| -6.7| 0| -3.6| -1.5| +0.4|
> -1.2| 0| 0
> 1 1| 256| 3785.63| 32.34| 116| 0| 33|
> 0| 1734| 0| 36642| 58940| 1187|
> 157652| 0.00| 0.00
> 2 1| 256| 3593.17| 32.90| 108| 0| 32|
> 0| 1726| 0| 33179| 54980| 1130|
> 150168| 0.00| 0.00
> % | 0.0| -5.1| +1.7| -6.9| 0| -3.0|
> 0| -0.5| 0| -9.5| -6.7| -4.8|
> -4.7| 0| 0
> 1 2| 256| 8316.26| 40.45| 205| 0| 32|
> 0| 1673| 0| 28302| 114835| 1655|
> 251137| 0.00| 0.00
> 2 2| 256| 8390.41| 41.17| 203| 0| 30|
> 0| 1594| 0| 31222| 115372| 1696|
> 257151| 0.00| 0.00
> % | 0.0| +0.9| +1.8| -1.0| 0| -6.2|
> 0| -4.7| 0| +10.3| +0.5| +2.5|
> +2.4| 0| 0
> 1 4| 256| 9672.49| 42.40| 227| 0| 33|
> 0| 1761| 0| 30045| 132027| 3059|
> 283491| 0.00| 0.00
> 2 4| 256| 9741.71| 42.57| 228| 0| 32|
> 0| 1726| 6| 28875| 132125| 1999|
> 283036| 0.00| 0.00
> % | 0.0| +0.7| +0.4| +0.4| 0| -3.0|
> 0| -2.0| 0| -3.9| +0.1| -34.7|
> -0.2| 0| 0
> 1 1| 512| 6052.41| 32.23| 187| 0| 31|
> 0| 1612| 0| 44681| 86084| 2592|
> 187465| 0.00| 0.00
> 2 1| 512| 6267.37| 32.51| 192| 0| 30|
> 0| 1577| 0| 45278| 88449| 2708|
> 191374| 0.00| 0.00
> % | 0.0| +3.6| +0.9| +2.7| 0| -3.2|
> 0| -2.2| 0| +1.3| +2.7| +4.5|
> +2.1| 0| 0
> 1 2| 512| 12714.52| 38.27| 331| 0| 33|
> 0| 1744| 0| 24843| 169170| 2381|
> 292210| 0.00| 0.00
> 2 2| 512| 11341.65| 37.30| 303| 0| 32|
> 0| 1726| 14| 27393| 152465| 2980|
> 270740| 0.00| 0.00
> % | 0.0| -10.8| -2.5| -8.5| 0| -3.0|
> 0| -1.0| 0| +10.3| -9.9| +25.2|
> -7.3| 0| 0
> 1 4| 512| 16127.03| 40.80| 394| 0| 31|
> 0| 1612| 0| 15063| 210628| 2234|
> 344124| 0.00| 0.00
> 2 4| 512| 14709.72| 39.94| 367| 0| 31|
> 0| 1612| 0| 17823| 193670| 4457|
> 324744| 0.00| 0.00
> % | 0.0| -8.8| -2.1| -6.9| 0| 0.0|
> 0| 0.0| 0| +18.3| -8.1| +99.5|
> -5.6| 0| 0
> 1 1| 1024| 6436.88| 30.31| 212| 0| 33|
> 0| 1778| 0| 47820| 83940| 2007|
> 172847| 0.00| 0.00
> 2 1| 1024| 6495.48| 30.51| 212| 0| 32|
> 0| 1726| 0| 47771| 85436| 2038|
> 175027| 0.00| 0.00
> % | 0.0| +0.9| +0.7| 0.0| 0| -3.0|
> 0| -2.9| 0| -0.1| +1.8| +1.5|
> +1.3| 0| 0
> 1 2| 1024| 12245.34| 33.44| 365| 0| 31|
> 0| 1629| 0| 26499| 162142| 2909|
> 255717| 0.00| 0.00
> 2 2| 1024| 12913.57| 33.93| 380| 0| 31|
> 0| 1612| 0| 24196| 171386| 3671|
> 266270| 0.00| 0.00
> % | 0.0| +5.5| +1.5| +4.1| 0| 0.0|
> 0| -1.0| 0| -8.7| +5.7| +26.2|
> +4.1| 0| 0
> 1 4| 1024| 16428.48| 34.81| 471| 0| 32|
> 0| 1709| 0| 12496| 215031| 6557|
> 318039| 0.00| 0.00
> 2 4| 1024| 17294.33| 35.05| 492| 0| 32|
> 0| 1709| 0| 9444| 224694| 4095|
> 328098| 0.00| 0.00
> % | 0.0| +5.3| +0.7| +4.5| 0| 0.0|
> 0| 0.0| 0| -24.4| +4.5| -37.5|
> +3.2| 0| 0
> TCP_RR
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 50| 64| 14626.43| 14.93| 980| 0| 32|
> 0| 1681| 0| 13| 877664| 877731|
> 902624| 0.00| 0.00
> 2 50| 64| 14639.95| 13.10| 1123| 0| 32|
> 0| 1681| 0| 13| 878475| 878538|
> 897278| 0.00| 0.00
> % | 0.0| +0.1| -12.3| +14.6| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.1| +0.1|
> -0.6| 0| 0
> 1 100| 64| 14697.50| 14.31| 1029| 0| 34|
> 0| 1830| 0| 13| 881930| 881991|
> 903837| 0.00| 0.00
> 2 100| 64| 14692.35| 13.08| 1128| 0| 34|
> 0| 1830| 0| 13| 881619| 881679|
> 898952| 0.00| 0.00
> % | 0.0| -0.0| -8.6| +9.6| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.0| -0.0|
> -0.5| 0| 0
> 1 250| 64| 14683.40| 14.34| 1027| 0| 32|
> 0| 1698| 0| 13| 881083| 881147|
> 903071| 0.00| 0.00
> 2 250| 64| 14677.06| 12.85| 1144| 0| 32|
> 0| 1698| 0| 13| 880702| 880762|
> 898190| 0.00| 0.00
> % | 0.0| -0.0| -10.4| +11.4| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.0| -0.0|
> -0.5| 0| 0
> 1 500| 64| 14698.45| 14.39| 1025| 0| 34|
> 0| 1830| 0| 13| 881985| 882060|
> 905537| 0.00| 0.00
> 2 500| 64| 14626.17| 13.54| 1083| 0| 34|
> 0| 1830| 0| 13| 877648| 877726|
> 896427| 0.00| 0.00
> % | 0.0| -0.5| -5.9| +5.7| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.5| -0.5|
> -1.0| 0| 0
> 1 50| 256| 14386.52| 14.14| 1018| 0| 33|
> 0| 1716| 0| 13| 863266| 863336|
> 887195| 0.00| 0.00
> 2 50| 256| 14359.26| 14.22| 1016| 0| 32|
> 0| 1681| 0| 13| 861630| 861698|
> 882444| 0.00| 0.00
> % | 0.0| -0.2| +0.6| -0.2| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.2| -0.2|
> -0.5| 0| 0
> 1 100| 256| 14364.89| 14.25| 1008| 0| 34|
> 0| 1813| 0| 13| 861969| 862033|
> 886679| 0.00| 0.00
> 2 100| 256| 14393.82| 14.53| 999| 0| 34|
> 0| 1813| 0| 13| 863704| 863765|
> 884487| 0.00| 0.00
> % | 0.0| +0.2| +2.0| -0.9| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.2| +0.2|
> -0.2| 0| 0
> 1 250| 256| 14387.95| 14.05| 1024| 0| 32|
> 0| 1681| 0| 13| 863352| 863429|
> 887505| 0.00| 0.00
> 2 250| 256| 14344.74| 14.62| 987| 0| 32|
> 0| 1698| 0| 13| 860760| 860843|
> 882154| 0.00| 0.00
> % | 0.0| -0.3| +4.1| -3.6| 0| 0.0|
> 0| +1.0| 0| 0.0| -0.3| -0.3|
> -0.6| 0| 0
> 1 500| 256| 14365.89| 14.19| 1013| 0| 33|
> 0| 1769| 0| 13| 862029| 862099|
> 885852| 0.00| 0.00
> 2 500| 256| 14329.59| 14.62| 990| 0| 34|
> 0| 1830| 0| 13| 859852| 861233|
> 880082| 0.00| 0.00
> % | 0.0| -0.3| +3.0| -2.3| 0| +3.0|
> 0| +3.4| 0| 0.0| -0.3| -0.1|
> -0.7| 0| 0
> 1 50| 512| 14273.07| 14.12| 1010| 0| 33|
> 0| 1742| 0| 13| 856460| 856524|
> 880356| 0.00| 0.00
> 2 50| 512| 14222.08| 14.72| 966| 0| 32|
> 0| 1698| 0| 12| 853398| 853468|
> 875621| 0.00| 0.00
> % | 0.0| -0.4| +4.2| -4.4| 0| -3.0|
> 0| -2.5| 0| -7.7| -0.4| -0.4|
> -0.5| 0| 0
> 1 100| 512| 14236.34| 14.51| 982| 0| 34|
> 0| 1804| 0| 13| 854258| 854335|
> 876662| 0.00| 0.00
> 2 100| 512| 14147.89| 14.85| 953| 0| 34|
> 0| 1813| 0| 13| 848947| 849031|
> 871773| 0.00| 0.00
> % | 0.0| -0.6| +2.3| -3.0| 0| 0.0|
> 0| +0.5| 0| 0.0| -0.6| -0.6|
> -0.6| 0| 0
> 1 250| 512| 14260.79| 14.53| 983| 0| 33|
> 0| 1760| 0| 13| 855721| 855791|
> 879099| 0.00| 0.00
> 2 250| 512| 14190.68| 14.87| 954| 0| 32|
> 0| 1698| 0| 13| 851517| 851580|
> 874119| 0.00| 0.00
> % | 0.0| -0.5| +2.3| -3.0| 0| -3.0|
> 0| -3.5| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 500| 512| 14273.71| 14.18| 1008| 0| 33|
> 0| 1769| 0| 13| 856499| 856562|
> 879984| 0.00| 0.00
> 2 500| 512| 14213.87| 14.72| 967| 0| 34|
> 0| 1830| 0| 13| 852907| 852976|
> 875328| 0.00| 0.00
> % | 0.0| -0.4| +3.8| -4.1| 0| +3.0|
> 0| +3.4| 0| 0.0| -0.4| -0.4|
> -0.5| 0| 0
> 1 50| 1024| 14049.77| 13.89| 1024| 0| 32|
> 0| 1708| 0| 12| 843061| 843134|
> 863697| 0.00| 0.00
> 2 50| 1024| 13980.25| 14.38| 980| 0| 32|
> 0| 1698| 0| 12| 838890| 838973|
> 858350| 0.00| 0.00
> % | 0.0| -0.5| +3.5| -4.3| 0| 0.0|
> 0| -0.6| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 100| 1024| 14025.66| 13.32| 1066| 0| 33|
> 0| 1769| 0| 13| 841616| 841685|
> 864460| 0.00| 0.00
> 2 100| 1024| 13993.30| 14.82| 946| 0| 34|
> 0| 1830| 0| 12| 839676| 839735|
> 859288| 0.00| 0.00
> % | 0.0| -0.2| +11.3| -11.3| 0| +3.0|
> 0| +3.4| 0| -7.7| -0.2| -0.2|
> -0.6| 0| 0
> 1 250| 1024| 14060.15| 13.90| 1023| 0| 35|
> 0| 1848| 0| 12| 843688| 843752|
> 864475| 0.00| 0.00
> 2 250| 1024| 13982.47| 15.34| 913| 0| 34|
> 0| 1830| 0| 12| 839026| 839089|
> 859914| 0.00| 0.00
> % | 0.0| -0.6| +10.4| -10.8| 0| -2.9|
> 0| -1.0| 0| 0.0| -0.6| -0.6|
> -0.5| 0| 0
> 1 500| 1024| 14051.14| 13.80| 1024| 0| 33|
> 0| 1716| 0| 13| 843144| 843212|
> 862981| 0.00| 0.00
> 2 500| 1024| 14013.95| 15.27| 918| 0| 32|
> 0| 1681| 0| 13| 840915| 840983|
> 862635| 0.00| 0.00
> % | 0.0| -0.3| +10.7| -10.4| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.3| -0.3|
> -0.0| 0| 0
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:41 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 111+ messages in thread
From: Benjamin Herrenschmidt @ 2011-12-19 2:41 UTC (permalink / raw)
To: Amos Kong
Cc: Rusty Russell, Michael S. Tsirkin, Ohad Ben-Cohen, virtualization,
kvm, linux-kernel, linux-arm-kernel, rhod, Jason Wang
On Mon, 2011-12-19 at 10:19 +0800, Amos Kong wrote:
> I tested with the same environment and scenarios.
> tested one scenarios for three times and compute the average for more
> precision.
>
> Thanks, Amos
>
> --------- compare results -----------
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.exhost_guest.txt
> 2 - avg-fixed.netperf.exhost_guest.txt
The output is word wrapped and generally unreadable. Any chance you can
provide us with a summary of the outcome ?
Cheers,
Ben.
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 1073.54| 10.50| 102| 0| 31|
> 0| 1612| 0| 16| 487641| 489753|
> 504764| 0.00| 0.00
> 2 1| 64| 1079.44| 10.29| 104| 0| 30|
> 0| 1594| 0| 17| 487156| 488828|
> 504411| 0.00| 0.00
> % | 0.0| +0.5| -2.0| +2.0| 0| -3.2|
> 0| -1.1| 0| +6.2| -0.1| -0.2|
> -0.1| 0| 0
> 1 2| 64| 2141.12| 15.72| 136| 0| 33|
> 0| 1744| 0| 34| 873777| 972303|
> 928926| 0.00| 0.00
> 2 2| 64| 2140.88| 15.64| 137| 0| 33|
> 0| 1744| 0| 34| 926588| 942841|
> 974095| 0.00| 0.00
> % | 0.0| -0.0| -0.5| +0.7| 0| 0.0|
> 0| 0.0| 0| 0.0| +6.0| -3.0|
> +4.9| 0| 0
> 1 4| 64| 4076.80| 19.82| 205| 0| 30|
> 0| 1577| 0| 67| 1422282| 1166425|
> 1539219| 0.00| 0.00
> 2 4| 64| 4094.32| 20.70| 197| 0| 31|
> 0| 1612| 0| 68| 1704330| 1314077|
> 1833394| 0.00| 0.00
> % | 0.0| +0.4| +4.4| -3.9| 0| +3.3|
> 0| +2.2| 0| +1.5| +19.8| +12.7|
> +19.1| 0| 0
> 1 1| 256| 2867.48| 13.44| 213| 0| 32|
> 0| 1726| 0| 14| 666430| 694922|
> 690730| 0.00| 0.00
> 2 1| 256| 2874.20| 12.71| 226| 0| 32|
> 0| 1709| 0| 14| 697960| 740407|
> 721807| 0.00| 0.00
> % | 0.0| +0.2| -5.4| +6.1| 0| 0.0|
> 0| -1.0| 0| 0.0| +4.7| +6.5|
> +4.5| 0| 0
> 1 2| 256| 5642.82| 17.61| 320| 0| 30|
> 0| 1594| 0| 30| 1226861| 1236081|
> 1268562| 0.00| 0.00
> 2 2| 256| 5661.06| 17.41| 326| 0| 30|
> 0| 1594| 0| 29| 1175696| 1143490|
> 1221528| 0.00| 0.00
> % | 0.0| +0.3| -1.1| +1.9| 0| 0.0|
> 0| 0.0| 0| -3.3| -4.2| -7.5|
> -3.7| 0| 0
> 1 4| 256| 9404.27| 23.55| 399| 0| 33|
> 0| 1744| 0| 37| 1692245| 659975|
> 1765103| 0.00| 0.00
> 2 4| 256| 8761.11| 23.18| 376| 0| 32|
> 0| 1726| 0| 36| 1699382| 418992|
> 1870804| 0.00| 0.00
> % | 0.0| -6.8| -1.6| -5.8| 0| -3.0|
> 0| -1.0| 0| -2.7| +0.4| -36.5|
> +6.0| 0| 0
> 1 1| 512| 3803.66| 14.20| 267| 0| 30|
> 0| 1594| 0| 14| 693992| 750078|
> 721107| 0.00| 0.00
> 2 1| 512| 3838.02| 15.47| 248| 0| 31|
> 0| 1612| 0| 15| 811709| 773505|
> 838788| 0.00| 0.00
> % | 0.0| +0.9| +8.9| -7.1| 0| +3.3|
> 0| +1.1| 0| +7.1| +17.0| +3.1|
> +16.3| 0| 0
> 1 2| 512| 8606.11| 19.34| 444| 0| 32|
> 0| 1709| 0| 29| 1264624| 647652|
> 1309740| 0.00| 0.00
> 2 2| 512| 8127.80| 18.93| 428| 0| 32|
> 0| 1726| 0| 28| 1216606| 1179269|
> 1266260| 0.00| 0.00
> % | 0.0| -5.6| -2.1| -3.6| 0| 0.0|
> 0| +1.0| 0| -3.4| -3.8| +82.1|
> -3.3| 0| 0
> 1 4| 512| 9409.41| 22.88| 413| 0| 30|
> 0| 1577| 0| 35| 1592587| 1072862|
> 1746787| 0.00| 0.00
> 2 4| 512| 9217.34| 23.05| 400| 0| 30|
> 0| 1594| 0| 34| 1596515| 513742|
> 1831538| 0.00| 0.00
> % | 0.0| -2.0| +0.7| -3.1| 0| 0.0|
> 0| +1.1| 0| -2.9| +0.2| -52.1|
> +4.9| 0| 0
> 1 1| 1024| 4389.75| 14.62| 303| 0| 32|
> 0| 1726| 0| 14| 663417| 611555|
> 689028| 0.00| 0.00
> 2 1| 1024| 4390.44| 13.66| 321| 0| 32|
> 0| 1726| 0| 13| 609836| 556090|
> 634511| 0.00| 0.00
> % | 0.0| +0.0| -6.6| +5.9| 0| 0.0|
> 0| 0.0| 0| -7.1| -8.1| -9.1|
> -7.9| 0| 0
> 1 2| 1024| 9046.18| 19.63| 460| 0| 30|
> 0| 1594| 0| 28| 1206853| 1054653|
> 1256203| 0.00| 0.00
> 2 2| 1024| 9027.54| 20.15| 447| 0| 30|
> 0| 1577| 0| 27| 1179555| 884408|
> 1226843| 0.00| 0.00
> % | 0.0| -0.2| +2.6| -2.8| 0| 0.0|
> 0| -1.1| 0| -3.6| -2.3| -16.1|
> -2.3| 0| 0
> 1 4| 1024| 9410.41| 22.01| 427| 0| 32|
> 0| 1726| 0| 36| 1734433| 887190|
> 1852486| 0.00| 0.00
> 2 4| 1024| 9409.11| 23.18| 405| 0| 32|
> 0| 1726| 0| 34| 1695359| 625268|
> 1803599| 0.00| 0.00
> % | 0.0| -0.0| +5.3| -5.2| 0| 0.0|
> 0| 0.0| 0| -5.6| -2.3| -29.5|
> -2.6| 0| 0
> TCP_MAERTS
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 1056.13| 17.51| 59| 0| 30|
> 0| 1594| 3| 86| 476098| 4780186|
> 538158| 0.00| 0.00
> 2 1| 64| 1065.51| 17.64| 60| 0| 30|
> 0| 1594| 3| 87| 476836| 4823602|
> 538860| 0.00| 0.00
> % | 0.0| +0.9| +0.7| +1.7| 0| 0.0|
> 0| 0.0| 0.0| +1.2| +0.2| +0.9|
> +0.1| 0| 0
> 1 2| 64| 2472.80| 32.18| 76| 0| 32|
> 0| 1709| 2| 199| 479119| 2089931|
> 600119| 0.00| 0.00
> 2 2| 64| 2468.76| 32.28| 76| 0| 33|
> 0| 1744| 1| 199| 479372| 2179342|
> 600328| 0.00| 0.00
> % | 0.0| -0.2| +0.3| 0.0| 0| +3.1|
> 0| +2.0| -50.0| 0.0| +0.1| +4.3|
> +0.0| 0| 0
> 1 4| 64| 2453.22| 32.20| 75| 0| 31|
> 0| 1612| 2| 198| 479223| 2175801|
> 600081| 0.00| 0.00
> 2 4| 64| 2465.68| 32.30| 76| 0| 30|
> 0| 1594| 3| 200| 479404| 2108293|
> 600252| 0.00| 0.00
> % | 0.0| +0.5| +0.3| +1.3| 0| -3.2|
> 0| -1.1| +50.0| +1.0| +0.0| -3.1|
> +0.0| 0| 0
> 1 1| 256| 3608.37| 24.59| 146| 0| 32|
> 0| 1726| 2| 277| 88346| 108310|
> 150637| 0.00| 0.00
> 2 1| 256| 3611.12| 24.95| 144| 0| 32|
> 0| 1709| 0| 281| 83319| 64354|
> 145511| 0.00| 0.00
> % | 0.0| +0.1| +1.5| -1.4| 0| 0.0|
> 0| -1.0| -100.0| +1.4| -5.7| -40.6|
> -3.4| 0| 0
> 1 2| 256| 7373.32| 26.83| 274| 0| 31|
> 0| 1612| 0| 4185| 278932| 264031|
> 377267| 0.00| 0.00
> 2 2| 256| 7460.03| 26.93| 276| 0| 30|
> 0| 1594| 1| 5913| 270840| 246165|
> 371999| 0.00| 0.00
> % | 0.0| +1.2| +0.4| +0.7| 0| -3.2|
> 0| -1.1| 0| +41.3| -2.9| -6.8|
> -1.4| 0| 0
> 1 4| 256| 9322.66| 29.73| 313| 0| 32|
> 0| 1709| 848| 3041| 363114| 329308|
> 482586| 0.00| 0.00
> 2 4| 256| 9365.52| 29.59| 316| 0| 33|
> 0| 1744| 414| 2884| 371485| 339191|
> 491366| 0.00| 0.00
> % | 0.0| +0.5| -0.5| +1.0| 0| +3.1|
> 0| +2.0| -51.2| -5.2| +2.3| +3.0|
> +1.8| 0| 0
> 1 1| 512| 9360.25| 17.20| 543| 0| 30|
> 0| 1577| 0| 387| 438621| 408062|
> 499989| 0.00| 0.00
> 2 1| 512| 8899.37| 18.17| 495| 0| 30|
> 0| 1594| 0| 5049| 393341| 371545|
> 459397| 0.00| 0.00
> % | 0.0| -4.9| +5.6| -8.8| 0| 0.0|
> 0| +1.1| 0| +1204.7| -10.3| -8.9|
> -8.1| 0| 0
> 1 2| 512| 8713.11| 20.77| 420| 0| 32|
> 0| 1726| 0| 11227| 296157| 246495|
> 371632| 0.00| 0.00
> 2 2| 512| 8686.31| 20.72| 421| 0| 32|
> 0| 1709| 0| 11002| 296608| 246597|
> 371797| 0.00| 0.00
> % | 0.0| -0.3| -0.2| +0.2| 0| 0.0|
> 0| -1.0| 0| -2.0| +0.2| +0.0|
> +0.0| 0| 0
> 1 4| 512| 8780.40| 22.72| 386| 0| 30|
> 0| 1594| 0| 10337| 303619| 249822|
> 385457| 0.00| 0.00
> 2 4| 512| 8858.51| 22.66| 390| 0| 30|
> 0| 1577| 0| 9968| 301847| 246543|
> 382121| 0.00| 0.00
> % | 0.0| +0.9| -0.3| +1.0| 0| 0.0|
> 0| -1.1| 0| -3.6| -0.6| -1.3|
> -0.9| 0| 0
> 1 1| 1024| 9387.09| 16.43| 571| 0| 32|
> 0| 1726| 0| 84| 452351| 429483|
> 504022| 0.00| 0.00
> 2 1| 1024| 9388.90| 16.51| 568| 0| 32|
> 0| 1726| 2| 76| 446994| 422489|
> 499025| 0.00| 0.00
> % | 0.0| +0.0| +0.5| -0.5| 0| 0.0|
> 0| 0.0| 0| -9.5| -1.2| -1.6|
> -1.0| 0| 0
> 1 2| 1024| 9361.43| 17.26| 542| 0| 30|
> 0| 1594| 5| 647| 388626| 358303|
> 442125| 0.00| 0.00
> 2 2| 1024| 9364.78| 17.25| 542| 0| 31|
> 0| 1612| 35| 554| 389326| 360169|
> 442343| 0.00| 0.00
> % | 0.0| +0.0| -0.1| 0.0| 0| +3.3|
> 0| +1.1| +600.0| -14.4| +0.2| +0.5|
> +0.0| 0| 0
> 1 4| 1024| 9381.57| 18.35| 510| 0| 32|
> 0| 1726| 1189| 648| 405900| 376269|
> 459845| 0.00| 0.00
> 2 4| 1024| 9393.48| 18.27| 513| 0| 32|
> 0| 1726| 1754| 610| 402132| 373768|
> 455629| 0.00| 0.00
> % | 0.0| +0.1| -0.4| +0.6| 0| 0.0|
> 0| 0.0| +47.5| -5.9| -0.9| -0.7|
> -0.9| 0| 0
> TCP_RR
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 50| 64| 10903.70| 8.03| 1382| 0| 32|
> 0| 1698| 0| 9| 654298| 654362|
> 665532| 0.00| 0.00
> 2 50| 64| 10880.50| 7.40| 1488| 0| 32|
> 0| 1698| 0| 10| 652907| 652973|
> 667042| 0.00| 0.00
> % | 0.0| -0.2| -7.8| +7.7| 0| 0.0|
> 0| 0.0| 0| +11.1| -0.2| -0.2|
> +0.2| 0| 0
> 1 100| 64| 10953.00| 8.40| 1332| 0| 34|
> 0| 1830| 0| 10| 657257| 657325|
> 667088| 0.00| 0.00
> 2 100| 64| 10882.78| 7.67| 1439| 0| 34|
> 0| 1830| 0| 9| 653044| 653110|
> 668883| 0.00| 0.00
> % | 0.0| -0.6| -8.7| +8.0| 0| 0.0|
> 0| 0.0| 0| -10.0| -0.6| -0.6|
> +0.3| 0| 0
> 1 250| 64| 10902.66| 8.57| 1300| 0| 33|
> 0| 1716| 0| 10| 654235| 654308|
> 665518| 0.00| 0.00
> 2 250| 64| 10866.79| 7.58| 1449| 0| 32|
> 0| 1664| 0| 10| 652083| 652155|
> 666869| 0.00| 0.00
> % | 0.0| -0.3| -11.6| +11.5| 0| -3.0|
> 0| -3.0| 0| 0.0| -0.3| -0.3|
> +0.2| 0| 0
> 1 500| 64| 10924.34| 7.25| 1509| 0| 34|
> 0| 1830| 0| 10| 655536| 655619|
> 665776| 0.00| 0.00
> 2 500| 64| 10927.52| 6.50| 1684| 0| 34|
> 0| 1813| 0| 10| 655726| 655803|
> 668527| 0.00| 0.00
> % | 0.0| +0.0| -10.3| +11.6| 0| 0.0|
> 0| -0.9| 0| 0.0| +0.0| +0.0|
> +0.4| 0| 0
> 1 50| 256| 10407.35| 9.38| 1112| 0| 32|
> 0| 1681| 0| 9| 624516| 624581|
> 639159| 0.00| 0.00
> 2 50| 256| 10422.60| 9.45| 1108| 0| 33|
> 0| 1716| 0| 9| 625432| 625498|
> 641343| 0.00| 0.00
> % | 0.0| +0.1| +0.7| -0.4| 0| +3.1|
> 0| +2.1| 0| 0.0| +0.1| +0.1|
> +0.3| 0| 0
> 1 100| 256| 10404.30| 8.99| 1159| 0| 34|
> 0| 1830| 0| 9| 624335| 624400|
> 637357| 0.00| 0.00
> 2 100| 256| 10442.84| 9.57| 1093| 0| 35|
> 0| 1848| 0| 9| 626650| 626714|
> 639017| 0.00| 0.00
> % | 0.0| +0.4| +6.5| -5.7| 0| +2.9|
> 0| +1.0| 0| 0.0| +0.4| +0.4|
> +0.3| 0| 0
> 1 250| 256| 10427.71| 9.10| 1157| 0| 32|
> 0| 1698| 0| 9| 625738| 625822|
> 641221| 0.00| 0.00
> 2 250| 256| 10464.71| 9.69| 1085| 0| 32|
> 0| 1698| 0| 9| 627960| 628040|
> 640680| 0.00| 0.00
> % | 0.0| +0.4| +6.5| -6.2| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.4| +0.4|
> -0.1| 0| 0
> 1 500| 256| 10442.18| 8.65| 1217| 0| 34|
> 0| 1830| 0| 10| 626608| 626675|
> 640081| 0.00| 0.00
> 2 500| 256| 10463.74| 9.63| 1089| 0| 34|
> 0| 1813| 0| 9| 627904| 627967|
> 643152| 0.00| 0.00
> % | 0.0| +0.2| +11.3| -10.5| 0| 0.0|
> 0| -0.9| 0| -10.0| +0.2| +0.2|
> +0.5| 0| 0
> 1 50| 512| 8505.70| 7.20| 1191| 0| 33|
> 0| 1716| 0| 7| 510418| 510486|
> 524904| 0.00| 0.00
> 2 50| 512| 8563.34| 7.24| 1185| 0| 32|
> 0| 1664| 0| 8| 513877| 513940|
> 526294| 0.00| 0.00
> % | 0.0| +0.7| +0.6| -0.5| 0| -3.0|
> 0| -3.0| 0| +14.3| +0.7| +0.7|
> +0.3| 0| 0
> 1 100| 512| 8509.97| 7.00| 1226| 0| 34|
> 0| 1830| 0| 7| 510674| 510756|
> 525205| 0.00| 0.00
> 2 100| 512| 8555.22| 7.52| 1144| 0| 34|
> 0| 1830| 0| 7| 513389| 513471|
> 526609| 0.00| 0.00
> % | 0.0| +0.5| +7.4| -6.7| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.5| +0.5|
> +0.3| 0| 0
> 1 250| 512| 8507.35| 7.21| 1183| 0| 32|
> 0| 1681| 0| 7| 510518| 510579|
> 524294| 0.00| 0.00
> 2 250| 512| 8578.13| 7.01| 1223| 0| 33|
> 0| 1716| 0| 8| 514765| 514829|
> 526481| 0.00| 0.00
> % | 0.0| +0.8| -2.8| +3.4| 0| +3.1|
> 0| +2.1| 0| +14.3| +0.8| +0.8|
> +0.4| 0| 0
> 1 500| 512| 8521.68| 6.54| 1302| 0| 34|
> 0| 1813| 0| 8| 511375| 511443|
> 523357| 0.00| 0.00
> 2 500| 512| 8573.17| 6.94| 1235| 0| 34|
> 0| 1830| 0| 7| 514467| 514533|
> 526131| 0.00| 0.00
> % | 0.0| +0.6| +6.1| -5.1| 0| 0.0|
> 0| +0.9| 0| -12.5| +0.6| +0.6|
> +0.5| 0| 0
> 1 50| 1024| 8150.01| 7.69| 1060| 0| 32|
> 0| 1681| 0| 7| 489075| 489155|
> 503136| 0.00| 0.00
> 2 50| 1024| 8129.35| 7.65| 1062| 0| 34|
> 0| 1804| 0| 7| 487841| 487915|
> 502061| 0.00| 0.00
> % | 0.0| -0.3| -0.5| +0.2| 0| +6.2|
> 0| +7.3| 0| 0.0| -0.3| -0.3|
> -0.2| 0| 0
> 1 100| 1024| 8166.06| 7.53| 1083| 0| 34|
> 0| 1804| 0| 7| 490039| 490104|
> 502990| 0.00| 0.00
> 2 100| 1024| 8118.23| 7.77| 1044| 0| 33|
> 0| 1725| 0| 7| 487171| 487236|
> 501939| 0.00| 0.00
> % | 0.0| -0.6| +3.2| -3.6| 0| -2.9|
> 0| -4.4| 0| 0.0| -0.6| -0.6|
> -0.2| 0| 0
> 1 250| 1024| 8175.35| 7.58| 1079| 0| 35|
> 0| 1848| 0| 7| 490597| 490657|
> 503641| 0.00| 0.00
> 2 250| 1024| 8146.63| 7.59| 1072| 0| 34|
> 0| 1813| 0| 7| 488874| 488939|
> 502010| 0.00| 0.00
> % | 0.0| -0.4| +0.1| -0.6| 0| -2.9|
> 0| -1.9| 0| 0.0| -0.4| -0.4|
> -0.3| 0| 0
> 1 500| 1024| 8182.51| 7.61| 1075| 0| 32|
> 0| 1698| 0| 7| 491028| 491095|
> 504222| 0.00| 0.00
> 2 500| 1024| 8157.39| 7.58| 1075| 0| 33|
> 0| 1716| 0| 7| 489521| 489593|
> 502368| 0.00| 0.00
> % | 0.0| -0.3| -0.4| 0.0| 0| +3.1|
> 0| +1.1| 0| 0.0| -0.3| -0.3|
> -0.4| 0| 0
>
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.host_guest.txt
> 2 - avg-fixed.netperf.host_guest.txt
>
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 715.76| 28.44| 24| 0| 31|
> 0| 1629| 0| 36| 3206862| 1733540|
> 3245171| 0.00| 0.00
> 2 1| 64| 714.82| 28.44| 25| 0| 31|
> 0| 1612| 0| 36| 3204256| 1709508|
> 3242450| 0.00| 0.00
> % | 0.0| -0.1| 0.0| +4.2| 0| 0.0|
> 0| -1.0| 0| 0.0| -0.1| -1.4|
> -0.1| 0| 0
> 1 2| 64| 1449.31| 41.23| 35| 0| 33|
> 0| 1744| 0| 66| 2764635| 1667527|
> 2815591| 0.00| 0.00
> 2 2| 64| 1442.92| 41.32| 34| 0| 32|
> 0| 1709| 0| 66| 2751461| 1659498|
> 2799277| 0.00| 0.00
> % | 0.0| -0.4| +0.2| -2.9| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 4| 64| 2671.25| 48.95| 54| 0| 30|
> 0| 1577| 0| 47| 914085| 289771|
> 947054| 0.00| 0.00
> 2 4| 64| 2652.68| 48.20| 54| 0| 30|
> 0| 1594| 0| 46| 882300| 293273|
> 914249| 0.00| 0.00
> % | 0.0| -0.7| -1.5| 0.0| 0| 0.0|
> 0| +1.1| 0| -2.1| -3.5| +1.2|
> -3.5| 0| 0
> 1 1| 256| 1478.61| 29.34| 50| 0| 32|
> 0| 1709| 0| 64| 3502384| 1541681|
> 3545371| 0.00| 0.00
> 2 1| 256| 1481.38| 29.27| 50| 0| 32|
> 0| 1726| 0| 64| 3485623| 1526105|
> 3528343| 0.00| 0.00
> % | 0.0| +0.2| -0.2| 0.0| 0| 0.0|
> 0| +1.0| 0| 0.0| -0.5| -1.0|
> -0.5| 0| 0
> 1 2| 256| 3095.93| 42.31| 72| 0| 31|
> 0| 1612| 0| 123| 1521019| 466426|
> 1637722| 0.00| 0.00
> 2 2| 256| 3098.16| 42.03| 73| 0| 30|
> 0| 1594| 0| 123| 1519458| 472632|
> 1632462| 0.00| 0.00
> % | 0.0| +0.1| -0.7| +1.4| 0| -3.2|
> 0| -1.1| 0| 0.0| -0.1| +1.3|
> -0.3| 0| 0
> 1 4| 256| 6553.60| 38.44| 170| 0| 33|
> 0| 1761| 0| 38| 1343193| 237604|
> 1402385| 0.00| 0.00
> 2 4| 256| 6649.37| 38.34| 172| 0| 32|
> 0| 1726| 0| 32| 1343770| 236320|
> 1400875| 0.00| 0.00
> % | 0.0| +1.5| -0.3| +1.2| 0| -3.0|
> 0| -2.0| 0| -15.8| +0.0| -0.5|
> -0.1| 0| 0
> 1 1| 512| 1818.40| 29.28| 61| 0| 31|
> 0| 1646| 0| 76| 3326887| 1491961|
> 3371189| 0.00| 0.00
> 2 1| 512| 1822.74| 29.45| 61| 0| 30|
> 0| 1577| 0| 76| 3309934| 1470715|
> 3352921| 0.00| 0.00
> % | 0.0| +0.2| +0.6| 0.0| 0| -3.2|
> 0| -4.2| 0| 0.0| -0.5| -1.4|
> -0.5| 0| 0
> 1 2| 512| 3931.72| 43.51| 89| 0| 33|
> 0| 1761| 0| 137| 1148331| 301194|
> 1270351| 0.00| 0.00
> 2 2| 512| 3926.16| 43.45| 90| 0| 32|
> 0| 1726| 0| 135| 1166280| 306110|
> 1288869| 0.00| 0.00
> % | 0.0| -0.1| -0.1| +1.1| 0| -3.0|
> 0| -2.0| 0| -1.5| +1.6| +1.6|
> +1.5| 0| 0
> 1 4| 512| 8634.49| 40.69| 211| 0| 31|
> 0| 1612| 0| 53| 1869998| 353856|
> 1948593| 0.00| 0.00
> 2 4| 512| 9137.12| 40.77| 223| 0| 30|
> 0| 1594| 0| 48| 1879574| 362851|
> 1959044| 0.00| 0.00
> % | 0.0| +5.8| +0.2| +5.7| 0| -3.2|
> 0| -1.1| 0| -9.4| +0.5| +2.5|
> +0.5| 0| 0
> 1 1| 1024| 2042.67| 29.50| 68| 0| 33|
> 0| 1778| 0| 84| 3087032| 1309160|
> 3130736| 0.00| 0.00
> 2 1| 1024| 2033.24| 29.51| 68| 0| 32|
> 0| 1726| 0| 83| 3082898| 1295936|
> 3125229| 0.00| 0.00
> % | 0.0| -0.5| +0.0| 0.0| 0| -3.0|
> 0| -2.9| 0| -1.2| -0.1| -1.0|
> -0.2| 0| 0
> 1 2| 1024| 7703.26| 39.58| 194| 0| 32|
> 0| 1673| 0| 65| 2522172| 663302|
> 2684835| 0.00| 0.00
> 2 2| 1024| 7657.00| 39.27| 194| 0| 30|
> 0| 1594| 0| 62| 2607281| 698035|
> 2755198| 0.00| 0.00
> % | 0.0| -0.6| -0.8| 0.0| 0| -6.2|
> 0| -4.7| 0| -4.6| +3.4| +5.2|
> +2.6| 0| 0
> 1 4| 1024| 11814.84| 39.38| 299| 0| 32|
> 0| 1700| 0| 28| 2510318| 576071|
> 2596631| 0.00| 0.00
> 2 4| 1024| 12871.76| 38.93| 330| 0| 32|
> 0| 1726| 0| 25| 2232437| 632785|
> 2316035| 0.00| 0.00
> % | 0.0| +8.9| -1.1| +10.4| 0| 0.0|
> 0| +1.5| 0| -10.7| -11.1| +9.8|
> -10.8| 0| 0
> TCP_MAERTS
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 706.98| 26.25| 26| 0| 31|
> 0| 1656| 0| 80| 2630204| 4185330|
> 2692397| 0.00| 0.00
> 2 1| 64| 767.45| 27.78| 27| 0| 30|
> 0| 1594| 0| 85| 2626694| 4317273|
> 2688799| 0.00| 0.00
> % | 0.0| +8.6| +5.8| +3.8| 0| -3.2|
> 0| -3.7| 0| +6.2| -0.1| +3.2|
> -0.1| 0| 0
> 1 2| 64| 2644.57| 42.60| 61| 0| 32|
> 0| 1700| 0| 34863| 49057| 16791|
> 204805| 0.00| 0.00
> 2 2| 64| 2721.19| 42.69| 63| 0| 32|
> 0| 1709| 0| 42365| 52739| 20094|
> 215895| 0.00| 0.00
> % | 0.0| +2.9| +0.2| +3.3| 0| 0.0|
> 0| +0.5| 0| +21.5| +7.5| +19.7|
> +5.4| 0| 0
> 1 4| 64| 2756.40| 42.69| 64| 0| 32|
> 0| 1708| 0| 52043| 47976| 12694|
> 220732| 0.00| 0.00
> 2 4| 64| 2709.19| 42.79| 62| 0| 30|
> 0| 1594| 0| 50144| 47275| 12743|
> 218074| 0.00| 0.00
> % | 0.0| -1.7| +0.2| -3.1| 0| -6.2|
> 0| -6.7| 0| -3.6| -1.5| +0.4|
> -1.2| 0| 0
> 1 1| 256| 3785.63| 32.34| 116| 0| 33|
> 0| 1734| 0| 36642| 58940| 1187|
> 157652| 0.00| 0.00
> 2 1| 256| 3593.17| 32.90| 108| 0| 32|
> 0| 1726| 0| 33179| 54980| 1130|
> 150168| 0.00| 0.00
> % | 0.0| -5.1| +1.7| -6.9| 0| -3.0|
> 0| -0.5| 0| -9.5| -6.7| -4.8|
> -4.7| 0| 0
> 1 2| 256| 8316.26| 40.45| 205| 0| 32|
> 0| 1673| 0| 28302| 114835| 1655|
> 251137| 0.00| 0.00
> 2 2| 256| 8390.41| 41.17| 203| 0| 30|
> 0| 1594| 0| 31222| 115372| 1696|
> 257151| 0.00| 0.00
> % | 0.0| +0.9| +1.8| -1.0| 0| -6.2|
> 0| -4.7| 0| +10.3| +0.5| +2.5|
> +2.4| 0| 0
> 1 4| 256| 9672.49| 42.40| 227| 0| 33|
> 0| 1761| 0| 30045| 132027| 3059|
> 283491| 0.00| 0.00
> 2 4| 256| 9741.71| 42.57| 228| 0| 32|
> 0| 1726| 6| 28875| 132125| 1999|
> 283036| 0.00| 0.00
> % | 0.0| +0.7| +0.4| +0.4| 0| -3.0|
> 0| -2.0| 0| -3.9| +0.1| -34.7|
> -0.2| 0| 0
> 1 1| 512| 6052.41| 32.23| 187| 0| 31|
> 0| 1612| 0| 44681| 86084| 2592|
> 187465| 0.00| 0.00
> 2 1| 512| 6267.37| 32.51| 192| 0| 30|
> 0| 1577| 0| 45278| 88449| 2708|
> 191374| 0.00| 0.00
> % | 0.0| +3.6| +0.9| +2.7| 0| -3.2|
> 0| -2.2| 0| +1.3| +2.7| +4.5|
> +2.1| 0| 0
> 1 2| 512| 12714.52| 38.27| 331| 0| 33|
> 0| 1744| 0| 24843| 169170| 2381|
> 292210| 0.00| 0.00
> 2 2| 512| 11341.65| 37.30| 303| 0| 32|
> 0| 1726| 14| 27393| 152465| 2980|
> 270740| 0.00| 0.00
> % | 0.0| -10.8| -2.5| -8.5| 0| -3.0|
> 0| -1.0| 0| +10.3| -9.9| +25.2|
> -7.3| 0| 0
> 1 4| 512| 16127.03| 40.80| 394| 0| 31|
> 0| 1612| 0| 15063| 210628| 2234|
> 344124| 0.00| 0.00
> 2 4| 512| 14709.72| 39.94| 367| 0| 31|
> 0| 1612| 0| 17823| 193670| 4457|
> 324744| 0.00| 0.00
> % | 0.0| -8.8| -2.1| -6.9| 0| 0.0|
> 0| 0.0| 0| +18.3| -8.1| +99.5|
> -5.6| 0| 0
> 1 1| 1024| 6436.88| 30.31| 212| 0| 33|
> 0| 1778| 0| 47820| 83940| 2007|
> 172847| 0.00| 0.00
> 2 1| 1024| 6495.48| 30.51| 212| 0| 32|
> 0| 1726| 0| 47771| 85436| 2038|
> 175027| 0.00| 0.00
> % | 0.0| +0.9| +0.7| 0.0| 0| -3.0|
> 0| -2.9| 0| -0.1| +1.8| +1.5|
> +1.3| 0| 0
> 1 2| 1024| 12245.34| 33.44| 365| 0| 31|
> 0| 1629| 0| 26499| 162142| 2909|
> 255717| 0.00| 0.00
> 2 2| 1024| 12913.57| 33.93| 380| 0| 31|
> 0| 1612| 0| 24196| 171386| 3671|
> 266270| 0.00| 0.00
> % | 0.0| +5.5| +1.5| +4.1| 0| 0.0|
> 0| -1.0| 0| -8.7| +5.7| +26.2|
> +4.1| 0| 0
> 1 4| 1024| 16428.48| 34.81| 471| 0| 32|
> 0| 1709| 0| 12496| 215031| 6557|
> 318039| 0.00| 0.00
> 2 4| 1024| 17294.33| 35.05| 492| 0| 32|
> 0| 1709| 0| 9444| 224694| 4095|
> 328098| 0.00| 0.00
> % | 0.0| +5.3| +0.7| +4.5| 0| 0.0|
> 0| 0.0| 0| -24.4| +4.5| -37.5|
> +3.2| 0| 0
> TCP_RR
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 50| 64| 14626.43| 14.93| 980| 0| 32|
> 0| 1681| 0| 13| 877664| 877731|
> 902624| 0.00| 0.00
> 2 50| 64| 14639.95| 13.10| 1123| 0| 32|
> 0| 1681| 0| 13| 878475| 878538|
> 897278| 0.00| 0.00
> % | 0.0| +0.1| -12.3| +14.6| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.1| +0.1|
> -0.6| 0| 0
> 1 100| 64| 14697.50| 14.31| 1029| 0| 34|
> 0| 1830| 0| 13| 881930| 881991|
> 903837| 0.00| 0.00
> 2 100| 64| 14692.35| 13.08| 1128| 0| 34|
> 0| 1830| 0| 13| 881619| 881679|
> 898952| 0.00| 0.00
> % | 0.0| -0.0| -8.6| +9.6| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.0| -0.0|
> -0.5| 0| 0
> 1 250| 64| 14683.40| 14.34| 1027| 0| 32|
> 0| 1698| 0| 13| 881083| 881147|
> 903071| 0.00| 0.00
> 2 250| 64| 14677.06| 12.85| 1144| 0| 32|
> 0| 1698| 0| 13| 880702| 880762|
> 898190| 0.00| 0.00
> % | 0.0| -0.0| -10.4| +11.4| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.0| -0.0|
> -0.5| 0| 0
> 1 500| 64| 14698.45| 14.39| 1025| 0| 34|
> 0| 1830| 0| 13| 881985| 882060|
> 905537| 0.00| 0.00
> 2 500| 64| 14626.17| 13.54| 1083| 0| 34|
> 0| 1830| 0| 13| 877648| 877726|
> 896427| 0.00| 0.00
> % | 0.0| -0.5| -5.9| +5.7| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.5| -0.5|
> -1.0| 0| 0
> 1 50| 256| 14386.52| 14.14| 1018| 0| 33|
> 0| 1716| 0| 13| 863266| 863336|
> 887195| 0.00| 0.00
> 2 50| 256| 14359.26| 14.22| 1016| 0| 32|
> 0| 1681| 0| 13| 861630| 861698|
> 882444| 0.00| 0.00
> % | 0.0| -0.2| +0.6| -0.2| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.2| -0.2|
> -0.5| 0| 0
> 1 100| 256| 14364.89| 14.25| 1008| 0| 34|
> 0| 1813| 0| 13| 861969| 862033|
> 886679| 0.00| 0.00
> 2 100| 256| 14393.82| 14.53| 999| 0| 34|
> 0| 1813| 0| 13| 863704| 863765|
> 884487| 0.00| 0.00
> % | 0.0| +0.2| +2.0| -0.9| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.2| +0.2|
> -0.2| 0| 0
> 1 250| 256| 14387.95| 14.05| 1024| 0| 32|
> 0| 1681| 0| 13| 863352| 863429|
> 887505| 0.00| 0.00
> 2 250| 256| 14344.74| 14.62| 987| 0| 32|
> 0| 1698| 0| 13| 860760| 860843|
> 882154| 0.00| 0.00
> % | 0.0| -0.3| +4.1| -3.6| 0| 0.0|
> 0| +1.0| 0| 0.0| -0.3| -0.3|
> -0.6| 0| 0
> 1 500| 256| 14365.89| 14.19| 1013| 0| 33|
> 0| 1769| 0| 13| 862029| 862099|
> 885852| 0.00| 0.00
> 2 500| 256| 14329.59| 14.62| 990| 0| 34|
> 0| 1830| 0| 13| 859852| 861233|
> 880082| 0.00| 0.00
> % | 0.0| -0.3| +3.0| -2.3| 0| +3.0|
> 0| +3.4| 0| 0.0| -0.3| -0.1|
> -0.7| 0| 0
> 1 50| 512| 14273.07| 14.12| 1010| 0| 33|
> 0| 1742| 0| 13| 856460| 856524|
> 880356| 0.00| 0.00
> 2 50| 512| 14222.08| 14.72| 966| 0| 32|
> 0| 1698| 0| 12| 853398| 853468|
> 875621| 0.00| 0.00
> % | 0.0| -0.4| +4.2| -4.4| 0| -3.0|
> 0| -2.5| 0| -7.7| -0.4| -0.4|
> -0.5| 0| 0
> 1 100| 512| 14236.34| 14.51| 982| 0| 34|
> 0| 1804| 0| 13| 854258| 854335|
> 876662| 0.00| 0.00
> 2 100| 512| 14147.89| 14.85| 953| 0| 34|
> 0| 1813| 0| 13| 848947| 849031|
> 871773| 0.00| 0.00
> % | 0.0| -0.6| +2.3| -3.0| 0| 0.0|
> 0| +0.5| 0| 0.0| -0.6| -0.6|
> -0.6| 0| 0
> 1 250| 512| 14260.79| 14.53| 983| 0| 33|
> 0| 1760| 0| 13| 855721| 855791|
> 879099| 0.00| 0.00
> 2 250| 512| 14190.68| 14.87| 954| 0| 32|
> 0| 1698| 0| 13| 851517| 851580|
> 874119| 0.00| 0.00
> % | 0.0| -0.5| +2.3| -3.0| 0| -3.0|
> 0| -3.5| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 500| 512| 14273.71| 14.18| 1008| 0| 33|
> 0| 1769| 0| 13| 856499| 856562|
> 879984| 0.00| 0.00
> 2 500| 512| 14213.87| 14.72| 967| 0| 34|
> 0| 1830| 0| 13| 852907| 852976|
> 875328| 0.00| 0.00
> % | 0.0| -0.4| +3.8| -4.1| 0| +3.0|
> 0| +3.4| 0| 0.0| -0.4| -0.4|
> -0.5| 0| 0
> 1 50| 1024| 14049.77| 13.89| 1024| 0| 32|
> 0| 1708| 0| 12| 843061| 843134|
> 863697| 0.00| 0.00
> 2 50| 1024| 13980.25| 14.38| 980| 0| 32|
> 0| 1698| 0| 12| 838890| 838973|
> 858350| 0.00| 0.00
> % | 0.0| -0.5| +3.5| -4.3| 0| 0.0|
> 0| -0.6| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 100| 1024| 14025.66| 13.32| 1066| 0| 33|
> 0| 1769| 0| 13| 841616| 841685|
> 864460| 0.00| 0.00
> 2 100| 1024| 13993.30| 14.82| 946| 0| 34|
> 0| 1830| 0| 12| 839676| 839735|
> 859288| 0.00| 0.00
> % | 0.0| -0.2| +11.3| -11.3| 0| +3.0|
> 0| +3.4| 0| -7.7| -0.2| -0.2|
> -0.6| 0| 0
> 1 250| 1024| 14060.15| 13.90| 1023| 0| 35|
> 0| 1848| 0| 12| 843688| 843752|
> 864475| 0.00| 0.00
> 2 250| 1024| 13982.47| 15.34| 913| 0| 34|
> 0| 1830| 0| 12| 839026| 839089|
> 859914| 0.00| 0.00
> % | 0.0| -0.6| +10.4| -10.8| 0| -2.9|
> 0| -1.0| 0| 0.0| -0.6| -0.6|
> -0.5| 0| 0
> 1 500| 1024| 14051.14| 13.80| 1024| 0| 33|
> 0| 1716| 0| 13| 843144| 843212|
> 862981| 0.00| 0.00
> 2 500| 1024| 14013.95| 15.27| 918| 0| 32|
> 0| 1681| 0| 13| 840915| 840983|
> 862635| 0.00| 0.00
> % | 0.0| -0.3| +10.7| -10.4| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.3| -0.3|
> -0.0| 0| 0
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 111+ messages in thread
* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:41 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 111+ messages in thread
From: Benjamin Herrenschmidt @ 2011-12-19 2:41 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, 2011-12-19 at 10:19 +0800, Amos Kong wrote:
> I tested with the same environment and scenarios.
> tested one scenarios for three times and compute the average for more
> precision.
>
> Thanks, Amos
>
> --------- compare results -----------
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.exhost_guest.txt
> 2 - avg-fixed.netperf.exhost_guest.txt
The output is word wrapped and generally unreadable. Any chance you can
provide us with a summary of the outcome ?
Cheers,
Ben.
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 1073.54| 10.50| 102| 0| 31|
> 0| 1612| 0| 16| 487641| 489753|
> 504764| 0.00| 0.00
> 2 1| 64| 1079.44| 10.29| 104| 0| 30|
> 0| 1594| 0| 17| 487156| 488828|
> 504411| 0.00| 0.00
> % | 0.0| +0.5| -2.0| +2.0| 0| -3.2|
> 0| -1.1| 0| +6.2| -0.1| -0.2|
> -0.1| 0| 0
> 1 2| 64| 2141.12| 15.72| 136| 0| 33|
> 0| 1744| 0| 34| 873777| 972303|
> 928926| 0.00| 0.00
> 2 2| 64| 2140.88| 15.64| 137| 0| 33|
> 0| 1744| 0| 34| 926588| 942841|
> 974095| 0.00| 0.00
> % | 0.0| -0.0| -0.5| +0.7| 0| 0.0|
> 0| 0.0| 0| 0.0| +6.0| -3.0|
> +4.9| 0| 0
> 1 4| 64| 4076.80| 19.82| 205| 0| 30|
> 0| 1577| 0| 67| 1422282| 1166425|
> 1539219| 0.00| 0.00
> 2 4| 64| 4094.32| 20.70| 197| 0| 31|
> 0| 1612| 0| 68| 1704330| 1314077|
> 1833394| 0.00| 0.00
> % | 0.0| +0.4| +4.4| -3.9| 0| +3.3|
> 0| +2.2| 0| +1.5| +19.8| +12.7|
> +19.1| 0| 0
> 1 1| 256| 2867.48| 13.44| 213| 0| 32|
> 0| 1726| 0| 14| 666430| 694922|
> 690730| 0.00| 0.00
> 2 1| 256| 2874.20| 12.71| 226| 0| 32|
> 0| 1709| 0| 14| 697960| 740407|
> 721807| 0.00| 0.00
> % | 0.0| +0.2| -5.4| +6.1| 0| 0.0|
> 0| -1.0| 0| 0.0| +4.7| +6.5|
> +4.5| 0| 0
> 1 2| 256| 5642.82| 17.61| 320| 0| 30|
> 0| 1594| 0| 30| 1226861| 1236081|
> 1268562| 0.00| 0.00
> 2 2| 256| 5661.06| 17.41| 326| 0| 30|
> 0| 1594| 0| 29| 1175696| 1143490|
> 1221528| 0.00| 0.00
> % | 0.0| +0.3| -1.1| +1.9| 0| 0.0|
> 0| 0.0| 0| -3.3| -4.2| -7.5|
> -3.7| 0| 0
> 1 4| 256| 9404.27| 23.55| 399| 0| 33|
> 0| 1744| 0| 37| 1692245| 659975|
> 1765103| 0.00| 0.00
> 2 4| 256| 8761.11| 23.18| 376| 0| 32|
> 0| 1726| 0| 36| 1699382| 418992|
> 1870804| 0.00| 0.00
> % | 0.0| -6.8| -1.6| -5.8| 0| -3.0|
> 0| -1.0| 0| -2.7| +0.4| -36.5|
> +6.0| 0| 0
> 1 1| 512| 3803.66| 14.20| 267| 0| 30|
> 0| 1594| 0| 14| 693992| 750078|
> 721107| 0.00| 0.00
> 2 1| 512| 3838.02| 15.47| 248| 0| 31|
> 0| 1612| 0| 15| 811709| 773505|
> 838788| 0.00| 0.00
> % | 0.0| +0.9| +8.9| -7.1| 0| +3.3|
> 0| +1.1| 0| +7.1| +17.0| +3.1|
> +16.3| 0| 0
> 1 2| 512| 8606.11| 19.34| 444| 0| 32|
> 0| 1709| 0| 29| 1264624| 647652|
> 1309740| 0.00| 0.00
> 2 2| 512| 8127.80| 18.93| 428| 0| 32|
> 0| 1726| 0| 28| 1216606| 1179269|
> 1266260| 0.00| 0.00
> % | 0.0| -5.6| -2.1| -3.6| 0| 0.0|
> 0| +1.0| 0| -3.4| -3.8| +82.1|
> -3.3| 0| 0
> 1 4| 512| 9409.41| 22.88| 413| 0| 30|
> 0| 1577| 0| 35| 1592587| 1072862|
> 1746787| 0.00| 0.00
> 2 4| 512| 9217.34| 23.05| 400| 0| 30|
> 0| 1594| 0| 34| 1596515| 513742|
> 1831538| 0.00| 0.00
> % | 0.0| -2.0| +0.7| -3.1| 0| 0.0|
> 0| +1.1| 0| -2.9| +0.2| -52.1|
> +4.9| 0| 0
> 1 1| 1024| 4389.75| 14.62| 303| 0| 32|
> 0| 1726| 0| 14| 663417| 611555|
> 689028| 0.00| 0.00
> 2 1| 1024| 4390.44| 13.66| 321| 0| 32|
> 0| 1726| 0| 13| 609836| 556090|
> 634511| 0.00| 0.00
> % | 0.0| +0.0| -6.6| +5.9| 0| 0.0|
> 0| 0.0| 0| -7.1| -8.1| -9.1|
> -7.9| 0| 0
> 1 2| 1024| 9046.18| 19.63| 460| 0| 30|
> 0| 1594| 0| 28| 1206853| 1054653|
> 1256203| 0.00| 0.00
> 2 2| 1024| 9027.54| 20.15| 447| 0| 30|
> 0| 1577| 0| 27| 1179555| 884408|
> 1226843| 0.00| 0.00
> % | 0.0| -0.2| +2.6| -2.8| 0| 0.0|
> 0| -1.1| 0| -3.6| -2.3| -16.1|
> -2.3| 0| 0
> 1 4| 1024| 9410.41| 22.01| 427| 0| 32|
> 0| 1726| 0| 36| 1734433| 887190|
> 1852486| 0.00| 0.00
> 2 4| 1024| 9409.11| 23.18| 405| 0| 32|
> 0| 1726| 0| 34| 1695359| 625268|
> 1803599| 0.00| 0.00
> % | 0.0| -0.0| +5.3| -5.2| 0| 0.0|
> 0| 0.0| 0| -5.6| -2.3| -29.5|
> -2.6| 0| 0
> TCP_MAERTS
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 1056.13| 17.51| 59| 0| 30|
> 0| 1594| 3| 86| 476098| 4780186|
> 538158| 0.00| 0.00
> 2 1| 64| 1065.51| 17.64| 60| 0| 30|
> 0| 1594| 3| 87| 476836| 4823602|
> 538860| 0.00| 0.00
> % | 0.0| +0.9| +0.7| +1.7| 0| 0.0|
> 0| 0.0| 0.0| +1.2| +0.2| +0.9|
> +0.1| 0| 0
> 1 2| 64| 2472.80| 32.18| 76| 0| 32|
> 0| 1709| 2| 199| 479119| 2089931|
> 600119| 0.00| 0.00
> 2 2| 64| 2468.76| 32.28| 76| 0| 33|
> 0| 1744| 1| 199| 479372| 2179342|
> 600328| 0.00| 0.00
> % | 0.0| -0.2| +0.3| 0.0| 0| +3.1|
> 0| +2.0| -50.0| 0.0| +0.1| +4.3|
> +0.0| 0| 0
> 1 4| 64| 2453.22| 32.20| 75| 0| 31|
> 0| 1612| 2| 198| 479223| 2175801|
> 600081| 0.00| 0.00
> 2 4| 64| 2465.68| 32.30| 76| 0| 30|
> 0| 1594| 3| 200| 479404| 2108293|
> 600252| 0.00| 0.00
> % | 0.0| +0.5| +0.3| +1.3| 0| -3.2|
> 0| -1.1| +50.0| +1.0| +0.0| -3.1|
> +0.0| 0| 0
> 1 1| 256| 3608.37| 24.59| 146| 0| 32|
> 0| 1726| 2| 277| 88346| 108310|
> 150637| 0.00| 0.00
> 2 1| 256| 3611.12| 24.95| 144| 0| 32|
> 0| 1709| 0| 281| 83319| 64354|
> 145511| 0.00| 0.00
> % | 0.0| +0.1| +1.5| -1.4| 0| 0.0|
> 0| -1.0| -100.0| +1.4| -5.7| -40.6|
> -3.4| 0| 0
> 1 2| 256| 7373.32| 26.83| 274| 0| 31|
> 0| 1612| 0| 4185| 278932| 264031|
> 377267| 0.00| 0.00
> 2 2| 256| 7460.03| 26.93| 276| 0| 30|
> 0| 1594| 1| 5913| 270840| 246165|
> 371999| 0.00| 0.00
> % | 0.0| +1.2| +0.4| +0.7| 0| -3.2|
> 0| -1.1| 0| +41.3| -2.9| -6.8|
> -1.4| 0| 0
> 1 4| 256| 9322.66| 29.73| 313| 0| 32|
> 0| 1709| 848| 3041| 363114| 329308|
> 482586| 0.00| 0.00
> 2 4| 256| 9365.52| 29.59| 316| 0| 33|
> 0| 1744| 414| 2884| 371485| 339191|
> 491366| 0.00| 0.00
> % | 0.0| +0.5| -0.5| +1.0| 0| +3.1|
> 0| +2.0| -51.2| -5.2| +2.3| +3.0|
> +1.8| 0| 0
> 1 1| 512| 9360.25| 17.20| 543| 0| 30|
> 0| 1577| 0| 387| 438621| 408062|
> 499989| 0.00| 0.00
> 2 1| 512| 8899.37| 18.17| 495| 0| 30|
> 0| 1594| 0| 5049| 393341| 371545|
> 459397| 0.00| 0.00
> % | 0.0| -4.9| +5.6| -8.8| 0| 0.0|
> 0| +1.1| 0| +1204.7| -10.3| -8.9|
> -8.1| 0| 0
> 1 2| 512| 8713.11| 20.77| 420| 0| 32|
> 0| 1726| 0| 11227| 296157| 246495|
> 371632| 0.00| 0.00
> 2 2| 512| 8686.31| 20.72| 421| 0| 32|
> 0| 1709| 0| 11002| 296608| 246597|
> 371797| 0.00| 0.00
> % | 0.0| -0.3| -0.2| +0.2| 0| 0.0|
> 0| -1.0| 0| -2.0| +0.2| +0.0|
> +0.0| 0| 0
> 1 4| 512| 8780.40| 22.72| 386| 0| 30|
> 0| 1594| 0| 10337| 303619| 249822|
> 385457| 0.00| 0.00
> 2 4| 512| 8858.51| 22.66| 390| 0| 30|
> 0| 1577| 0| 9968| 301847| 246543|
> 382121| 0.00| 0.00
> % | 0.0| +0.9| -0.3| +1.0| 0| 0.0|
> 0| -1.1| 0| -3.6| -0.6| -1.3|
> -0.9| 0| 0
> 1 1| 1024| 9387.09| 16.43| 571| 0| 32|
> 0| 1726| 0| 84| 452351| 429483|
> 504022| 0.00| 0.00
> 2 1| 1024| 9388.90| 16.51| 568| 0| 32|
> 0| 1726| 2| 76| 446994| 422489|
> 499025| 0.00| 0.00
> % | 0.0| +0.0| +0.5| -0.5| 0| 0.0|
> 0| 0.0| 0| -9.5| -1.2| -1.6|
> -1.0| 0| 0
> 1 2| 1024| 9361.43| 17.26| 542| 0| 30|
> 0| 1594| 5| 647| 388626| 358303|
> 442125| 0.00| 0.00
> 2 2| 1024| 9364.78| 17.25| 542| 0| 31|
> 0| 1612| 35| 554| 389326| 360169|
> 442343| 0.00| 0.00
> % | 0.0| +0.0| -0.1| 0.0| 0| +3.3|
> 0| +1.1| +600.0| -14.4| +0.2| +0.5|
> +0.0| 0| 0
> 1 4| 1024| 9381.57| 18.35| 510| 0| 32|
> 0| 1726| 1189| 648| 405900| 376269|
> 459845| 0.00| 0.00
> 2 4| 1024| 9393.48| 18.27| 513| 0| 32|
> 0| 1726| 1754| 610| 402132| 373768|
> 455629| 0.00| 0.00
> % | 0.0| +0.1| -0.4| +0.6| 0| 0.0|
> 0| 0.0| +47.5| -5.9| -0.9| -0.7|
> -0.9| 0| 0
> TCP_RR
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 50| 64| 10903.70| 8.03| 1382| 0| 32|
> 0| 1698| 0| 9| 654298| 654362|
> 665532| 0.00| 0.00
> 2 50| 64| 10880.50| 7.40| 1488| 0| 32|
> 0| 1698| 0| 10| 652907| 652973|
> 667042| 0.00| 0.00
> % | 0.0| -0.2| -7.8| +7.7| 0| 0.0|
> 0| 0.0| 0| +11.1| -0.2| -0.2|
> +0.2| 0| 0
> 1 100| 64| 10953.00| 8.40| 1332| 0| 34|
> 0| 1830| 0| 10| 657257| 657325|
> 667088| 0.00| 0.00
> 2 100| 64| 10882.78| 7.67| 1439| 0| 34|
> 0| 1830| 0| 9| 653044| 653110|
> 668883| 0.00| 0.00
> % | 0.0| -0.6| -8.7| +8.0| 0| 0.0|
> 0| 0.0| 0| -10.0| -0.6| -0.6|
> +0.3| 0| 0
> 1 250| 64| 10902.66| 8.57| 1300| 0| 33|
> 0| 1716| 0| 10| 654235| 654308|
> 665518| 0.00| 0.00
> 2 250| 64| 10866.79| 7.58| 1449| 0| 32|
> 0| 1664| 0| 10| 652083| 652155|
> 666869| 0.00| 0.00
> % | 0.0| -0.3| -11.6| +11.5| 0| -3.0|
> 0| -3.0| 0| 0.0| -0.3| -0.3|
> +0.2| 0| 0
> 1 500| 64| 10924.34| 7.25| 1509| 0| 34|
> 0| 1830| 0| 10| 655536| 655619|
> 665776| 0.00| 0.00
> 2 500| 64| 10927.52| 6.50| 1684| 0| 34|
> 0| 1813| 0| 10| 655726| 655803|
> 668527| 0.00| 0.00
> % | 0.0| +0.0| -10.3| +11.6| 0| 0.0|
> 0| -0.9| 0| 0.0| +0.0| +0.0|
> +0.4| 0| 0
> 1 50| 256| 10407.35| 9.38| 1112| 0| 32|
> 0| 1681| 0| 9| 624516| 624581|
> 639159| 0.00| 0.00
> 2 50| 256| 10422.60| 9.45| 1108| 0| 33|
> 0| 1716| 0| 9| 625432| 625498|
> 641343| 0.00| 0.00
> % | 0.0| +0.1| +0.7| -0.4| 0| +3.1|
> 0| +2.1| 0| 0.0| +0.1| +0.1|
> +0.3| 0| 0
> 1 100| 256| 10404.30| 8.99| 1159| 0| 34|
> 0| 1830| 0| 9| 624335| 624400|
> 637357| 0.00| 0.00
> 2 100| 256| 10442.84| 9.57| 1093| 0| 35|
> 0| 1848| 0| 9| 626650| 626714|
> 639017| 0.00| 0.00
> % | 0.0| +0.4| +6.5| -5.7| 0| +2.9|
> 0| +1.0| 0| 0.0| +0.4| +0.4|
> +0.3| 0| 0
> 1 250| 256| 10427.71| 9.10| 1157| 0| 32|
> 0| 1698| 0| 9| 625738| 625822|
> 641221| 0.00| 0.00
> 2 250| 256| 10464.71| 9.69| 1085| 0| 32|
> 0| 1698| 0| 9| 627960| 628040|
> 640680| 0.00| 0.00
> % | 0.0| +0.4| +6.5| -6.2| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.4| +0.4|
> -0.1| 0| 0
> 1 500| 256| 10442.18| 8.65| 1217| 0| 34|
> 0| 1830| 0| 10| 626608| 626675|
> 640081| 0.00| 0.00
> 2 500| 256| 10463.74| 9.63| 1089| 0| 34|
> 0| 1813| 0| 9| 627904| 627967|
> 643152| 0.00| 0.00
> % | 0.0| +0.2| +11.3| -10.5| 0| 0.0|
> 0| -0.9| 0| -10.0| +0.2| +0.2|
> +0.5| 0| 0
> 1 50| 512| 8505.70| 7.20| 1191| 0| 33|
> 0| 1716| 0| 7| 510418| 510486|
> 524904| 0.00| 0.00
> 2 50| 512| 8563.34| 7.24| 1185| 0| 32|
> 0| 1664| 0| 8| 513877| 513940|
> 526294| 0.00| 0.00
> % | 0.0| +0.7| +0.6| -0.5| 0| -3.0|
> 0| -3.0| 0| +14.3| +0.7| +0.7|
> +0.3| 0| 0
> 1 100| 512| 8509.97| 7.00| 1226| 0| 34|
> 0| 1830| 0| 7| 510674| 510756|
> 525205| 0.00| 0.00
> 2 100| 512| 8555.22| 7.52| 1144| 0| 34|
> 0| 1830| 0| 7| 513389| 513471|
> 526609| 0.00| 0.00
> % | 0.0| +0.5| +7.4| -6.7| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.5| +0.5|
> +0.3| 0| 0
> 1 250| 512| 8507.35| 7.21| 1183| 0| 32|
> 0| 1681| 0| 7| 510518| 510579|
> 524294| 0.00| 0.00
> 2 250| 512| 8578.13| 7.01| 1223| 0| 33|
> 0| 1716| 0| 8| 514765| 514829|
> 526481| 0.00| 0.00
> % | 0.0| +0.8| -2.8| +3.4| 0| +3.1|
> 0| +2.1| 0| +14.3| +0.8| +0.8|
> +0.4| 0| 0
> 1 500| 512| 8521.68| 6.54| 1302| 0| 34|
> 0| 1813| 0| 8| 511375| 511443|
> 523357| 0.00| 0.00
> 2 500| 512| 8573.17| 6.94| 1235| 0| 34|
> 0| 1830| 0| 7| 514467| 514533|
> 526131| 0.00| 0.00
> % | 0.0| +0.6| +6.1| -5.1| 0| 0.0|
> 0| +0.9| 0| -12.5| +0.6| +0.6|
> +0.5| 0| 0
> 1 50| 1024| 8150.01| 7.69| 1060| 0| 32|
> 0| 1681| 0| 7| 489075| 489155|
> 503136| 0.00| 0.00
> 2 50| 1024| 8129.35| 7.65| 1062| 0| 34|
> 0| 1804| 0| 7| 487841| 487915|
> 502061| 0.00| 0.00
> % | 0.0| -0.3| -0.5| +0.2| 0| +6.2|
> 0| +7.3| 0| 0.0| -0.3| -0.3|
> -0.2| 0| 0
> 1 100| 1024| 8166.06| 7.53| 1083| 0| 34|
> 0| 1804| 0| 7| 490039| 490104|
> 502990| 0.00| 0.00
> 2 100| 1024| 8118.23| 7.77| 1044| 0| 33|
> 0| 1725| 0| 7| 487171| 487236|
> 501939| 0.00| 0.00
> % | 0.0| -0.6| +3.2| -3.6| 0| -2.9|
> 0| -4.4| 0| 0.0| -0.6| -0.6|
> -0.2| 0| 0
> 1 250| 1024| 8175.35| 7.58| 1079| 0| 35|
> 0| 1848| 0| 7| 490597| 490657|
> 503641| 0.00| 0.00
> 2 250| 1024| 8146.63| 7.59| 1072| 0| 34|
> 0| 1813| 0| 7| 488874| 488939|
> 502010| 0.00| 0.00
> % | 0.0| -0.4| +0.1| -0.6| 0| -2.9|
> 0| -1.9| 0| 0.0| -0.4| -0.4|
> -0.3| 0| 0
> 1 500| 1024| 8182.51| 7.61| 1075| 0| 32|
> 0| 1698| 0| 7| 491028| 491095|
> 504222| 0.00| 0.00
> 2 500| 1024| 8157.39| 7.58| 1075| 0| 33|
> 0| 1716| 0| 7| 489521| 489593|
> 502368| 0.00| 0.00
> % | 0.0| -0.3| -0.4| 0.0| 0| +3.1|
> 0| +1.1| 0| 0.0| -0.3| -0.3|
> -0.4| 0| 0
>
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.host_guest.txt
> 2 - avg-fixed.netperf.host_guest.txt
>
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 715.76| 28.44| 24| 0| 31|
> 0| 1629| 0| 36| 3206862| 1733540|
> 3245171| 0.00| 0.00
> 2 1| 64| 714.82| 28.44| 25| 0| 31|
> 0| 1612| 0| 36| 3204256| 1709508|
> 3242450| 0.00| 0.00
> % | 0.0| -0.1| 0.0| +4.2| 0| 0.0|
> 0| -1.0| 0| 0.0| -0.1| -1.4|
> -0.1| 0| 0
> 1 2| 64| 1449.31| 41.23| 35| 0| 33|
> 0| 1744| 0| 66| 2764635| 1667527|
> 2815591| 0.00| 0.00
> 2 2| 64| 1442.92| 41.32| 34| 0| 32|
> 0| 1709| 0| 66| 2751461| 1659498|
> 2799277| 0.00| 0.00
> % | 0.0| -0.4| +0.2| -2.9| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 4| 64| 2671.25| 48.95| 54| 0| 30|
> 0| 1577| 0| 47| 914085| 289771|
> 947054| 0.00| 0.00
> 2 4| 64| 2652.68| 48.20| 54| 0| 30|
> 0| 1594| 0| 46| 882300| 293273|
> 914249| 0.00| 0.00
> % | 0.0| -0.7| -1.5| 0.0| 0| 0.0|
> 0| +1.1| 0| -2.1| -3.5| +1.2|
> -3.5| 0| 0
> 1 1| 256| 1478.61| 29.34| 50| 0| 32|
> 0| 1709| 0| 64| 3502384| 1541681|
> 3545371| 0.00| 0.00
> 2 1| 256| 1481.38| 29.27| 50| 0| 32|
> 0| 1726| 0| 64| 3485623| 1526105|
> 3528343| 0.00| 0.00
> % | 0.0| +0.2| -0.2| 0.0| 0| 0.0|
> 0| +1.0| 0| 0.0| -0.5| -1.0|
> -0.5| 0| 0
> 1 2| 256| 3095.93| 42.31| 72| 0| 31|
> 0| 1612| 0| 123| 1521019| 466426|
> 1637722| 0.00| 0.00
> 2 2| 256| 3098.16| 42.03| 73| 0| 30|
> 0| 1594| 0| 123| 1519458| 472632|
> 1632462| 0.00| 0.00
> % | 0.0| +0.1| -0.7| +1.4| 0| -3.2|
> 0| -1.1| 0| 0.0| -0.1| +1.3|
> -0.3| 0| 0
> 1 4| 256| 6553.60| 38.44| 170| 0| 33|
> 0| 1761| 0| 38| 1343193| 237604|
> 1402385| 0.00| 0.00
> 2 4| 256| 6649.37| 38.34| 172| 0| 32|
> 0| 1726| 0| 32| 1343770| 236320|
> 1400875| 0.00| 0.00
> % | 0.0| +1.5| -0.3| +1.2| 0| -3.0|
> 0| -2.0| 0| -15.8| +0.0| -0.5|
> -0.1| 0| 0
> 1 1| 512| 1818.40| 29.28| 61| 0| 31|
> 0| 1646| 0| 76| 3326887| 1491961|
> 3371189| 0.00| 0.00
> 2 1| 512| 1822.74| 29.45| 61| 0| 30|
> 0| 1577| 0| 76| 3309934| 1470715|
> 3352921| 0.00| 0.00
> % | 0.0| +0.2| +0.6| 0.0| 0| -3.2|
> 0| -4.2| 0| 0.0| -0.5| -1.4|
> -0.5| 0| 0
> 1 2| 512| 3931.72| 43.51| 89| 0| 33|
> 0| 1761| 0| 137| 1148331| 301194|
> 1270351| 0.00| 0.00
> 2 2| 512| 3926.16| 43.45| 90| 0| 32|
> 0| 1726| 0| 135| 1166280| 306110|
> 1288869| 0.00| 0.00
> % | 0.0| -0.1| -0.1| +1.1| 0| -3.0|
> 0| -2.0| 0| -1.5| +1.6| +1.6|
> +1.5| 0| 0
> 1 4| 512| 8634.49| 40.69| 211| 0| 31|
> 0| 1612| 0| 53| 1869998| 353856|
> 1948593| 0.00| 0.00
> 2 4| 512| 9137.12| 40.77| 223| 0| 30|
> 0| 1594| 0| 48| 1879574| 362851|
> 1959044| 0.00| 0.00
> % | 0.0| +5.8| +0.2| +5.7| 0| -3.2|
> 0| -1.1| 0| -9.4| +0.5| +2.5|
> +0.5| 0| 0
> 1 1| 1024| 2042.67| 29.50| 68| 0| 33|
> 0| 1778| 0| 84| 3087032| 1309160|
> 3130736| 0.00| 0.00
> 2 1| 1024| 2033.24| 29.51| 68| 0| 32|
> 0| 1726| 0| 83| 3082898| 1295936|
> 3125229| 0.00| 0.00
> % | 0.0| -0.5| +0.0| 0.0| 0| -3.0|
> 0| -2.9| 0| -1.2| -0.1| -1.0|
> -0.2| 0| 0
> 1 2| 1024| 7703.26| 39.58| 194| 0| 32|
> 0| 1673| 0| 65| 2522172| 663302|
> 2684835| 0.00| 0.00
> 2 2| 1024| 7657.00| 39.27| 194| 0| 30|
> 0| 1594| 0| 62| 2607281| 698035|
> 2755198| 0.00| 0.00
> % | 0.0| -0.6| -0.8| 0.0| 0| -6.2|
> 0| -4.7| 0| -4.6| +3.4| +5.2|
> +2.6| 0| 0
> 1 4| 1024| 11814.84| 39.38| 299| 0| 32|
> 0| 1700| 0| 28| 2510318| 576071|
> 2596631| 0.00| 0.00
> 2 4| 1024| 12871.76| 38.93| 330| 0| 32|
> 0| 1726| 0| 25| 2232437| 632785|
> 2316035| 0.00| 0.00
> % | 0.0| +8.9| -1.1| +10.4| 0| 0.0|
> 0| +1.5| 0| -10.7| -11.1| +9.8|
> -10.8| 0| 0
> TCP_MAERTS
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 1| 64| 706.98| 26.25| 26| 0| 31|
> 0| 1656| 0| 80| 2630204| 4185330|
> 2692397| 0.00| 0.00
> 2 1| 64| 767.45| 27.78| 27| 0| 30|
> 0| 1594| 0| 85| 2626694| 4317273|
> 2688799| 0.00| 0.00
> % | 0.0| +8.6| +5.8| +3.8| 0| -3.2|
> 0| -3.7| 0| +6.2| -0.1| +3.2|
> -0.1| 0| 0
> 1 2| 64| 2644.57| 42.60| 61| 0| 32|
> 0| 1700| 0| 34863| 49057| 16791|
> 204805| 0.00| 0.00
> 2 2| 64| 2721.19| 42.69| 63| 0| 32|
> 0| 1709| 0| 42365| 52739| 20094|
> 215895| 0.00| 0.00
> % | 0.0| +2.9| +0.2| +3.3| 0| 0.0|
> 0| +0.5| 0| +21.5| +7.5| +19.7|
> +5.4| 0| 0
> 1 4| 64| 2756.40| 42.69| 64| 0| 32|
> 0| 1708| 0| 52043| 47976| 12694|
> 220732| 0.00| 0.00
> 2 4| 64| 2709.19| 42.79| 62| 0| 30|
> 0| 1594| 0| 50144| 47275| 12743|
> 218074| 0.00| 0.00
> % | 0.0| -1.7| +0.2| -3.1| 0| -6.2|
> 0| -6.7| 0| -3.6| -1.5| +0.4|
> -1.2| 0| 0
> 1 1| 256| 3785.63| 32.34| 116| 0| 33|
> 0| 1734| 0| 36642| 58940| 1187|
> 157652| 0.00| 0.00
> 2 1| 256| 3593.17| 32.90| 108| 0| 32|
> 0| 1726| 0| 33179| 54980| 1130|
> 150168| 0.00| 0.00
> % | 0.0| -5.1| +1.7| -6.9| 0| -3.0|
> 0| -0.5| 0| -9.5| -6.7| -4.8|
> -4.7| 0| 0
> 1 2| 256| 8316.26| 40.45| 205| 0| 32|
> 0| 1673| 0| 28302| 114835| 1655|
> 251137| 0.00| 0.00
> 2 2| 256| 8390.41| 41.17| 203| 0| 30|
> 0| 1594| 0| 31222| 115372| 1696|
> 257151| 0.00| 0.00
> % | 0.0| +0.9| +1.8| -1.0| 0| -6.2|
> 0| -4.7| 0| +10.3| +0.5| +2.5|
> +2.4| 0| 0
> 1 4| 256| 9672.49| 42.40| 227| 0| 33|
> 0| 1761| 0| 30045| 132027| 3059|
> 283491| 0.00| 0.00
> 2 4| 256| 9741.71| 42.57| 228| 0| 32|
> 0| 1726| 6| 28875| 132125| 1999|
> 283036| 0.00| 0.00
> % | 0.0| +0.7| +0.4| +0.4| 0| -3.0|
> 0| -2.0| 0| -3.9| +0.1| -34.7|
> -0.2| 0| 0
> 1 1| 512| 6052.41| 32.23| 187| 0| 31|
> 0| 1612| 0| 44681| 86084| 2592|
> 187465| 0.00| 0.00
> 2 1| 512| 6267.37| 32.51| 192| 0| 30|
> 0| 1577| 0| 45278| 88449| 2708|
> 191374| 0.00| 0.00
> % | 0.0| +3.6| +0.9| +2.7| 0| -3.2|
> 0| -2.2| 0| +1.3| +2.7| +4.5|
> +2.1| 0| 0
> 1 2| 512| 12714.52| 38.27| 331| 0| 33|
> 0| 1744| 0| 24843| 169170| 2381|
> 292210| 0.00| 0.00
> 2 2| 512| 11341.65| 37.30| 303| 0| 32|
> 0| 1726| 14| 27393| 152465| 2980|
> 270740| 0.00| 0.00
> % | 0.0| -10.8| -2.5| -8.5| 0| -3.0|
> 0| -1.0| 0| +10.3| -9.9| +25.2|
> -7.3| 0| 0
> 1 4| 512| 16127.03| 40.80| 394| 0| 31|
> 0| 1612| 0| 15063| 210628| 2234|
> 344124| 0.00| 0.00
> 2 4| 512| 14709.72| 39.94| 367| 0| 31|
> 0| 1612| 0| 17823| 193670| 4457|
> 324744| 0.00| 0.00
> % | 0.0| -8.8| -2.1| -6.9| 0| 0.0|
> 0| 0.0| 0| +18.3| -8.1| +99.5|
> -5.6| 0| 0
> 1 1| 1024| 6436.88| 30.31| 212| 0| 33|
> 0| 1778| 0| 47820| 83940| 2007|
> 172847| 0.00| 0.00
> 2 1| 1024| 6495.48| 30.51| 212| 0| 32|
> 0| 1726| 0| 47771| 85436| 2038|
> 175027| 0.00| 0.00
> % | 0.0| +0.9| +0.7| 0.0| 0| -3.0|
> 0| -2.9| 0| -0.1| +1.8| +1.5|
> +1.3| 0| 0
> 1 2| 1024| 12245.34| 33.44| 365| 0| 31|
> 0| 1629| 0| 26499| 162142| 2909|
> 255717| 0.00| 0.00
> 2 2| 1024| 12913.57| 33.93| 380| 0| 31|
> 0| 1612| 0| 24196| 171386| 3671|
> 266270| 0.00| 0.00
> % | 0.0| +5.5| +1.5| +4.1| 0| 0.0|
> 0| -1.0| 0| -8.7| +5.7| +26.2|
> +4.1| 0| 0
> 1 4| 1024| 16428.48| 34.81| 471| 0| 32|
> 0| 1709| 0| 12496| 215031| 6557|
> 318039| 0.00| 0.00
> 2 4| 1024| 17294.33| 35.05| 492| 0| 32|
> 0| 1709| 0| 9444| 224694| 4095|
> 328098| 0.00| 0.00
> % | 0.0| +5.3| +0.7| +4.5| 0| 0.0|
> 0| 0.0| 0| -24.4| +4.5| -37.5|
> +3.2| 0| 0
> TCP_RR
> sessions| size|throughput| cpu| normalize| #tx-pkts|
> #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr|
> #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
> 1 50| 64| 14626.43| 14.93| 980| 0| 32|
> 0| 1681| 0| 13| 877664| 877731|
> 902624| 0.00| 0.00
> 2 50| 64| 14639.95| 13.10| 1123| 0| 32|
> 0| 1681| 0| 13| 878475| 878538|
> 897278| 0.00| 0.00
> % | 0.0| +0.1| -12.3| +14.6| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.1| +0.1|
> -0.6| 0| 0
> 1 100| 64| 14697.50| 14.31| 1029| 0| 34|
> 0| 1830| 0| 13| 881930| 881991|
> 903837| 0.00| 0.00
> 2 100| 64| 14692.35| 13.08| 1128| 0| 34|
> 0| 1830| 0| 13| 881619| 881679|
> 898952| 0.00| 0.00
> % | 0.0| -0.0| -8.6| +9.6| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.0| -0.0|
> -0.5| 0| 0
> 1 250| 64| 14683.40| 14.34| 1027| 0| 32|
> 0| 1698| 0| 13| 881083| 881147|
> 903071| 0.00| 0.00
> 2 250| 64| 14677.06| 12.85| 1144| 0| 32|
> 0| 1698| 0| 13| 880702| 880762|
> 898190| 0.00| 0.00
> % | 0.0| -0.0| -10.4| +11.4| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.0| -0.0|
> -0.5| 0| 0
> 1 500| 64| 14698.45| 14.39| 1025| 0| 34|
> 0| 1830| 0| 13| 881985| 882060|
> 905537| 0.00| 0.00
> 2 500| 64| 14626.17| 13.54| 1083| 0| 34|
> 0| 1830| 0| 13| 877648| 877726|
> 896427| 0.00| 0.00
> % | 0.0| -0.5| -5.9| +5.7| 0| 0.0|
> 0| 0.0| 0| 0.0| -0.5| -0.5|
> -1.0| 0| 0
> 1 50| 256| 14386.52| 14.14| 1018| 0| 33|
> 0| 1716| 0| 13| 863266| 863336|
> 887195| 0.00| 0.00
> 2 50| 256| 14359.26| 14.22| 1016| 0| 32|
> 0| 1681| 0| 13| 861630| 861698|
> 882444| 0.00| 0.00
> % | 0.0| -0.2| +0.6| -0.2| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.2| -0.2|
> -0.5| 0| 0
> 1 100| 256| 14364.89| 14.25| 1008| 0| 34|
> 0| 1813| 0| 13| 861969| 862033|
> 886679| 0.00| 0.00
> 2 100| 256| 14393.82| 14.53| 999| 0| 34|
> 0| 1813| 0| 13| 863704| 863765|
> 884487| 0.00| 0.00
> % | 0.0| +0.2| +2.0| -0.9| 0| 0.0|
> 0| 0.0| 0| 0.0| +0.2| +0.2|
> -0.2| 0| 0
> 1 250| 256| 14387.95| 14.05| 1024| 0| 32|
> 0| 1681| 0| 13| 863352| 863429|
> 887505| 0.00| 0.00
> 2 250| 256| 14344.74| 14.62| 987| 0| 32|
> 0| 1698| 0| 13| 860760| 860843|
> 882154| 0.00| 0.00
> % | 0.0| -0.3| +4.1| -3.6| 0| 0.0|
> 0| +1.0| 0| 0.0| -0.3| -0.3|
> -0.6| 0| 0
> 1 500| 256| 14365.89| 14.19| 1013| 0| 33|
> 0| 1769| 0| 13| 862029| 862099|
> 885852| 0.00| 0.00
> 2 500| 256| 14329.59| 14.62| 990| 0| 34|
> 0| 1830| 0| 13| 859852| 861233|
> 880082| 0.00| 0.00
> % | 0.0| -0.3| +3.0| -2.3| 0| +3.0|
> 0| +3.4| 0| 0.0| -0.3| -0.1|
> -0.7| 0| 0
> 1 50| 512| 14273.07| 14.12| 1010| 0| 33|
> 0| 1742| 0| 13| 856460| 856524|
> 880356| 0.00| 0.00
> 2 50| 512| 14222.08| 14.72| 966| 0| 32|
> 0| 1698| 0| 12| 853398| 853468|
> 875621| 0.00| 0.00
> % | 0.0| -0.4| +4.2| -4.4| 0| -3.0|
> 0| -2.5| 0| -7.7| -0.4| -0.4|
> -0.5| 0| 0
> 1 100| 512| 14236.34| 14.51| 982| 0| 34|
> 0| 1804| 0| 13| 854258| 854335|
> 876662| 0.00| 0.00
> 2 100| 512| 14147.89| 14.85| 953| 0| 34|
> 0| 1813| 0| 13| 848947| 849031|
> 871773| 0.00| 0.00
> % | 0.0| -0.6| +2.3| -3.0| 0| 0.0|
> 0| +0.5| 0| 0.0| -0.6| -0.6|
> -0.6| 0| 0
> 1 250| 512| 14260.79| 14.53| 983| 0| 33|
> 0| 1760| 0| 13| 855721| 855791|
> 879099| 0.00| 0.00
> 2 250| 512| 14190.68| 14.87| 954| 0| 32|
> 0| 1698| 0| 13| 851517| 851580|
> 874119| 0.00| 0.00
> % | 0.0| -0.5| +2.3| -3.0| 0| -3.0|
> 0| -3.5| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 500| 512| 14273.71| 14.18| 1008| 0| 33|
> 0| 1769| 0| 13| 856499| 856562|
> 879984| 0.00| 0.00
> 2 500| 512| 14213.87| 14.72| 967| 0| 34|
> 0| 1830| 0| 13| 852907| 852976|
> 875328| 0.00| 0.00
> % | 0.0| -0.4| +3.8| -4.1| 0| +3.0|
> 0| +3.4| 0| 0.0| -0.4| -0.4|
> -0.5| 0| 0
> 1 50| 1024| 14049.77| 13.89| 1024| 0| 32|
> 0| 1708| 0| 12| 843061| 843134|
> 863697| 0.00| 0.00
> 2 50| 1024| 13980.25| 14.38| 980| 0| 32|
> 0| 1698| 0| 12| 838890| 838973|
> 858350| 0.00| 0.00
> % | 0.0| -0.5| +3.5| -4.3| 0| 0.0|
> 0| -0.6| 0| 0.0| -0.5| -0.5|
> -0.6| 0| 0
> 1 100| 1024| 14025.66| 13.32| 1066| 0| 33|
> 0| 1769| 0| 13| 841616| 841685|
> 864460| 0.00| 0.00
> 2 100| 1024| 13993.30| 14.82| 946| 0| 34|
> 0| 1830| 0| 12| 839676| 839735|
> 859288| 0.00| 0.00
> % | 0.0| -0.2| +11.3| -11.3| 0| +3.0|
> 0| +3.4| 0| -7.7| -0.2| -0.2|
> -0.6| 0| 0
> 1 250| 1024| 14060.15| 13.90| 1023| 0| 35|
> 0| 1848| 0| 12| 843688| 843752|
> 864475| 0.00| 0.00
> 2 250| 1024| 13982.47| 15.34| 913| 0| 34|
> 0| 1830| 0| 12| 839026| 839089|
> 859914| 0.00| 0.00
> % | 0.0| -0.6| +10.4| -10.8| 0| -2.9|
> 0| -1.0| 0| 0.0| -0.6| -0.6|
> -0.5| 0| 0
> 1 500| 1024| 14051.14| 13.80| 1024| 0| 33|
> 0| 1716| 0| 13| 843144| 843212|
> 862981| 0.00| 0.00
> 2 500| 1024| 14013.95| 15.27| 918| 0| 32|
> 0| 1681| 0| 13| 840915| 840983|
> 862635| 0.00| 0.00
> % | 0.0| -0.3| +10.7| -10.4| 0| -3.0|
> 0| -2.0| 0| 0.0| -0.3| -0.3|
> -0.0| 0| 0
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
2011-12-19 2:41 ` Benjamin Herrenschmidt
(?)
@ 2011-12-19 7:21 ` Amos Kong
-1 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 7:21 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: kvm, Michael S. Tsirkin, linux-kernel, virtualization, rhod,
linux-arm-kernel
On 19/12/11 10:41, Benjamin Herrenschmidt wrote:
> On Mon, 2011-12-19 at 10:19 +0800, Amos Kong wrote:
>
>> I tested with the same environment and scenarios.
>> tested one scenarios for three times and compute the average for more
>> precision.
>>
>> Thanks, Amos
>>
>> --------- compare results -----------
>> Mon Dec 19 09:51:09 2011
>>
>> 1 - avg-old.netperf.exhost_guest.txt
>> 2 - avg-fixed.netperf.exhost_guest.txt
>
> The output is word wrapped and generally unreadable. Any chance you can
> provide us with a summary of the outcome ?
>
> Cheers,
> Ben.
Hi Ben,
The change of TCP_RR Throughput is very small.
external host -> guest: Some of throughput of TCP_STREAM and TCP_MAERTS
reduced a little.
local host -> guest: Some of throughput of TCP_STREAM and TCP_MAERTS
increased a little.
About compare result format:
---------------------------
>> 1 - avg-old.netperf.exhost_guest.txt
average result (tested 3 times) file of test 1
>> 2 - avg-fixed.netperf.exhost_guest.txt
average result file of test 2
>>
>> ======
>> TCP_STREAM
^^^ protocol
>> sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
>> 1 1| 64| 1073.54| 10.50| 102| ....
^^^ average result of old kernel, start netserver in guest, start
netperf client(s) in external host
>> 2 1| 64| 1079.44| 10.29| 104| ....
^^^ average result of fixed kernel
>> % | 0.0| +0.5| -2.0| +2.0| ....
^^^ augment rate between test1 and test2
--------
sessions: netperf clients number
size: request/response sizes
#rx-pkts: received packets number
#rx-byts: received bytes number
#rx-intr: interrupt number for receive
#io_exit: io exit number
#irq_inj: injected irq number
Thanks, Amos.
^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 7:21 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 7:21 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Rusty Russell, Michael S. Tsirkin, Ohad Ben-Cohen, virtualization,
kvm, linux-kernel, linux-arm-kernel, rhod, Jason Wang
On 19/12/11 10:41, Benjamin Herrenschmidt wrote:
> On Mon, 2011-12-19 at 10:19 +0800, Amos Kong wrote:
>
>> I tested with the same environment and scenarios.
>> tested one scenarios for three times and compute the average for more
>> precision.
>>
>> Thanks, Amos
>>
>> --------- compare results -----------
>> Mon Dec 19 09:51:09 2011
>>
>> 1 - avg-old.netperf.exhost_guest.txt
>> 2 - avg-fixed.netperf.exhost_guest.txt
>
> The output is word wrapped and generally unreadable. Any chance you can
> provide us with a summary of the outcome ?
>
> Cheers,
> Ben.
Hi Ben,
The change of TCP_RR Throughput is very small.
external host -> guest: Some of throughput of TCP_STREAM and TCP_MAERTS
reduced a little.
local host -> guest: Some of throughput of TCP_STREAM and TCP_MAERTS
increased a little.
About compare result format:
---------------------------
>> 1 - avg-old.netperf.exhost_guest.txt
average result (tested 3 times) file of test 1
>> 2 - avg-fixed.netperf.exhost_guest.txt
average result file of test 2
>>
>> ======
>> TCP_STREAM
^^^ protocol
>> sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
>> 1 1| 64| 1073.54| 10.50| 102| ....
^^^ average result of old kernel, start netserver in guest, start
netperf client(s) in external host
>> 2 1| 64| 1079.44| 10.29| 104| ....
^^^ average result of fixed kernel
>> % | 0.0| +0.5| -2.0| +2.0| ....
^^^ augment rate between test1 and test2
--------
sessions: netperf clients number
size: request/response sizes
#rx-pkts: received packets number
#rx-byts: received bytes number
#rx-intr: interrupt number for receive
#io_exit: io exit number
#irq_inj: injected irq number
Thanks, Amos.
^ permalink raw reply [flat|nested] 111+ messages in thread
* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 7:21 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 7:21 UTC (permalink / raw)
To: linux-arm-kernel
On 19/12/11 10:41, Benjamin Herrenschmidt wrote:
> On Mon, 2011-12-19 at 10:19 +0800, Amos Kong wrote:
>
>> I tested with the same environment and scenarios.
>> tested one scenarios for three times and compute the average for more
>> precision.
>>
>> Thanks, Amos
>>
>> --------- compare results -----------
>> Mon Dec 19 09:51:09 2011
>>
>> 1 - avg-old.netperf.exhost_guest.txt
>> 2 - avg-fixed.netperf.exhost_guest.txt
>
> The output is word wrapped and generally unreadable. Any chance you can
> provide us with a summary of the outcome ?
>
> Cheers,
> Ben.
Hi Ben,
The change of TCP_RR Throughput is very small.
external host -> guest: Some of throughput of TCP_STREAM and TCP_MAERTS
reduced a little.
local host -> guest: Some of throughput of TCP_STREAM and TCP_MAERTS
increased a little.
About compare result format:
---------------------------
>> 1 - avg-old.netperf.exhost_guest.txt
average result (tested 3 times) file of test 1
>> 2 - avg-fixed.netperf.exhost_guest.txt
average result file of test 2
>>
>> ======
>> TCP_STREAM
^^^ protocol
>> sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
>> 1 1| 64| 1073.54| 10.50| 102| ....
^^^ average result of old kernel, start netserver in guest, start
netperf client(s) in external host
>> 2 1| 64| 1079.44| 10.29| 104| ....
^^^ average result of fixed kernel
>> % | 0.0| +0.5| -2.0| +2.0| ....
^^^ augment rate between test1 and test2
--------
sessions: netperf clients number
size: request/response sizes
#rx-pkts: received packets number
#rx-byts: received bytes number
#rx-intr: interrupt number for receive
#io_exit: io exit number
#irq_inj: injected irq number
Thanks, Amos.
^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
2011-12-19 2:19 ` Amos Kong
(?)
@ 2011-12-19 2:50 ` Amos Kong
-1 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 2:50 UTC (permalink / raw)
To: Rusty Russell
Cc: kvm, Michael S. Tsirkin, Benjamin Herrenschmidt, linux-kernel,
virtualization, rhod, linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 3122 bytes --]
On 19/12/11 10:19, Amos Kong wrote:
> On 12/12/11 13:12, Rusty Russell wrote:
>> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong<akong@redhat.com> wrote:
>>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>>
>>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>>> varies even as message size is constant.
>>>>>
>>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>>> regressed consistently, between 7 and 35%
>>>>>
>>>>> The "fix" applied was simply this:
>>>>
>>>> What machine& processor was this ?
>>>
>>> pined guest memory to numa node 1
>>
>> Please try this patch. How much does the branch cost us?
>>
>> (Compiles, untested).
>>
>> Thanks,
>> Rusty.
>>
>> From: Rusty Russell<rusty@rustcorp.com.au>
>> Subject: virtio: harsher barriers for virtio-mmio.
>>
>> We were cheating with our barriers; using the smp ones rather than the
>> real device ones. That was fine, until virtio-mmio came along, which
>> could be talking to a real device (a non-SMP CPU).
>>
>> Unfortunately, just putting back the real barriers (reverting
>> d57ed95d) causes a performance regression on virtio-pci. In
>> particular, Amos reports netbench's TCP_RR over virtio_net CPU
>> utilization increased up to 35% while throughput went down by up to
>> 14%.
>>
>> By comparison, this branch costs us???
>>
>> Reference: https://lkml.org/lkml/2011/12/11/22
>>
>> Signed-off-by: Rusty Russell<rusty@rustcorp.com.au>
>> ---
>> drivers/lguest/lguest_device.c | 10 ++++++----
>> drivers/s390/kvm/kvm_virtio.c | 2 +-
>> drivers/virtio/virtio_mmio.c | 7 ++++---
>> drivers/virtio/virtio_pci.c | 4 ++--
>> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
>> include/linux/virtio_ring.h | 1 +
>> tools/virtio/linux/virtio.h | 1 +
>> tools/virtio/virtio_test.c | 3 ++-
>> 8 files changed, 38 insertions(+), 24 deletions(-)
>
> Hi all,
>
> I tested with the same environment and scenarios.
> tested one scenarios for three times and compute the average for more
> precision.
>
> Thanks, Amos
>
> --------- compare results -----------
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.exhost_guest.txt
> 2 - avg-fixed.netperf.exhost_guest.txt
>
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts|
> #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit|
> #rpkt/#irq
> 1 1| 64| 1073.54| 10.50| 102| 0| 31| 0| 1612| 0| 16| 487641| 489753|
> 504764| 0.00| 0.00
> 2 1| 64| 1079.44| 10.29| 104| 0| 30| 0| 1594| 0| 17| 487156| 488828|
> 504411| 0.00| 0.00
> % | 0.0| +0.5| -2.0| +2.0| 0| -3.2| 0| -1.1| 0| +6.2| -0.1| -0.2| -0.1|
The format is broken in webpage, attached the result file.
it's also available here: http://amosk.info/download/rusty-fix-perf.txt
[-- Attachment #2: rusty-fix-perf.txt --]
[-- Type: text/plain, Size: 42872 bytes --]
--------- compare results -----------
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.exhost_guest.txt
2 - avg-fixed.netperf.exhost_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1073.54| 10.50| 102| 0| 31| 0| 1612| 0| 16| 487641| 489753| 504764| 0.00| 0.00
2 1| 64| 1079.44| 10.29| 104| 0| 30| 0| 1594| 0| 17| 487156| 488828| 504411| 0.00| 0.00
% | 0.0| +0.5| -2.0| +2.0| 0| -3.2| 0| -1.1| 0| +6.2| -0.1| -0.2| -0.1| 0| 0
1 2| 64| 2141.12| 15.72| 136| 0| 33| 0| 1744| 0| 34| 873777| 972303| 928926| 0.00| 0.00
2 2| 64| 2140.88| 15.64| 137| 0| 33| 0| 1744| 0| 34| 926588| 942841| 974095| 0.00| 0.00
% | 0.0| -0.0| -0.5| +0.7| 0| 0.0| 0| 0.0| 0| 0.0| +6.0| -3.0| +4.9| 0| 0
1 4| 64| 4076.80| 19.82| 205| 0| 30| 0| 1577| 0| 67| 1422282| 1166425| 1539219| 0.00| 0.00
2 4| 64| 4094.32| 20.70| 197| 0| 31| 0| 1612| 0| 68| 1704330| 1314077| 1833394| 0.00| 0.00
% | 0.0| +0.4| +4.4| -3.9| 0| +3.3| 0| +2.2| 0| +1.5| +19.8| +12.7| +19.1| 0| 0
1 1| 256| 2867.48| 13.44| 213| 0| 32| 0| 1726| 0| 14| 666430| 694922| 690730| 0.00| 0.00
2 1| 256| 2874.20| 12.71| 226| 0| 32| 0| 1709| 0| 14| 697960| 740407| 721807| 0.00| 0.00
% | 0.0| +0.2| -5.4| +6.1| 0| 0.0| 0| -1.0| 0| 0.0| +4.7| +6.5| +4.5| 0| 0
1 2| 256| 5642.82| 17.61| 320| 0| 30| 0| 1594| 0| 30| 1226861| 1236081| 1268562| 0.00| 0.00
2 2| 256| 5661.06| 17.41| 326| 0| 30| 0| 1594| 0| 29| 1175696| 1143490| 1221528| 0.00| 0.00
% | 0.0| +0.3| -1.1| +1.9| 0| 0.0| 0| 0.0| 0| -3.3| -4.2| -7.5| -3.7| 0| 0
1 4| 256| 9404.27| 23.55| 399| 0| 33| 0| 1744| 0| 37| 1692245| 659975| 1765103| 0.00| 0.00
2 4| 256| 8761.11| 23.18| 376| 0| 32| 0| 1726| 0| 36| 1699382| 418992| 1870804| 0.00| 0.00
% | 0.0| -6.8| -1.6| -5.8| 0| -3.0| 0| -1.0| 0| -2.7| +0.4| -36.5| +6.0| 0| 0
1 1| 512| 3803.66| 14.20| 267| 0| 30| 0| 1594| 0| 14| 693992| 750078| 721107| 0.00| 0.00
2 1| 512| 3838.02| 15.47| 248| 0| 31| 0| 1612| 0| 15| 811709| 773505| 838788| 0.00| 0.00
% | 0.0| +0.9| +8.9| -7.1| 0| +3.3| 0| +1.1| 0| +7.1| +17.0| +3.1| +16.3| 0| 0
1 2| 512| 8606.11| 19.34| 444| 0| 32| 0| 1709| 0| 29| 1264624| 647652| 1309740| 0.00| 0.00
2 2| 512| 8127.80| 18.93| 428| 0| 32| 0| 1726| 0| 28| 1216606| 1179269| 1266260| 0.00| 0.00
% | 0.0| -5.6| -2.1| -3.6| 0| 0.0| 0| +1.0| 0| -3.4| -3.8| +82.1| -3.3| 0| 0
1 4| 512| 9409.41| 22.88| 413| 0| 30| 0| 1577| 0| 35| 1592587| 1072862| 1746787| 0.00| 0.00
2 4| 512| 9217.34| 23.05| 400| 0| 30| 0| 1594| 0| 34| 1596515| 513742| 1831538| 0.00| 0.00
% | 0.0| -2.0| +0.7| -3.1| 0| 0.0| 0| +1.1| 0| -2.9| +0.2| -52.1| +4.9| 0| 0
1 1| 1024| 4389.75| 14.62| 303| 0| 32| 0| 1726| 0| 14| 663417| 611555| 689028| 0.00| 0.00
2 1| 1024| 4390.44| 13.66| 321| 0| 32| 0| 1726| 0| 13| 609836| 556090| 634511| 0.00| 0.00
% | 0.0| +0.0| -6.6| +5.9| 0| 0.0| 0| 0.0| 0| -7.1| -8.1| -9.1| -7.9| 0| 0
1 2| 1024| 9046.18| 19.63| 460| 0| 30| 0| 1594| 0| 28| 1206853| 1054653| 1256203| 0.00| 0.00
2 2| 1024| 9027.54| 20.15| 447| 0| 30| 0| 1577| 0| 27| 1179555| 884408| 1226843| 0.00| 0.00
% | 0.0| -0.2| +2.6| -2.8| 0| 0.0| 0| -1.1| 0| -3.6| -2.3| -16.1| -2.3| 0| 0
1 4| 1024| 9410.41| 22.01| 427| 0| 32| 0| 1726| 0| 36| 1734433| 887190| 1852486| 0.00| 0.00
2 4| 1024| 9409.11| 23.18| 405| 0| 32| 0| 1726| 0| 34| 1695359| 625268| 1803599| 0.00| 0.00
% | 0.0| -0.0| +5.3| -5.2| 0| 0.0| 0| 0.0| 0| -5.6| -2.3| -29.5| -2.6| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1056.13| 17.51| 59| 0| 30| 0| 1594| 3| 86| 476098| 4780186| 538158| 0.00| 0.00
2 1| 64| 1065.51| 17.64| 60| 0| 30| 0| 1594| 3| 87| 476836| 4823602| 538860| 0.00| 0.00
% | 0.0| +0.9| +0.7| +1.7| 0| 0.0| 0| 0.0| 0.0| +1.2| +0.2| +0.9| +0.1| 0| 0
1 2| 64| 2472.80| 32.18| 76| 0| 32| 0| 1709| 2| 199| 479119| 2089931| 600119| 0.00| 0.00
2 2| 64| 2468.76| 32.28| 76| 0| 33| 0| 1744| 1| 199| 479372| 2179342| 600328| 0.00| 0.00
% | 0.0| -0.2| +0.3| 0.0| 0| +3.1| 0| +2.0| -50.0| 0.0| +0.1| +4.3| +0.0| 0| 0
1 4| 64| 2453.22| 32.20| 75| 0| 31| 0| 1612| 2| 198| 479223| 2175801| 600081| 0.00| 0.00
2 4| 64| 2465.68| 32.30| 76| 0| 30| 0| 1594| 3| 200| 479404| 2108293| 600252| 0.00| 0.00
% | 0.0| +0.5| +0.3| +1.3| 0| -3.2| 0| -1.1| +50.0| +1.0| +0.0| -3.1| +0.0| 0| 0
1 1| 256| 3608.37| 24.59| 146| 0| 32| 0| 1726| 2| 277| 88346| 108310| 150637| 0.00| 0.00
2 1| 256| 3611.12| 24.95| 144| 0| 32| 0| 1709| 0| 281| 83319| 64354| 145511| 0.00| 0.00
% | 0.0| +0.1| +1.5| -1.4| 0| 0.0| 0| -1.0| -100.0| +1.4| -5.7| -40.6| -3.4| 0| 0
1 2| 256| 7373.32| 26.83| 274| 0| 31| 0| 1612| 0| 4185| 278932| 264031| 377267| 0.00| 0.00
2 2| 256| 7460.03| 26.93| 276| 0| 30| 0| 1594| 1| 5913| 270840| 246165| 371999| 0.00| 0.00
% | 0.0| +1.2| +0.4| +0.7| 0| -3.2| 0| -1.1| 0| +41.3| -2.9| -6.8| -1.4| 0| 0
1 4| 256| 9322.66| 29.73| 313| 0| 32| 0| 1709| 848| 3041| 363114| 329308| 482586| 0.00| 0.00
2 4| 256| 9365.52| 29.59| 316| 0| 33| 0| 1744| 414| 2884| 371485| 339191| 491366| 0.00| 0.00
% | 0.0| +0.5| -0.5| +1.0| 0| +3.1| 0| +2.0| -51.2| -5.2| +2.3| +3.0| +1.8| 0| 0
1 1| 512| 9360.25| 17.20| 543| 0| 30| 0| 1577| 0| 387| 438621| 408062| 499989| 0.00| 0.00
2 1| 512| 8899.37| 18.17| 495| 0| 30| 0| 1594| 0| 5049| 393341| 371545| 459397| 0.00| 0.00
% | 0.0| -4.9| +5.6| -8.8| 0| 0.0| 0| +1.1| 0| +1204.7| -10.3| -8.9| -8.1| 0| 0
1 2| 512| 8713.11| 20.77| 420| 0| 32| 0| 1726| 0| 11227| 296157| 246495| 371632| 0.00| 0.00
2 2| 512| 8686.31| 20.72| 421| 0| 32| 0| 1709| 0| 11002| 296608| 246597| 371797| 0.00| 0.00
% | 0.0| -0.3| -0.2| +0.2| 0| 0.0| 0| -1.0| 0| -2.0| +0.2| +0.0| +0.0| 0| 0
1 4| 512| 8780.40| 22.72| 386| 0| 30| 0| 1594| 0| 10337| 303619| 249822| 385457| 0.00| 0.00
2 4| 512| 8858.51| 22.66| 390| 0| 30| 0| 1577| 0| 9968| 301847| 246543| 382121| 0.00| 0.00
% | 0.0| +0.9| -0.3| +1.0| 0| 0.0| 0| -1.1| 0| -3.6| -0.6| -1.3| -0.9| 0| 0
1 1| 1024| 9387.09| 16.43| 571| 0| 32| 0| 1726| 0| 84| 452351| 429483| 504022| 0.00| 0.00
2 1| 1024| 9388.90| 16.51| 568| 0| 32| 0| 1726| 2| 76| 446994| 422489| 499025| 0.00| 0.00
% | 0.0| +0.0| +0.5| -0.5| 0| 0.0| 0| 0.0| 0| -9.5| -1.2| -1.6| -1.0| 0| 0
1 2| 1024| 9361.43| 17.26| 542| 0| 30| 0| 1594| 5| 647| 388626| 358303| 442125| 0.00| 0.00
2 2| 1024| 9364.78| 17.25| 542| 0| 31| 0| 1612| 35| 554| 389326| 360169| 442343| 0.00| 0.00
% | 0.0| +0.0| -0.1| 0.0| 0| +3.3| 0| +1.1| +600.0| -14.4| +0.2| +0.5| +0.0| 0| 0
1 4| 1024| 9381.57| 18.35| 510| 0| 32| 0| 1726| 1189| 648| 405900| 376269| 459845| 0.00| 0.00
2 4| 1024| 9393.48| 18.27| 513| 0| 32| 0| 1726| 1754| 610| 402132| 373768| 455629| 0.00| 0.00
% | 0.0| +0.1| -0.4| +0.6| 0| 0.0| 0| 0.0| +47.5| -5.9| -0.9| -0.7| -0.9| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 10903.70| 8.03| 1382| 0| 32| 0| 1698| 0| 9| 654298| 654362| 665532| 0.00| 0.00
2 50| 64| 10880.50| 7.40| 1488| 0| 32| 0| 1698| 0| 10| 652907| 652973| 667042| 0.00| 0.00
% | 0.0| -0.2| -7.8| +7.7| 0| 0.0| 0| 0.0| 0| +11.1| -0.2| -0.2| +0.2| 0| 0
1 100| 64| 10953.00| 8.40| 1332| 0| 34| 0| 1830| 0| 10| 657257| 657325| 667088| 0.00| 0.00
2 100| 64| 10882.78| 7.67| 1439| 0| 34| 0| 1830| 0| 9| 653044| 653110| 668883| 0.00| 0.00
% | 0.0| -0.6| -8.7| +8.0| 0| 0.0| 0| 0.0| 0| -10.0| -0.6| -0.6| +0.3| 0| 0
1 250| 64| 10902.66| 8.57| 1300| 0| 33| 0| 1716| 0| 10| 654235| 654308| 665518| 0.00| 0.00
2 250| 64| 10866.79| 7.58| 1449| 0| 32| 0| 1664| 0| 10| 652083| 652155| 666869| 0.00| 0.00
% | 0.0| -0.3| -11.6| +11.5| 0| -3.0| 0| -3.0| 0| 0.0| -0.3| -0.3| +0.2| 0| 0
1 500| 64| 10924.34| 7.25| 1509| 0| 34| 0| 1830| 0| 10| 655536| 655619| 665776| 0.00| 0.00
2 500| 64| 10927.52| 6.50| 1684| 0| 34| 0| 1813| 0| 10| 655726| 655803| 668527| 0.00| 0.00
% | 0.0| +0.0| -10.3| +11.6| 0| 0.0| 0| -0.9| 0| 0.0| +0.0| +0.0| +0.4| 0| 0
1 50| 256| 10407.35| 9.38| 1112| 0| 32| 0| 1681| 0| 9| 624516| 624581| 639159| 0.00| 0.00
2 50| 256| 10422.60| 9.45| 1108| 0| 33| 0| 1716| 0| 9| 625432| 625498| 641343| 0.00| 0.00
% | 0.0| +0.1| +0.7| -0.4| 0| +3.1| 0| +2.1| 0| 0.0| +0.1| +0.1| +0.3| 0| 0
1 100| 256| 10404.30| 8.99| 1159| 0| 34| 0| 1830| 0| 9| 624335| 624400| 637357| 0.00| 0.00
2 100| 256| 10442.84| 9.57| 1093| 0| 35| 0| 1848| 0| 9| 626650| 626714| 639017| 0.00| 0.00
% | 0.0| +0.4| +6.5| -5.7| 0| +2.9| 0| +1.0| 0| 0.0| +0.4| +0.4| +0.3| 0| 0
1 250| 256| 10427.71| 9.10| 1157| 0| 32| 0| 1698| 0| 9| 625738| 625822| 641221| 0.00| 0.00
2 250| 256| 10464.71| 9.69| 1085| 0| 32| 0| 1698| 0| 9| 627960| 628040| 640680| 0.00| 0.00
% | 0.0| +0.4| +6.5| -6.2| 0| 0.0| 0| 0.0| 0| 0.0| +0.4| +0.4| -0.1| 0| 0
1 500| 256| 10442.18| 8.65| 1217| 0| 34| 0| 1830| 0| 10| 626608| 626675| 640081| 0.00| 0.00
2 500| 256| 10463.74| 9.63| 1089| 0| 34| 0| 1813| 0| 9| 627904| 627967| 643152| 0.00| 0.00
% | 0.0| +0.2| +11.3| -10.5| 0| 0.0| 0| -0.9| 0| -10.0| +0.2| +0.2| +0.5| 0| 0
1 50| 512| 8505.70| 7.20| 1191| 0| 33| 0| 1716| 0| 7| 510418| 510486| 524904| 0.00| 0.00
2 50| 512| 8563.34| 7.24| 1185| 0| 32| 0| 1664| 0| 8| 513877| 513940| 526294| 0.00| 0.00
% | 0.0| +0.7| +0.6| -0.5| 0| -3.0| 0| -3.0| 0| +14.3| +0.7| +0.7| +0.3| 0| 0
1 100| 512| 8509.97| 7.00| 1226| 0| 34| 0| 1830| 0| 7| 510674| 510756| 525205| 0.00| 0.00
2 100| 512| 8555.22| 7.52| 1144| 0| 34| 0| 1830| 0| 7| 513389| 513471| 526609| 0.00| 0.00
% | 0.0| +0.5| +7.4| -6.7| 0| 0.0| 0| 0.0| 0| 0.0| +0.5| +0.5| +0.3| 0| 0
1 250| 512| 8507.35| 7.21| 1183| 0| 32| 0| 1681| 0| 7| 510518| 510579| 524294| 0.00| 0.00
2 250| 512| 8578.13| 7.01| 1223| 0| 33| 0| 1716| 0| 8| 514765| 514829| 526481| 0.00| 0.00
% | 0.0| +0.8| -2.8| +3.4| 0| +3.1| 0| +2.1| 0| +14.3| +0.8| +0.8| +0.4| 0| 0
1 500| 512| 8521.68| 6.54| 1302| 0| 34| 0| 1813| 0| 8| 511375| 511443| 523357| 0.00| 0.00
2 500| 512| 8573.17| 6.94| 1235| 0| 34| 0| 1830| 0| 7| 514467| 514533| 526131| 0.00| 0.00
% | 0.0| +0.6| +6.1| -5.1| 0| 0.0| 0| +0.9| 0| -12.5| +0.6| +0.6| +0.5| 0| 0
1 50| 1024| 8150.01| 7.69| 1060| 0| 32| 0| 1681| 0| 7| 489075| 489155| 503136| 0.00| 0.00
2 50| 1024| 8129.35| 7.65| 1062| 0| 34| 0| 1804| 0| 7| 487841| 487915| 502061| 0.00| 0.00
% | 0.0| -0.3| -0.5| +0.2| 0| +6.2| 0| +7.3| 0| 0.0| -0.3| -0.3| -0.2| 0| 0
1 100| 1024| 8166.06| 7.53| 1083| 0| 34| 0| 1804| 0| 7| 490039| 490104| 502990| 0.00| 0.00
2 100| 1024| 8118.23| 7.77| 1044| 0| 33| 0| 1725| 0| 7| 487171| 487236| 501939| 0.00| 0.00
% | 0.0| -0.6| +3.2| -3.6| 0| -2.9| 0| -4.4| 0| 0.0| -0.6| -0.6| -0.2| 0| 0
1 250| 1024| 8175.35| 7.58| 1079| 0| 35| 0| 1848| 0| 7| 490597| 490657| 503641| 0.00| 0.00
2 250| 1024| 8146.63| 7.59| 1072| 0| 34| 0| 1813| 0| 7| 488874| 488939| 502010| 0.00| 0.00
% | 0.0| -0.4| +0.1| -0.6| 0| -2.9| 0| -1.9| 0| 0.0| -0.4| -0.4| -0.3| 0| 0
1 500| 1024| 8182.51| 7.61| 1075| 0| 32| 0| 1698| 0| 7| 491028| 491095| 504222| 0.00| 0.00
2 500| 1024| 8157.39| 7.58| 1075| 0| 33| 0| 1716| 0| 7| 489521| 489593| 502368| 0.00| 0.00
% | 0.0| -0.3| -0.4| 0.0| 0| +3.1| 0| +1.1| 0| 0.0| -0.3| -0.3| -0.4| 0| 0
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.host_guest.txt
2 - avg-fixed.netperf.host_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 715.76| 28.44| 24| 0| 31| 0| 1629| 0| 36| 3206862| 1733540| 3245171| 0.00| 0.00
2 1| 64| 714.82| 28.44| 25| 0| 31| 0| 1612| 0| 36| 3204256| 1709508| 3242450| 0.00| 0.00
% | 0.0| -0.1| 0.0| +4.2| 0| 0.0| 0| -1.0| 0| 0.0| -0.1| -1.4| -0.1| 0| 0
1 2| 64| 1449.31| 41.23| 35| 0| 33| 0| 1744| 0| 66| 2764635| 1667527| 2815591| 0.00| 0.00
2 2| 64| 1442.92| 41.32| 34| 0| 32| 0| 1709| 0| 66| 2751461| 1659498| 2799277| 0.00| 0.00
% | 0.0| -0.4| +0.2| -2.9| 0| -3.0| 0| -2.0| 0| 0.0| -0.5| -0.5| -0.6| 0| 0
1 4| 64| 2671.25| 48.95| 54| 0| 30| 0| 1577| 0| 47| 914085| 289771| 947054| 0.00| 0.00
2 4| 64| 2652.68| 48.20| 54| 0| 30| 0| 1594| 0| 46| 882300| 293273| 914249| 0.00| 0.00
% | 0.0| -0.7| -1.5| 0.0| 0| 0.0| 0| +1.1| 0| -2.1| -3.5| +1.2| -3.5| 0| 0
1 1| 256| 1478.61| 29.34| 50| 0| 32| 0| 1709| 0| 64| 3502384| 1541681| 3545371| 0.00| 0.00
2 1| 256| 1481.38| 29.27| 50| 0| 32| 0| 1726| 0| 64| 3485623| 1526105| 3528343| 0.00| 0.00
% | 0.0| +0.2| -0.2| 0.0| 0| 0.0| 0| +1.0| 0| 0.0| -0.5| -1.0| -0.5| 0| 0
1 2| 256| 3095.93| 42.31| 72| 0| 31| 0| 1612| 0| 123| 1521019| 466426| 1637722| 0.00| 0.00
2 2| 256| 3098.16| 42.03| 73| 0| 30| 0| 1594| 0| 123| 1519458| 472632| 1632462| 0.00| 0.00
% | 0.0| +0.1| -0.7| +1.4| 0| -3.2| 0| -1.1| 0| 0.0| -0.1| +1.3| -0.3| 0| 0
1 4| 256| 6553.60| 38.44| 170| 0| 33| 0| 1761| 0| 38| 1343193| 237604| 1402385| 0.00| 0.00
2 4| 256| 6649.37| 38.34| 172| 0| 32| 0| 1726| 0| 32| 1343770| 236320| 1400875| 0.00| 0.00
% | 0.0| +1.5| -0.3| +1.2| 0| -3.0| 0| -2.0| 0| -15.8| +0.0| -0.5| -0.1| 0| 0
1 1| 512| 1818.40| 29.28| 61| 0| 31| 0| 1646| 0| 76| 3326887| 1491961| 3371189| 0.00| 0.00
2 1| 512| 1822.74| 29.45| 61| 0| 30| 0| 1577| 0| 76| 3309934| 1470715| 3352921| 0.00| 0.00
% | 0.0| +0.2| +0.6| 0.0| 0| -3.2| 0| -4.2| 0| 0.0| -0.5| -1.4| -0.5| 0| 0
1 2| 512| 3931.72| 43.51| 89| 0| 33| 0| 1761| 0| 137| 1148331| 301194| 1270351| 0.00| 0.00
2 2| 512| 3926.16| 43.45| 90| 0| 32| 0| 1726| 0| 135| 1166280| 306110| 1288869| 0.00| 0.00
% | 0.0| -0.1| -0.1| +1.1| 0| -3.0| 0| -2.0| 0| -1.5| +1.6| +1.6| +1.5| 0| 0
1 4| 512| 8634.49| 40.69| 211| 0| 31| 0| 1612| 0| 53| 1869998| 353856| 1948593| 0.00| 0.00
2 4| 512| 9137.12| 40.77| 223| 0| 30| 0| 1594| 0| 48| 1879574| 362851| 1959044| 0.00| 0.00
% | 0.0| +5.8| +0.2| +5.7| 0| -3.2| 0| -1.1| 0| -9.4| +0.5| +2.5| +0.5| 0| 0
1 1| 1024| 2042.67| 29.50| 68| 0| 33| 0| 1778| 0| 84| 3087032| 1309160| 3130736| 0.00| 0.00
2 1| 1024| 2033.24| 29.51| 68| 0| 32| 0| 1726| 0| 83| 3082898| 1295936| 3125229| 0.00| 0.00
% | 0.0| -0.5| +0.0| 0.0| 0| -3.0| 0| -2.9| 0| -1.2| -0.1| -1.0| -0.2| 0| 0
1 2| 1024| 7703.26| 39.58| 194| 0| 32| 0| 1673| 0| 65| 2522172| 663302| 2684835| 0.00| 0.00
2 2| 1024| 7657.00| 39.27| 194| 0| 30| 0| 1594| 0| 62| 2607281| 698035| 2755198| 0.00| 0.00
% | 0.0| -0.6| -0.8| 0.0| 0| -6.2| 0| -4.7| 0| -4.6| +3.4| +5.2| +2.6| 0| 0
1 4| 1024| 11814.84| 39.38| 299| 0| 32| 0| 1700| 0| 28| 2510318| 576071| 2596631| 0.00| 0.00
2 4| 1024| 12871.76| 38.93| 330| 0| 32| 0| 1726| 0| 25| 2232437| 632785| 2316035| 0.00| 0.00
% | 0.0| +8.9| -1.1| +10.4| 0| 0.0| 0| +1.5| 0| -10.7| -11.1| +9.8| -10.8| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 706.98| 26.25| 26| 0| 31| 0| 1656| 0| 80| 2630204| 4185330| 2692397| 0.00| 0.00
2 1| 64| 767.45| 27.78| 27| 0| 30| 0| 1594| 0| 85| 2626694| 4317273| 2688799| 0.00| 0.00
% | 0.0| +8.6| +5.8| +3.8| 0| -3.2| 0| -3.7| 0| +6.2| -0.1| +3.2| -0.1| 0| 0
1 2| 64| 2644.57| 42.60| 61| 0| 32| 0| 1700| 0| 34863| 49057| 16791| 204805| 0.00| 0.00
2 2| 64| 2721.19| 42.69| 63| 0| 32| 0| 1709| 0| 42365| 52739| 20094| 215895| 0.00| 0.00
% | 0.0| +2.9| +0.2| +3.3| 0| 0.0| 0| +0.5| 0| +21.5| +7.5| +19.7| +5.4| 0| 0
1 4| 64| 2756.40| 42.69| 64| 0| 32| 0| 1708| 0| 52043| 47976| 12694| 220732| 0.00| 0.00
2 4| 64| 2709.19| 42.79| 62| 0| 30| 0| 1594| 0| 50144| 47275| 12743| 218074| 0.00| 0.00
% | 0.0| -1.7| +0.2| -3.1| 0| -6.2| 0| -6.7| 0| -3.6| -1.5| +0.4| -1.2| 0| 0
1 1| 256| 3785.63| 32.34| 116| 0| 33| 0| 1734| 0| 36642| 58940| 1187| 157652| 0.00| 0.00
2 1| 256| 3593.17| 32.90| 108| 0| 32| 0| 1726| 0| 33179| 54980| 1130| 150168| 0.00| 0.00
% | 0.0| -5.1| +1.7| -6.9| 0| -3.0| 0| -0.5| 0| -9.5| -6.7| -4.8| -4.7| 0| 0
1 2| 256| 8316.26| 40.45| 205| 0| 32| 0| 1673| 0| 28302| 114835| 1655| 251137| 0.00| 0.00
2 2| 256| 8390.41| 41.17| 203| 0| 30| 0| 1594| 0| 31222| 115372| 1696| 257151| 0.00| 0.00
% | 0.0| +0.9| +1.8| -1.0| 0| -6.2| 0| -4.7| 0| +10.3| +0.5| +2.5| +2.4| 0| 0
1 4| 256| 9672.49| 42.40| 227| 0| 33| 0| 1761| 0| 30045| 132027| 3059| 283491| 0.00| 0.00
2 4| 256| 9741.71| 42.57| 228| 0| 32| 0| 1726| 6| 28875| 132125| 1999| 283036| 0.00| 0.00
% | 0.0| +0.7| +0.4| +0.4| 0| -3.0| 0| -2.0| 0| -3.9| +0.1| -34.7| -0.2| 0| 0
1 1| 512| 6052.41| 32.23| 187| 0| 31| 0| 1612| 0| 44681| 86084| 2592| 187465| 0.00| 0.00
2 1| 512| 6267.37| 32.51| 192| 0| 30| 0| 1577| 0| 45278| 88449| 2708| 191374| 0.00| 0.00
% | 0.0| +3.6| +0.9| +2.7| 0| -3.2| 0| -2.2| 0| +1.3| +2.7| +4.5| +2.1| 0| 0
1 2| 512| 12714.52| 38.27| 331| 0| 33| 0| 1744| 0| 24843| 169170| 2381| 292210| 0.00| 0.00
2 2| 512| 11341.65| 37.30| 303| 0| 32| 0| 1726| 14| 27393| 152465| 2980| 270740| 0.00| 0.00
% | 0.0| -10.8| -2.5| -8.5| 0| -3.0| 0| -1.0| 0| +10.3| -9.9| +25.2| -7.3| 0| 0
1 4| 512| 16127.03| 40.80| 394| 0| 31| 0| 1612| 0| 15063| 210628| 2234| 344124| 0.00| 0.00
2 4| 512| 14709.72| 39.94| 367| 0| 31| 0| 1612| 0| 17823| 193670| 4457| 324744| 0.00| 0.00
% | 0.0| -8.8| -2.1| -6.9| 0| 0.0| 0| 0.0| 0| +18.3| -8.1| +99.5| -5.6| 0| 0
1 1| 1024| 6436.88| 30.31| 212| 0| 33| 0| 1778| 0| 47820| 83940| 2007| 172847| 0.00| 0.00
2 1| 1024| 6495.48| 30.51| 212| 0| 32| 0| 1726| 0| 47771| 85436| 2038| 175027| 0.00| 0.00
% | 0.0| +0.9| +0.7| 0.0| 0| -3.0| 0| -2.9| 0| -0.1| +1.8| +1.5| +1.3| 0| 0
1 2| 1024| 12245.34| 33.44| 365| 0| 31| 0| 1629| 0| 26499| 162142| 2909| 255717| 0.00| 0.00
2 2| 1024| 12913.57| 33.93| 380| 0| 31| 0| 1612| 0| 24196| 171386| 3671| 266270| 0.00| 0.00
% | 0.0| +5.5| +1.5| +4.1| 0| 0.0| 0| -1.0| 0| -8.7| +5.7| +26.2| +4.1| 0| 0
1 4| 1024| 16428.48| 34.81| 471| 0| 32| 0| 1709| 0| 12496| 215031| 6557| 318039| 0.00| 0.00
2 4| 1024| 17294.33| 35.05| 492| 0| 32| 0| 1709| 0| 9444| 224694| 4095| 328098| 0.00| 0.00
% | 0.0| +5.3| +0.7| +4.5| 0| 0.0| 0| 0.0| 0| -24.4| +4.5| -37.5| +3.2| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 14626.43| 14.93| 980| 0| 32| 0| 1681| 0| 13| 877664| 877731| 902624| 0.00| 0.00
2 50| 64| 14639.95| 13.10| 1123| 0| 32| 0| 1681| 0| 13| 878475| 878538| 897278| 0.00| 0.00
% | 0.0| +0.1| -12.3| +14.6| 0| 0.0| 0| 0.0| 0| 0.0| +0.1| +0.1| -0.6| 0| 0
1 100| 64| 14697.50| 14.31| 1029| 0| 34| 0| 1830| 0| 13| 881930| 881991| 903837| 0.00| 0.00
2 100| 64| 14692.35| 13.08| 1128| 0| 34| 0| 1830| 0| 13| 881619| 881679| 898952| 0.00| 0.00
% | 0.0| -0.0| -8.6| +9.6| 0| 0.0| 0| 0.0| 0| 0.0| -0.0| -0.0| -0.5| 0| 0
1 250| 64| 14683.40| 14.34| 1027| 0| 32| 0| 1698| 0| 13| 881083| 881147| 903071| 0.00| 0.00
2 250| 64| 14677.06| 12.85| 1144| 0| 32| 0| 1698| 0| 13| 880702| 880762| 898190| 0.00| 0.00
% | 0.0| -0.0| -10.4| +11.4| 0| 0.0| 0| 0.0| 0| 0.0| -0.0| -0.0| -0.5| 0| 0
1 500| 64| 14698.45| 14.39| 1025| 0| 34| 0| 1830| 0| 13| 881985| 882060| 905537| 0.00| 0.00
2 500| 64| 14626.17| 13.54| 1083| 0| 34| 0| 1830| 0| 13| 877648| 877726| 896427| 0.00| 0.00
% | 0.0| -0.5| -5.9| +5.7| 0| 0.0| 0| 0.0| 0| 0.0| -0.5| -0.5| -1.0| 0| 0
1 50| 256| 14386.52| 14.14| 1018| 0| 33| 0| 1716| 0| 13| 863266| 863336| 887195| 0.00| 0.00
2 50| 256| 14359.26| 14.22| 1016| 0| 32| 0| 1681| 0| 13| 861630| 861698| 882444| 0.00| 0.00
% | 0.0| -0.2| +0.6| -0.2| 0| -3.0| 0| -2.0| 0| 0.0| -0.2| -0.2| -0.5| 0| 0
1 100| 256| 14364.89| 14.25| 1008| 0| 34| 0| 1813| 0| 13| 861969| 862033| 886679| 0.00| 0.00
2 100| 256| 14393.82| 14.53| 999| 0| 34| 0| 1813| 0| 13| 863704| 863765| 884487| 0.00| 0.00
% | 0.0| +0.2| +2.0| -0.9| 0| 0.0| 0| 0.0| 0| 0.0| +0.2| +0.2| -0.2| 0| 0
1 250| 256| 14387.95| 14.05| 1024| 0| 32| 0| 1681| 0| 13| 863352| 863429| 887505| 0.00| 0.00
2 250| 256| 14344.74| 14.62| 987| 0| 32| 0| 1698| 0| 13| 860760| 860843| 882154| 0.00| 0.00
% | 0.0| -0.3| +4.1| -3.6| 0| 0.0| 0| +1.0| 0| 0.0| -0.3| -0.3| -0.6| 0| 0
1 500| 256| 14365.89| 14.19| 1013| 0| 33| 0| 1769| 0| 13| 862029| 862099| 885852| 0.00| 0.00
2 500| 256| 14329.59| 14.62| 990| 0| 34| 0| 1830| 0| 13| 859852| 861233| 880082| 0.00| 0.00
% | 0.0| -0.3| +3.0| -2.3| 0| +3.0| 0| +3.4| 0| 0.0| -0.3| -0.1| -0.7| 0| 0
1 50| 512| 14273.07| 14.12| 1010| 0| 33| 0| 1742| 0| 13| 856460| 856524| 880356| 0.00| 0.00
2 50| 512| 14222.08| 14.72| 966| 0| 32| 0| 1698| 0| 12| 853398| 853468| 875621| 0.00| 0.00
% | 0.0| -0.4| +4.2| -4.4| 0| -3.0| 0| -2.5| 0| -7.7| -0.4| -0.4| -0.5| 0| 0
1 100| 512| 14236.34| 14.51| 982| 0| 34| 0| 1804| 0| 13| 854258| 854335| 876662| 0.00| 0.00
2 100| 512| 14147.89| 14.85| 953| 0| 34| 0| 1813| 0| 13| 848947| 849031| 871773| 0.00| 0.00
% | 0.0| -0.6| +2.3| -3.0| 0| 0.0| 0| +0.5| 0| 0.0| -0.6| -0.6| -0.6| 0| 0
1 250| 512| 14260.79| 14.53| 983| 0| 33| 0| 1760| 0| 13| 855721| 855791| 879099| 0.00| 0.00
2 250| 512| 14190.68| 14.87| 954| 0| 32| 0| 1698| 0| 13| 851517| 851580| 874119| 0.00| 0.00
% | 0.0| -0.5| +2.3| -3.0| 0| -3.0| 0| -3.5| 0| 0.0| -0.5| -0.5| -0.6| 0| 0
1 500| 512| 14273.71| 14.18| 1008| 0| 33| 0| 1769| 0| 13| 856499| 856562| 879984| 0.00| 0.00
2 500| 512| 14213.87| 14.72| 967| 0| 34| 0| 1830| 0| 13| 852907| 852976| 875328| 0.00| 0.00
% | 0.0| -0.4| +3.8| -4.1| 0| +3.0| 0| +3.4| 0| 0.0| -0.4| -0.4| -0.5| 0| 0
1 50| 1024| 14049.77| 13.89| 1024| 0| 32| 0| 1708| 0| 12| 843061| 843134| 863697| 0.00| 0.00
2 50| 1024| 13980.25| 14.38| 980| 0| 32| 0| 1698| 0| 12| 838890| 838973| 858350| 0.00| 0.00
% | 0.0| -0.5| +3.5| -4.3| 0| 0.0| 0| -0.6| 0| 0.0| -0.5| -0.5| -0.6| 0| 0
1 100| 1024| 14025.66| 13.32| 1066| 0| 33| 0| 1769| 0| 13| 841616| 841685| 864460| 0.00| 0.00
2 100| 1024| 13993.30| 14.82| 946| 0| 34| 0| 1830| 0| 12| 839676| 839735| 859288| 0.00| 0.00
% | 0.0| -0.2| +11.3| -11.3| 0| +3.0| 0| +3.4| 0| -7.7| -0.2| -0.2| -0.6| 0| 0
1 250| 1024| 14060.15| 13.90| 1023| 0| 35| 0| 1848| 0| 12| 843688| 843752| 864475| 0.00| 0.00
2 250| 1024| 13982.47| 15.34| 913| 0| 34| 0| 1830| 0| 12| 839026| 839089| 859914| 0.00| 0.00
% | 0.0| -0.6| +10.4| -10.8| 0| -2.9| 0| -1.0| 0| 0.0| -0.6| -0.6| -0.5| 0| 0
1 500| 1024| 14051.14| 13.80| 1024| 0| 33| 0| 1716| 0| 13| 843144| 843212| 862981| 0.00| 0.00
2 500| 1024| 14013.95| 15.27| 918| 0| 32| 0| 1681| 0| 13| 840915| 840983| 862635| 0.00| 0.00
% | 0.0| -0.3| +10.7| -10.4| 0| -3.0| 0| -2.0| 0| 0.0| -0.3| -0.3| -0.0| 0| 0
[-- Attachment #3: Type: text/plain, Size: 183 bytes --]
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:50 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 2:50 UTC (permalink / raw)
To: Rusty Russell
Cc: kvm, Michael S. Tsirkin, Benjamin Herrenschmidt, linux-kernel,
virtualization, rhod, linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 3122 bytes --]
On 19/12/11 10:19, Amos Kong wrote:
> On 12/12/11 13:12, Rusty Russell wrote:
>> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong<akong@redhat.com> wrote:
>>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>>
>>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>>> varies even as message size is constant.
>>>>>
>>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>>> regressed consistently, between 7 and 35%
>>>>>
>>>>> The "fix" applied was simply this:
>>>>
>>>> What machine& processor was this ?
>>>
>>> pined guest memory to numa node 1
>>
>> Please try this patch. How much does the branch cost us?
>>
>> (Compiles, untested).
>>
>> Thanks,
>> Rusty.
>>
>> From: Rusty Russell<rusty@rustcorp.com.au>
>> Subject: virtio: harsher barriers for virtio-mmio.
>>
>> We were cheating with our barriers; using the smp ones rather than the
>> real device ones. That was fine, until virtio-mmio came along, which
>> could be talking to a real device (a non-SMP CPU).
>>
>> Unfortunately, just putting back the real barriers (reverting
>> d57ed95d) causes a performance regression on virtio-pci. In
>> particular, Amos reports netbench's TCP_RR over virtio_net CPU
>> utilization increased up to 35% while throughput went down by up to
>> 14%.
>>
>> By comparison, this branch costs us???
>>
>> Reference: https://lkml.org/lkml/2011/12/11/22
>>
>> Signed-off-by: Rusty Russell<rusty@rustcorp.com.au>
>> ---
>> drivers/lguest/lguest_device.c | 10 ++++++----
>> drivers/s390/kvm/kvm_virtio.c | 2 +-
>> drivers/virtio/virtio_mmio.c | 7 ++++---
>> drivers/virtio/virtio_pci.c | 4 ++--
>> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
>> include/linux/virtio_ring.h | 1 +
>> tools/virtio/linux/virtio.h | 1 +
>> tools/virtio/virtio_test.c | 3 ++-
>> 8 files changed, 38 insertions(+), 24 deletions(-)
>
> Hi all,
>
> I tested with the same environment and scenarios.
> tested one scenarios for three times and compute the average for more
> precision.
>
> Thanks, Amos
>
> --------- compare results -----------
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.exhost_guest.txt
> 2 - avg-fixed.netperf.exhost_guest.txt
>
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts|
> #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit|
> #rpkt/#irq
> 1 1| 64| 1073.54| 10.50| 102| 0| 31| 0| 1612| 0| 16| 487641| 489753|
> 504764| 0.00| 0.00
> 2 1| 64| 1079.44| 10.29| 104| 0| 30| 0| 1594| 0| 17| 487156| 488828|
> 504411| 0.00| 0.00
> % | 0.0| +0.5| -2.0| +2.0| 0| -3.2| 0| -1.1| 0| +6.2| -0.1| -0.2| -0.1|
The format is broken in webpage, attached the result file.
it's also available here: http://amosk.info/download/rusty-fix-perf.txt
[-- Attachment #2: rusty-fix-perf.txt --]
[-- Type: text/plain, Size: 42872 bytes --]
--------- compare results -----------
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.exhost_guest.txt
2 - avg-fixed.netperf.exhost_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1073.54| 10.50| 102| 0| 31| 0| 1612| 0| 16| 487641| 489753| 504764| 0.00| 0.00
2 1| 64| 1079.44| 10.29| 104| 0| 30| 0| 1594| 0| 17| 487156| 488828| 504411| 0.00| 0.00
% | 0.0| +0.5| -2.0| +2.0| 0| -3.2| 0| -1.1| 0| +6.2| -0.1| -0.2| -0.1| 0| 0
1 2| 64| 2141.12| 15.72| 136| 0| 33| 0| 1744| 0| 34| 873777| 972303| 928926| 0.00| 0.00
2 2| 64| 2140.88| 15.64| 137| 0| 33| 0| 1744| 0| 34| 926588| 942841| 974095| 0.00| 0.00
% | 0.0| -0.0| -0.5| +0.7| 0| 0.0| 0| 0.0| 0| 0.0| +6.0| -3.0| +4.9| 0| 0
1 4| 64| 4076.80| 19.82| 205| 0| 30| 0| 1577| 0| 67| 1422282| 1166425| 1539219| 0.00| 0.00
2 4| 64| 4094.32| 20.70| 197| 0| 31| 0| 1612| 0| 68| 1704330| 1314077| 1833394| 0.00| 0.00
% | 0.0| +0.4| +4.4| -3.9| 0| +3.3| 0| +2.2| 0| +1.5| +19.8| +12.7| +19.1| 0| 0
1 1| 256| 2867.48| 13.44| 213| 0| 32| 0| 1726| 0| 14| 666430| 694922| 690730| 0.00| 0.00
2 1| 256| 2874.20| 12.71| 226| 0| 32| 0| 1709| 0| 14| 697960| 740407| 721807| 0.00| 0.00
% | 0.0| +0.2| -5.4| +6.1| 0| 0.0| 0| -1.0| 0| 0.0| +4.7| +6.5| +4.5| 0| 0
1 2| 256| 5642.82| 17.61| 320| 0| 30| 0| 1594| 0| 30| 1226861| 1236081| 1268562| 0.00| 0.00
2 2| 256| 5661.06| 17.41| 326| 0| 30| 0| 1594| 0| 29| 1175696| 1143490| 1221528| 0.00| 0.00
% | 0.0| +0.3| -1.1| +1.9| 0| 0.0| 0| 0.0| 0| -3.3| -4.2| -7.5| -3.7| 0| 0
1 4| 256| 9404.27| 23.55| 399| 0| 33| 0| 1744| 0| 37| 1692245| 659975| 1765103| 0.00| 0.00
2 4| 256| 8761.11| 23.18| 376| 0| 32| 0| 1726| 0| 36| 1699382| 418992| 1870804| 0.00| 0.00
% | 0.0| -6.8| -1.6| -5.8| 0| -3.0| 0| -1.0| 0| -2.7| +0.4| -36.5| +6.0| 0| 0
1 1| 512| 3803.66| 14.20| 267| 0| 30| 0| 1594| 0| 14| 693992| 750078| 721107| 0.00| 0.00
2 1| 512| 3838.02| 15.47| 248| 0| 31| 0| 1612| 0| 15| 811709| 773505| 838788| 0.00| 0.00
% | 0.0| +0.9| +8.9| -7.1| 0| +3.3| 0| +1.1| 0| +7.1| +17.0| +3.1| +16.3| 0| 0
1 2| 512| 8606.11| 19.34| 444| 0| 32| 0| 1709| 0| 29| 1264624| 647652| 1309740| 0.00| 0.00
2 2| 512| 8127.80| 18.93| 428| 0| 32| 0| 1726| 0| 28| 1216606| 1179269| 1266260| 0.00| 0.00
% | 0.0| -5.6| -2.1| -3.6| 0| 0.0| 0| +1.0| 0| -3.4| -3.8| +82.1| -3.3| 0| 0
1 4| 512| 9409.41| 22.88| 413| 0| 30| 0| 1577| 0| 35| 1592587| 1072862| 1746787| 0.00| 0.00
2 4| 512| 9217.34| 23.05| 400| 0| 30| 0| 1594| 0| 34| 1596515| 513742| 1831538| 0.00| 0.00
% | 0.0| -2.0| +0.7| -3.1| 0| 0.0| 0| +1.1| 0| -2.9| +0.2| -52.1| +4.9| 0| 0
1 1| 1024| 4389.75| 14.62| 303| 0| 32| 0| 1726| 0| 14| 663417| 611555| 689028| 0.00| 0.00
2 1| 1024| 4390.44| 13.66| 321| 0| 32| 0| 1726| 0| 13| 609836| 556090| 634511| 0.00| 0.00
% | 0.0| +0.0| -6.6| +5.9| 0| 0.0| 0| 0.0| 0| -7.1| -8.1| -9.1| -7.9| 0| 0
1 2| 1024| 9046.18| 19.63| 460| 0| 30| 0| 1594| 0| 28| 1206853| 1054653| 1256203| 0.00| 0.00
2 2| 1024| 9027.54| 20.15| 447| 0| 30| 0| 1577| 0| 27| 1179555| 884408| 1226843| 0.00| 0.00
% | 0.0| -0.2| +2.6| -2.8| 0| 0.0| 0| -1.1| 0| -3.6| -2.3| -16.1| -2.3| 0| 0
1 4| 1024| 9410.41| 22.01| 427| 0| 32| 0| 1726| 0| 36| 1734433| 887190| 1852486| 0.00| 0.00
2 4| 1024| 9409.11| 23.18| 405| 0| 32| 0| 1726| 0| 34| 1695359| 625268| 1803599| 0.00| 0.00
% | 0.0| -0.0| +5.3| -5.2| 0| 0.0| 0| 0.0| 0| -5.6| -2.3| -29.5| -2.6| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 1056.13| 17.51| 59| 0| 30| 0| 1594| 3| 86| 476098| 4780186| 538158| 0.00| 0.00
2 1| 64| 1065.51| 17.64| 60| 0| 30| 0| 1594| 3| 87| 476836| 4823602| 538860| 0.00| 0.00
% | 0.0| +0.9| +0.7| +1.7| 0| 0.0| 0| 0.0| 0.0| +1.2| +0.2| +0.9| +0.1| 0| 0
1 2| 64| 2472.80| 32.18| 76| 0| 32| 0| 1709| 2| 199| 479119| 2089931| 600119| 0.00| 0.00
2 2| 64| 2468.76| 32.28| 76| 0| 33| 0| 1744| 1| 199| 479372| 2179342| 600328| 0.00| 0.00
% | 0.0| -0.2| +0.3| 0.0| 0| +3.1| 0| +2.0| -50.0| 0.0| +0.1| +4.3| +0.0| 0| 0
1 4| 64| 2453.22| 32.20| 75| 0| 31| 0| 1612| 2| 198| 479223| 2175801| 600081| 0.00| 0.00
2 4| 64| 2465.68| 32.30| 76| 0| 30| 0| 1594| 3| 200| 479404| 2108293| 600252| 0.00| 0.00
% | 0.0| +0.5| +0.3| +1.3| 0| -3.2| 0| -1.1| +50.0| +1.0| +0.0| -3.1| +0.0| 0| 0
1 1| 256| 3608.37| 24.59| 146| 0| 32| 0| 1726| 2| 277| 88346| 108310| 150637| 0.00| 0.00
2 1| 256| 3611.12| 24.95| 144| 0| 32| 0| 1709| 0| 281| 83319| 64354| 145511| 0.00| 0.00
% | 0.0| +0.1| +1.5| -1.4| 0| 0.0| 0| -1.0| -100.0| +1.4| -5.7| -40.6| -3.4| 0| 0
1 2| 256| 7373.32| 26.83| 274| 0| 31| 0| 1612| 0| 4185| 278932| 264031| 377267| 0.00| 0.00
2 2| 256| 7460.03| 26.93| 276| 0| 30| 0| 1594| 1| 5913| 270840| 246165| 371999| 0.00| 0.00
% | 0.0| +1.2| +0.4| +0.7| 0| -3.2| 0| -1.1| 0| +41.3| -2.9| -6.8| -1.4| 0| 0
1 4| 256| 9322.66| 29.73| 313| 0| 32| 0| 1709| 848| 3041| 363114| 329308| 482586| 0.00| 0.00
2 4| 256| 9365.52| 29.59| 316| 0| 33| 0| 1744| 414| 2884| 371485| 339191| 491366| 0.00| 0.00
% | 0.0| +0.5| -0.5| +1.0| 0| +3.1| 0| +2.0| -51.2| -5.2| +2.3| +3.0| +1.8| 0| 0
1 1| 512| 9360.25| 17.20| 543| 0| 30| 0| 1577| 0| 387| 438621| 408062| 499989| 0.00| 0.00
2 1| 512| 8899.37| 18.17| 495| 0| 30| 0| 1594| 0| 5049| 393341| 371545| 459397| 0.00| 0.00
% | 0.0| -4.9| +5.6| -8.8| 0| 0.0| 0| +1.1| 0| +1204.7| -10.3| -8.9| -8.1| 0| 0
1 2| 512| 8713.11| 20.77| 420| 0| 32| 0| 1726| 0| 11227| 296157| 246495| 371632| 0.00| 0.00
2 2| 512| 8686.31| 20.72| 421| 0| 32| 0| 1709| 0| 11002| 296608| 246597| 371797| 0.00| 0.00
% | 0.0| -0.3| -0.2| +0.2| 0| 0.0| 0| -1.0| 0| -2.0| +0.2| +0.0| +0.0| 0| 0
1 4| 512| 8780.40| 22.72| 386| 0| 30| 0| 1594| 0| 10337| 303619| 249822| 385457| 0.00| 0.00
2 4| 512| 8858.51| 22.66| 390| 0| 30| 0| 1577| 0| 9968| 301847| 246543| 382121| 0.00| 0.00
% | 0.0| +0.9| -0.3| +1.0| 0| 0.0| 0| -1.1| 0| -3.6| -0.6| -1.3| -0.9| 0| 0
1 1| 1024| 9387.09| 16.43| 571| 0| 32| 0| 1726| 0| 84| 452351| 429483| 504022| 0.00| 0.00
2 1| 1024| 9388.90| 16.51| 568| 0| 32| 0| 1726| 2| 76| 446994| 422489| 499025| 0.00| 0.00
% | 0.0| +0.0| +0.5| -0.5| 0| 0.0| 0| 0.0| 0| -9.5| -1.2| -1.6| -1.0| 0| 0
1 2| 1024| 9361.43| 17.26| 542| 0| 30| 0| 1594| 5| 647| 388626| 358303| 442125| 0.00| 0.00
2 2| 1024| 9364.78| 17.25| 542| 0| 31| 0| 1612| 35| 554| 389326| 360169| 442343| 0.00| 0.00
% | 0.0| +0.0| -0.1| 0.0| 0| +3.3| 0| +1.1| +600.0| -14.4| +0.2| +0.5| +0.0| 0| 0
1 4| 1024| 9381.57| 18.35| 510| 0| 32| 0| 1726| 1189| 648| 405900| 376269| 459845| 0.00| 0.00
2 4| 1024| 9393.48| 18.27| 513| 0| 32| 0| 1726| 1754| 610| 402132| 373768| 455629| 0.00| 0.00
% | 0.0| +0.1| -0.4| +0.6| 0| 0.0| 0| 0.0| +47.5| -5.9| -0.9| -0.7| -0.9| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 10903.70| 8.03| 1382| 0| 32| 0| 1698| 0| 9| 654298| 654362| 665532| 0.00| 0.00
2 50| 64| 10880.50| 7.40| 1488| 0| 32| 0| 1698| 0| 10| 652907| 652973| 667042| 0.00| 0.00
% | 0.0| -0.2| -7.8| +7.7| 0| 0.0| 0| 0.0| 0| +11.1| -0.2| -0.2| +0.2| 0| 0
1 100| 64| 10953.00| 8.40| 1332| 0| 34| 0| 1830| 0| 10| 657257| 657325| 667088| 0.00| 0.00
2 100| 64| 10882.78| 7.67| 1439| 0| 34| 0| 1830| 0| 9| 653044| 653110| 668883| 0.00| 0.00
% | 0.0| -0.6| -8.7| +8.0| 0| 0.0| 0| 0.0| 0| -10.0| -0.6| -0.6| +0.3| 0| 0
1 250| 64| 10902.66| 8.57| 1300| 0| 33| 0| 1716| 0| 10| 654235| 654308| 665518| 0.00| 0.00
2 250| 64| 10866.79| 7.58| 1449| 0| 32| 0| 1664| 0| 10| 652083| 652155| 666869| 0.00| 0.00
% | 0.0| -0.3| -11.6| +11.5| 0| -3.0| 0| -3.0| 0| 0.0| -0.3| -0.3| +0.2| 0| 0
1 500| 64| 10924.34| 7.25| 1509| 0| 34| 0| 1830| 0| 10| 655536| 655619| 665776| 0.00| 0.00
2 500| 64| 10927.52| 6.50| 1684| 0| 34| 0| 1813| 0| 10| 655726| 655803| 668527| 0.00| 0.00
% | 0.0| +0.0| -10.3| +11.6| 0| 0.0| 0| -0.9| 0| 0.0| +0.0| +0.0| +0.4| 0| 0
1 50| 256| 10407.35| 9.38| 1112| 0| 32| 0| 1681| 0| 9| 624516| 624581| 639159| 0.00| 0.00
2 50| 256| 10422.60| 9.45| 1108| 0| 33| 0| 1716| 0| 9| 625432| 625498| 641343| 0.00| 0.00
% | 0.0| +0.1| +0.7| -0.4| 0| +3.1| 0| +2.1| 0| 0.0| +0.1| +0.1| +0.3| 0| 0
1 100| 256| 10404.30| 8.99| 1159| 0| 34| 0| 1830| 0| 9| 624335| 624400| 637357| 0.00| 0.00
2 100| 256| 10442.84| 9.57| 1093| 0| 35| 0| 1848| 0| 9| 626650| 626714| 639017| 0.00| 0.00
% | 0.0| +0.4| +6.5| -5.7| 0| +2.9| 0| +1.0| 0| 0.0| +0.4| +0.4| +0.3| 0| 0
1 250| 256| 10427.71| 9.10| 1157| 0| 32| 0| 1698| 0| 9| 625738| 625822| 641221| 0.00| 0.00
2 250| 256| 10464.71| 9.69| 1085| 0| 32| 0| 1698| 0| 9| 627960| 628040| 640680| 0.00| 0.00
% | 0.0| +0.4| +6.5| -6.2| 0| 0.0| 0| 0.0| 0| 0.0| +0.4| +0.4| -0.1| 0| 0
1 500| 256| 10442.18| 8.65| 1217| 0| 34| 0| 1830| 0| 10| 626608| 626675| 640081| 0.00| 0.00
2 500| 256| 10463.74| 9.63| 1089| 0| 34| 0| 1813| 0| 9| 627904| 627967| 643152| 0.00| 0.00
% | 0.0| +0.2| +11.3| -10.5| 0| 0.0| 0| -0.9| 0| -10.0| +0.2| +0.2| +0.5| 0| 0
1 50| 512| 8505.70| 7.20| 1191| 0| 33| 0| 1716| 0| 7| 510418| 510486| 524904| 0.00| 0.00
2 50| 512| 8563.34| 7.24| 1185| 0| 32| 0| 1664| 0| 8| 513877| 513940| 526294| 0.00| 0.00
% | 0.0| +0.7| +0.6| -0.5| 0| -3.0| 0| -3.0| 0| +14.3| +0.7| +0.7| +0.3| 0| 0
1 100| 512| 8509.97| 7.00| 1226| 0| 34| 0| 1830| 0| 7| 510674| 510756| 525205| 0.00| 0.00
2 100| 512| 8555.22| 7.52| 1144| 0| 34| 0| 1830| 0| 7| 513389| 513471| 526609| 0.00| 0.00
% | 0.0| +0.5| +7.4| -6.7| 0| 0.0| 0| 0.0| 0| 0.0| +0.5| +0.5| +0.3| 0| 0
1 250| 512| 8507.35| 7.21| 1183| 0| 32| 0| 1681| 0| 7| 510518| 510579| 524294| 0.00| 0.00
2 250| 512| 8578.13| 7.01| 1223| 0| 33| 0| 1716| 0| 8| 514765| 514829| 526481| 0.00| 0.00
% | 0.0| +0.8| -2.8| +3.4| 0| +3.1| 0| +2.1| 0| +14.3| +0.8| +0.8| +0.4| 0| 0
1 500| 512| 8521.68| 6.54| 1302| 0| 34| 0| 1813| 0| 8| 511375| 511443| 523357| 0.00| 0.00
2 500| 512| 8573.17| 6.94| 1235| 0| 34| 0| 1830| 0| 7| 514467| 514533| 526131| 0.00| 0.00
% | 0.0| +0.6| +6.1| -5.1| 0| 0.0| 0| +0.9| 0| -12.5| +0.6| +0.6| +0.5| 0| 0
1 50| 1024| 8150.01| 7.69| 1060| 0| 32| 0| 1681| 0| 7| 489075| 489155| 503136| 0.00| 0.00
2 50| 1024| 8129.35| 7.65| 1062| 0| 34| 0| 1804| 0| 7| 487841| 487915| 502061| 0.00| 0.00
% | 0.0| -0.3| -0.5| +0.2| 0| +6.2| 0| +7.3| 0| 0.0| -0.3| -0.3| -0.2| 0| 0
1 100| 1024| 8166.06| 7.53| 1083| 0| 34| 0| 1804| 0| 7| 490039| 490104| 502990| 0.00| 0.00
2 100| 1024| 8118.23| 7.77| 1044| 0| 33| 0| 1725| 0| 7| 487171| 487236| 501939| 0.00| 0.00
% | 0.0| -0.6| +3.2| -3.6| 0| -2.9| 0| -4.4| 0| 0.0| -0.6| -0.6| -0.2| 0| 0
1 250| 1024| 8175.35| 7.58| 1079| 0| 35| 0| 1848| 0| 7| 490597| 490657| 503641| 0.00| 0.00
2 250| 1024| 8146.63| 7.59| 1072| 0| 34| 0| 1813| 0| 7| 488874| 488939| 502010| 0.00| 0.00
% | 0.0| -0.4| +0.1| -0.6| 0| -2.9| 0| -1.9| 0| 0.0| -0.4| -0.4| -0.3| 0| 0
1 500| 1024| 8182.51| 7.61| 1075| 0| 32| 0| 1698| 0| 7| 491028| 491095| 504222| 0.00| 0.00
2 500| 1024| 8157.39| 7.58| 1075| 0| 33| 0| 1716| 0| 7| 489521| 489593| 502368| 0.00| 0.00
% | 0.0| -0.3| -0.4| 0.0| 0| +3.1| 0| +1.1| 0| 0.0| -0.3| -0.3| -0.4| 0| 0
Mon Dec 19 09:51:09 2011
1 - avg-old.netperf.host_guest.txt
2 - avg-fixed.netperf.host_guest.txt
======
TCP_STREAM
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 715.76| 28.44| 24| 0| 31| 0| 1629| 0| 36| 3206862| 1733540| 3245171| 0.00| 0.00
2 1| 64| 714.82| 28.44| 25| 0| 31| 0| 1612| 0| 36| 3204256| 1709508| 3242450| 0.00| 0.00
% | 0.0| -0.1| 0.0| +4.2| 0| 0.0| 0| -1.0| 0| 0.0| -0.1| -1.4| -0.1| 0| 0
1 2| 64| 1449.31| 41.23| 35| 0| 33| 0| 1744| 0| 66| 2764635| 1667527| 2815591| 0.00| 0.00
2 2| 64| 1442.92| 41.32| 34| 0| 32| 0| 1709| 0| 66| 2751461| 1659498| 2799277| 0.00| 0.00
% | 0.0| -0.4| +0.2| -2.9| 0| -3.0| 0| -2.0| 0| 0.0| -0.5| -0.5| -0.6| 0| 0
1 4| 64| 2671.25| 48.95| 54| 0| 30| 0| 1577| 0| 47| 914085| 289771| 947054| 0.00| 0.00
2 4| 64| 2652.68| 48.20| 54| 0| 30| 0| 1594| 0| 46| 882300| 293273| 914249| 0.00| 0.00
% | 0.0| -0.7| -1.5| 0.0| 0| 0.0| 0| +1.1| 0| -2.1| -3.5| +1.2| -3.5| 0| 0
1 1| 256| 1478.61| 29.34| 50| 0| 32| 0| 1709| 0| 64| 3502384| 1541681| 3545371| 0.00| 0.00
2 1| 256| 1481.38| 29.27| 50| 0| 32| 0| 1726| 0| 64| 3485623| 1526105| 3528343| 0.00| 0.00
% | 0.0| +0.2| -0.2| 0.0| 0| 0.0| 0| +1.0| 0| 0.0| -0.5| -1.0| -0.5| 0| 0
1 2| 256| 3095.93| 42.31| 72| 0| 31| 0| 1612| 0| 123| 1521019| 466426| 1637722| 0.00| 0.00
2 2| 256| 3098.16| 42.03| 73| 0| 30| 0| 1594| 0| 123| 1519458| 472632| 1632462| 0.00| 0.00
% | 0.0| +0.1| -0.7| +1.4| 0| -3.2| 0| -1.1| 0| 0.0| -0.1| +1.3| -0.3| 0| 0
1 4| 256| 6553.60| 38.44| 170| 0| 33| 0| 1761| 0| 38| 1343193| 237604| 1402385| 0.00| 0.00
2 4| 256| 6649.37| 38.34| 172| 0| 32| 0| 1726| 0| 32| 1343770| 236320| 1400875| 0.00| 0.00
% | 0.0| +1.5| -0.3| +1.2| 0| -3.0| 0| -2.0| 0| -15.8| +0.0| -0.5| -0.1| 0| 0
1 1| 512| 1818.40| 29.28| 61| 0| 31| 0| 1646| 0| 76| 3326887| 1491961| 3371189| 0.00| 0.00
2 1| 512| 1822.74| 29.45| 61| 0| 30| 0| 1577| 0| 76| 3309934| 1470715| 3352921| 0.00| 0.00
% | 0.0| +0.2| +0.6| 0.0| 0| -3.2| 0| -4.2| 0| 0.0| -0.5| -1.4| -0.5| 0| 0
1 2| 512| 3931.72| 43.51| 89| 0| 33| 0| 1761| 0| 137| 1148331| 301194| 1270351| 0.00| 0.00
2 2| 512| 3926.16| 43.45| 90| 0| 32| 0| 1726| 0| 135| 1166280| 306110| 1288869| 0.00| 0.00
% | 0.0| -0.1| -0.1| +1.1| 0| -3.0| 0| -2.0| 0| -1.5| +1.6| +1.6| +1.5| 0| 0
1 4| 512| 8634.49| 40.69| 211| 0| 31| 0| 1612| 0| 53| 1869998| 353856| 1948593| 0.00| 0.00
2 4| 512| 9137.12| 40.77| 223| 0| 30| 0| 1594| 0| 48| 1879574| 362851| 1959044| 0.00| 0.00
% | 0.0| +5.8| +0.2| +5.7| 0| -3.2| 0| -1.1| 0| -9.4| +0.5| +2.5| +0.5| 0| 0
1 1| 1024| 2042.67| 29.50| 68| 0| 33| 0| 1778| 0| 84| 3087032| 1309160| 3130736| 0.00| 0.00
2 1| 1024| 2033.24| 29.51| 68| 0| 32| 0| 1726| 0| 83| 3082898| 1295936| 3125229| 0.00| 0.00
% | 0.0| -0.5| +0.0| 0.0| 0| -3.0| 0| -2.9| 0| -1.2| -0.1| -1.0| -0.2| 0| 0
1 2| 1024| 7703.26| 39.58| 194| 0| 32| 0| 1673| 0| 65| 2522172| 663302| 2684835| 0.00| 0.00
2 2| 1024| 7657.00| 39.27| 194| 0| 30| 0| 1594| 0| 62| 2607281| 698035| 2755198| 0.00| 0.00
% | 0.0| -0.6| -0.8| 0.0| 0| -6.2| 0| -4.7| 0| -4.6| +3.4| +5.2| +2.6| 0| 0
1 4| 1024| 11814.84| 39.38| 299| 0| 32| 0| 1700| 0| 28| 2510318| 576071| 2596631| 0.00| 0.00
2 4| 1024| 12871.76| 38.93| 330| 0| 32| 0| 1726| 0| 25| 2232437| 632785| 2316035| 0.00| 0.00
% | 0.0| +8.9| -1.1| +10.4| 0| 0.0| 0| +1.5| 0| -10.7| -11.1| +9.8| -10.8| 0| 0
TCP_MAERTS
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 1| 64| 706.98| 26.25| 26| 0| 31| 0| 1656| 0| 80| 2630204| 4185330| 2692397| 0.00| 0.00
2 1| 64| 767.45| 27.78| 27| 0| 30| 0| 1594| 0| 85| 2626694| 4317273| 2688799| 0.00| 0.00
% | 0.0| +8.6| +5.8| +3.8| 0| -3.2| 0| -3.7| 0| +6.2| -0.1| +3.2| -0.1| 0| 0
1 2| 64| 2644.57| 42.60| 61| 0| 32| 0| 1700| 0| 34863| 49057| 16791| 204805| 0.00| 0.00
2 2| 64| 2721.19| 42.69| 63| 0| 32| 0| 1709| 0| 42365| 52739| 20094| 215895| 0.00| 0.00
% | 0.0| +2.9| +0.2| +3.3| 0| 0.0| 0| +0.5| 0| +21.5| +7.5| +19.7| +5.4| 0| 0
1 4| 64| 2756.40| 42.69| 64| 0| 32| 0| 1708| 0| 52043| 47976| 12694| 220732| 0.00| 0.00
2 4| 64| 2709.19| 42.79| 62| 0| 30| 0| 1594| 0| 50144| 47275| 12743| 218074| 0.00| 0.00
% | 0.0| -1.7| +0.2| -3.1| 0| -6.2| 0| -6.7| 0| -3.6| -1.5| +0.4| -1.2| 0| 0
1 1| 256| 3785.63| 32.34| 116| 0| 33| 0| 1734| 0| 36642| 58940| 1187| 157652| 0.00| 0.00
2 1| 256| 3593.17| 32.90| 108| 0| 32| 0| 1726| 0| 33179| 54980| 1130| 150168| 0.00| 0.00
% | 0.0| -5.1| +1.7| -6.9| 0| -3.0| 0| -0.5| 0| -9.5| -6.7| -4.8| -4.7| 0| 0
1 2| 256| 8316.26| 40.45| 205| 0| 32| 0| 1673| 0| 28302| 114835| 1655| 251137| 0.00| 0.00
2 2| 256| 8390.41| 41.17| 203| 0| 30| 0| 1594| 0| 31222| 115372| 1696| 257151| 0.00| 0.00
% | 0.0| +0.9| +1.8| -1.0| 0| -6.2| 0| -4.7| 0| +10.3| +0.5| +2.5| +2.4| 0| 0
1 4| 256| 9672.49| 42.40| 227| 0| 33| 0| 1761| 0| 30045| 132027| 3059| 283491| 0.00| 0.00
2 4| 256| 9741.71| 42.57| 228| 0| 32| 0| 1726| 6| 28875| 132125| 1999| 283036| 0.00| 0.00
% | 0.0| +0.7| +0.4| +0.4| 0| -3.0| 0| -2.0| 0| -3.9| +0.1| -34.7| -0.2| 0| 0
1 1| 512| 6052.41| 32.23| 187| 0| 31| 0| 1612| 0| 44681| 86084| 2592| 187465| 0.00| 0.00
2 1| 512| 6267.37| 32.51| 192| 0| 30| 0| 1577| 0| 45278| 88449| 2708| 191374| 0.00| 0.00
% | 0.0| +3.6| +0.9| +2.7| 0| -3.2| 0| -2.2| 0| +1.3| +2.7| +4.5| +2.1| 0| 0
1 2| 512| 12714.52| 38.27| 331| 0| 33| 0| 1744| 0| 24843| 169170| 2381| 292210| 0.00| 0.00
2 2| 512| 11341.65| 37.30| 303| 0| 32| 0| 1726| 14| 27393| 152465| 2980| 270740| 0.00| 0.00
% | 0.0| -10.8| -2.5| -8.5| 0| -3.0| 0| -1.0| 0| +10.3| -9.9| +25.2| -7.3| 0| 0
1 4| 512| 16127.03| 40.80| 394| 0| 31| 0| 1612| 0| 15063| 210628| 2234| 344124| 0.00| 0.00
2 4| 512| 14709.72| 39.94| 367| 0| 31| 0| 1612| 0| 17823| 193670| 4457| 324744| 0.00| 0.00
% | 0.0| -8.8| -2.1| -6.9| 0| 0.0| 0| 0.0| 0| +18.3| -8.1| +99.5| -5.6| 0| 0
1 1| 1024| 6436.88| 30.31| 212| 0| 33| 0| 1778| 0| 47820| 83940| 2007| 172847| 0.00| 0.00
2 1| 1024| 6495.48| 30.51| 212| 0| 32| 0| 1726| 0| 47771| 85436| 2038| 175027| 0.00| 0.00
% | 0.0| +0.9| +0.7| 0.0| 0| -3.0| 0| -2.9| 0| -0.1| +1.8| +1.5| +1.3| 0| 0
1 2| 1024| 12245.34| 33.44| 365| 0| 31| 0| 1629| 0| 26499| 162142| 2909| 255717| 0.00| 0.00
2 2| 1024| 12913.57| 33.93| 380| 0| 31| 0| 1612| 0| 24196| 171386| 3671| 266270| 0.00| 0.00
% | 0.0| +5.5| +1.5| +4.1| 0| 0.0| 0| -1.0| 0| -8.7| +5.7| +26.2| +4.1| 0| 0
1 4| 1024| 16428.48| 34.81| 471| 0| 32| 0| 1709| 0| 12496| 215031| 6557| 318039| 0.00| 0.00
2 4| 1024| 17294.33| 35.05| 492| 0| 32| 0| 1709| 0| 9444| 224694| 4095| 328098| 0.00| 0.00
% | 0.0| +5.3| +0.7| +4.5| 0| 0.0| 0| 0.0| 0| -24.4| +4.5| -37.5| +3.2| 0| 0
TCP_RR
sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts| #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit| #rpkt/#irq
1 50| 64| 14626.43| 14.93| 980| 0| 32| 0| 1681| 0| 13| 877664| 877731| 902624| 0.00| 0.00
2 50| 64| 14639.95| 13.10| 1123| 0| 32| 0| 1681| 0| 13| 878475| 878538| 897278| 0.00| 0.00
% | 0.0| +0.1| -12.3| +14.6| 0| 0.0| 0| 0.0| 0| 0.0| +0.1| +0.1| -0.6| 0| 0
1 100| 64| 14697.50| 14.31| 1029| 0| 34| 0| 1830| 0| 13| 881930| 881991| 903837| 0.00| 0.00
2 100| 64| 14692.35| 13.08| 1128| 0| 34| 0| 1830| 0| 13| 881619| 881679| 898952| 0.00| 0.00
% | 0.0| -0.0| -8.6| +9.6| 0| 0.0| 0| 0.0| 0| 0.0| -0.0| -0.0| -0.5| 0| 0
1 250| 64| 14683.40| 14.34| 1027| 0| 32| 0| 1698| 0| 13| 881083| 881147| 903071| 0.00| 0.00
2 250| 64| 14677.06| 12.85| 1144| 0| 32| 0| 1698| 0| 13| 880702| 880762| 898190| 0.00| 0.00
% | 0.0| -0.0| -10.4| +11.4| 0| 0.0| 0| 0.0| 0| 0.0| -0.0| -0.0| -0.5| 0| 0
1 500| 64| 14698.45| 14.39| 1025| 0| 34| 0| 1830| 0| 13| 881985| 882060| 905537| 0.00| 0.00
2 500| 64| 14626.17| 13.54| 1083| 0| 34| 0| 1830| 0| 13| 877648| 877726| 896427| 0.00| 0.00
% | 0.0| -0.5| -5.9| +5.7| 0| 0.0| 0| 0.0| 0| 0.0| -0.5| -0.5| -1.0| 0| 0
1 50| 256| 14386.52| 14.14| 1018| 0| 33| 0| 1716| 0| 13| 863266| 863336| 887195| 0.00| 0.00
2 50| 256| 14359.26| 14.22| 1016| 0| 32| 0| 1681| 0| 13| 861630| 861698| 882444| 0.00| 0.00
% | 0.0| -0.2| +0.6| -0.2| 0| -3.0| 0| -2.0| 0| 0.0| -0.2| -0.2| -0.5| 0| 0
1 100| 256| 14364.89| 14.25| 1008| 0| 34| 0| 1813| 0| 13| 861969| 862033| 886679| 0.00| 0.00
2 100| 256| 14393.82| 14.53| 999| 0| 34| 0| 1813| 0| 13| 863704| 863765| 884487| 0.00| 0.00
% | 0.0| +0.2| +2.0| -0.9| 0| 0.0| 0| 0.0| 0| 0.0| +0.2| +0.2| -0.2| 0| 0
1 250| 256| 14387.95| 14.05| 1024| 0| 32| 0| 1681| 0| 13| 863352| 863429| 887505| 0.00| 0.00
2 250| 256| 14344.74| 14.62| 987| 0| 32| 0| 1698| 0| 13| 860760| 860843| 882154| 0.00| 0.00
% | 0.0| -0.3| +4.1| -3.6| 0| 0.0| 0| +1.0| 0| 0.0| -0.3| -0.3| -0.6| 0| 0
1 500| 256| 14365.89| 14.19| 1013| 0| 33| 0| 1769| 0| 13| 862029| 862099| 885852| 0.00| 0.00
2 500| 256| 14329.59| 14.62| 990| 0| 34| 0| 1830| 0| 13| 859852| 861233| 880082| 0.00| 0.00
% | 0.0| -0.3| +3.0| -2.3| 0| +3.0| 0| +3.4| 0| 0.0| -0.3| -0.1| -0.7| 0| 0
1 50| 512| 14273.07| 14.12| 1010| 0| 33| 0| 1742| 0| 13| 856460| 856524| 880356| 0.00| 0.00
2 50| 512| 14222.08| 14.72| 966| 0| 32| 0| 1698| 0| 12| 853398| 853468| 875621| 0.00| 0.00
% | 0.0| -0.4| +4.2| -4.4| 0| -3.0| 0| -2.5| 0| -7.7| -0.4| -0.4| -0.5| 0| 0
1 100| 512| 14236.34| 14.51| 982| 0| 34| 0| 1804| 0| 13| 854258| 854335| 876662| 0.00| 0.00
2 100| 512| 14147.89| 14.85| 953| 0| 34| 0| 1813| 0| 13| 848947| 849031| 871773| 0.00| 0.00
% | 0.0| -0.6| +2.3| -3.0| 0| 0.0| 0| +0.5| 0| 0.0| -0.6| -0.6| -0.6| 0| 0
1 250| 512| 14260.79| 14.53| 983| 0| 33| 0| 1760| 0| 13| 855721| 855791| 879099| 0.00| 0.00
2 250| 512| 14190.68| 14.87| 954| 0| 32| 0| 1698| 0| 13| 851517| 851580| 874119| 0.00| 0.00
% | 0.0| -0.5| +2.3| -3.0| 0| -3.0| 0| -3.5| 0| 0.0| -0.5| -0.5| -0.6| 0| 0
1 500| 512| 14273.71| 14.18| 1008| 0| 33| 0| 1769| 0| 13| 856499| 856562| 879984| 0.00| 0.00
2 500| 512| 14213.87| 14.72| 967| 0| 34| 0| 1830| 0| 13| 852907| 852976| 875328| 0.00| 0.00
% | 0.0| -0.4| +3.8| -4.1| 0| +3.0| 0| +3.4| 0| 0.0| -0.4| -0.4| -0.5| 0| 0
1 50| 1024| 14049.77| 13.89| 1024| 0| 32| 0| 1708| 0| 12| 843061| 843134| 863697| 0.00| 0.00
2 50| 1024| 13980.25| 14.38| 980| 0| 32| 0| 1698| 0| 12| 838890| 838973| 858350| 0.00| 0.00
% | 0.0| -0.5| +3.5| -4.3| 0| 0.0| 0| -0.6| 0| 0.0| -0.5| -0.5| -0.6| 0| 0
1 100| 1024| 14025.66| 13.32| 1066| 0| 33| 0| 1769| 0| 13| 841616| 841685| 864460| 0.00| 0.00
2 100| 1024| 13993.30| 14.82| 946| 0| 34| 0| 1830| 0| 12| 839676| 839735| 859288| 0.00| 0.00
% | 0.0| -0.2| +11.3| -11.3| 0| +3.0| 0| +3.4| 0| -7.7| -0.2| -0.2| -0.6| 0| 0
1 250| 1024| 14060.15| 13.90| 1023| 0| 35| 0| 1848| 0| 12| 843688| 843752| 864475| 0.00| 0.00
2 250| 1024| 13982.47| 15.34| 913| 0| 34| 0| 1830| 0| 12| 839026| 839089| 859914| 0.00| 0.00
% | 0.0| -0.6| +10.4| -10.8| 0| -2.9| 0| -1.0| 0| 0.0| -0.6| -0.6| -0.5| 0| 0
1 500| 1024| 14051.14| 13.80| 1024| 0| 33| 0| 1716| 0| 13| 843144| 843212| 862981| 0.00| 0.00
2 500| 1024| 14013.95| 15.27| 918| 0| 32| 0| 1681| 0| 13| 840915| 840983| 862635| 0.00| 0.00
% | 0.0| -0.3| +10.7| -10.4| 0| -3.0| 0| -2.0| 0| 0.0| -0.3| -0.3| -0.0| 0| 0
^ permalink raw reply [flat|nested] 111+ messages in thread* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 2:50 ` Amos Kong
0 siblings, 0 replies; 111+ messages in thread
From: Amos Kong @ 2011-12-19 2:50 UTC (permalink / raw)
To: linux-arm-kernel
On 19/12/11 10:19, Amos Kong wrote:
> On 12/12/11 13:12, Rusty Russell wrote:
>> On Mon, 12 Dec 2011 11:06:53 +0800, Amos Kong<akong@redhat.com> wrote:
>>> On 12/12/11 06:27, Benjamin Herrenschmidt wrote:
>>>> On Sun, 2011-12-11 at 14:25 +0200, Michael S. Tsirkin wrote:
>>>>
>>>>> Forwarding some results by Amos, who run multiple netperf streams in
>>>>> parallel, from an external box to the guest. TCP_STREAM results were
>>>>> noisy. This could be due to buffering done by TCP, where packet size
>>>>> varies even as message size is constant.
>>>>>
>>>>> TCP_RR results were consistent. In this benchmark, after switching
>>>>> to mandatory barriers, CPU utilization increased by up to 35% while
>>>>> throughput went down by up to 14%. the normalized throughput/cpu
>>>>> regressed consistently, between 7 and 35%
>>>>>
>>>>> The "fix" applied was simply this:
>>>>
>>>> What machine& processor was this ?
>>>
>>> pined guest memory to numa node 1
>>
>> Please try this patch. How much does the branch cost us?
>>
>> (Compiles, untested).
>>
>> Thanks,
>> Rusty.
>>
>> From: Rusty Russell<rusty@rustcorp.com.au>
>> Subject: virtio: harsher barriers for virtio-mmio.
>>
>> We were cheating with our barriers; using the smp ones rather than the
>> real device ones. That was fine, until virtio-mmio came along, which
>> could be talking to a real device (a non-SMP CPU).
>>
>> Unfortunately, just putting back the real barriers (reverting
>> d57ed95d) causes a performance regression on virtio-pci. In
>> particular, Amos reports netbench's TCP_RR over virtio_net CPU
>> utilization increased up to 35% while throughput went down by up to
>> 14%.
>>
>> By comparison, this branch costs us???
>>
>> Reference: https://lkml.org/lkml/2011/12/11/22
>>
>> Signed-off-by: Rusty Russell<rusty@rustcorp.com.au>
>> ---
>> drivers/lguest/lguest_device.c | 10 ++++++----
>> drivers/s390/kvm/kvm_virtio.c | 2 +-
>> drivers/virtio/virtio_mmio.c | 7 ++++---
>> drivers/virtio/virtio_pci.c | 4 ++--
>> drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
>> include/linux/virtio_ring.h | 1 +
>> tools/virtio/linux/virtio.h | 1 +
>> tools/virtio/virtio_test.c | 3 ++-
>> 8 files changed, 38 insertions(+), 24 deletions(-)
>
> Hi all,
>
> I tested with the same environment and scenarios.
> tested one scenarios for three times and compute the average for more
> precision.
>
> Thanks, Amos
>
> --------- compare results -----------
> Mon Dec 19 09:51:09 2011
>
> 1 - avg-old.netperf.exhost_guest.txt
> 2 - avg-fixed.netperf.exhost_guest.txt
>
> ======
> TCP_STREAM
> sessions| size|throughput| cpu| normalize| #tx-pkts| #rx-pkts| #tx-byts|
> #rx-byts| #re-trans| #tx-intr| #rx-intr| #io_exit| #irq_inj|#tpkt/#exit|
> #rpkt/#irq
> 1 1| 64| 1073.54| 10.50| 102| 0| 31| 0| 1612| 0| 16| 487641| 489753|
> 504764| 0.00| 0.00
> 2 1| 64| 1079.44| 10.29| 104| 0| 30| 0| 1594| 0| 17| 487156| 488828|
> 504411| 0.00| 0.00
> % | 0.0| +0.5| -2.0| +2.0| 0| -3.2| 0| -1.1| 0| +6.2| -0.1| -0.2| -0.1|
The format is broken in webpage, attached the result file.
it's also available here: http://amosk.info/download/rusty-fix-perf.txt
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: rusty-fix-perf.txt
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20111219/5da85248/attachment-0001.txt>
^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
2011-12-19 2:50 ` Amos Kong
(?)
@ 2011-12-19 8:37 ` Rusty Russell
-1 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-19 8:37 UTC (permalink / raw)
To: Amos Kong
Cc: kvm, Michael S. Tsirkin, Benjamin Herrenschmidt, linux-kernel,
virtualization, rhod, torvalds, linux-arm-kernel
On Mon, 19 Dec 2011 10:50:13 +0800, Amos Kong <akong@redhat.com> wrote:
> The format is broken in webpage, attached the result file.
> it's also available here: http://amosk.info/download/rusty-fix-perf.txt
Thanks Amos.
Linus, please apply. Fixes virtio-mmio without breaking virtio_pci
performance.
Thanks,
Rusty.
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch is in the noise.
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread* Re: [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 8:37 ` Rusty Russell
0 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-19 8:37 UTC (permalink / raw)
To: Amos Kong
Cc: kvm, Michael S. Tsirkin, Benjamin Herrenschmidt, linux-kernel,
virtualization, rhod, linux-arm-kernel, torvalds
On Mon, 19 Dec 2011 10:50:13 +0800, Amos Kong <akong@redhat.com> wrote:
> The format is broken in webpage, attached the result file.
> it's also available here: http://amosk.info/download/rusty-fix-perf.txt
Thanks Amos.
Linus, please apply. Fixes virtio-mmio without breaking virtio_pci
performance.
Thanks,
Rusty.
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch is in the noise.
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread* [RFC] virtio: use mandatory barriers for remote processor vdevs
@ 2011-12-19 8:37 ` Rusty Russell
0 siblings, 0 replies; 111+ messages in thread
From: Rusty Russell @ 2011-12-19 8:37 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, 19 Dec 2011 10:50:13 +0800, Amos Kong <akong@redhat.com> wrote:
> The format is broken in webpage, attached the result file.
> it's also available here: http://amosk.info/download/rusty-fix-perf.txt
Thanks Amos.
Linus, please apply. Fixes virtio-mmio without breaking virtio_pci
performance.
Thanks,
Rusty.
From: Rusty Russell <rusty@rustcorp.com.au>
Subject: virtio: harsher barriers for virtio-mmio.
We were cheating with our barriers; using the smp ones rather than the
real device ones. That was fine, until virtio-mmio came along, which
could be talking to a real device (a non-SMP CPU).
Unfortunately, just putting back the real barriers (reverting
d57ed95d) causes a performance regression on virtio-pci. In
particular, Amos reports netbench's TCP_RR over virtio_net CPU
utilization increased up to 35% while throughput went down by up to
14%.
By comparison, this branch is in the noise.
Reference: https://lkml.org/lkml/2011/12/11/22
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
drivers/lguest/lguest_device.c | 10 ++++++----
drivers/s390/kvm/kvm_virtio.c | 2 +-
drivers/virtio/virtio_mmio.c | 7 ++++---
drivers/virtio/virtio_pci.c | 4 ++--
drivers/virtio/virtio_ring.c | 34 +++++++++++++++++++++-------------
include/linux/virtio_ring.h | 1 +
tools/virtio/linux/virtio.h | 1 +
tools/virtio/virtio_test.c | 3 ++-
8 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c
--- a/drivers/lguest/lguest_device.c
+++ b/drivers/lguest/lguest_device.c
@@ -291,11 +291,13 @@ static struct virtqueue *lg_find_vq(stru
}
/*
- * OK, tell virtio_ring.c to set up a virtqueue now we know its size
- * and we've got a pointer to its pages.
+ * OK, tell virtio_ring.c to set up a virtqueue now we know its size
+ * and we've got a pointer to its pages. Note that we set weak_barriers
+ * to 'true': the host just a(nother) SMP CPU, so we only need inter-cpu
+ * barriers.
*/
- vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN,
- vdev, lvq->pages, lg_notify, callback, name);
+ vq = vring_new_virtqueue(lvq->config.num, LGUEST_VRING_ALIGN, vdev,
+ true, lvq->pages, lg_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto unmap;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -198,7 +198,7 @@ static struct virtqueue *kvm_find_vq(str
goto out;
vq = vring_new_virtqueue(config->num, KVM_S390_VIRTIO_RING_ALIGN,
- vdev, (void *) config->address,
+ vdev, true, (void *) config->address,
kvm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -309,9 +309,10 @@ static struct virtqueue *vm_setup_vq(str
writel(virt_to_phys(info->queue) >> PAGE_SHIFT,
vm_dev->base + VIRTIO_MMIO_QUEUE_PFN);
- /* Create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN,
- vdev, info->queue, vm_notify, callback, name);
+ /* Create the vring: no weak barriers, the other side is could
+ * be an independent "device". */
+ vq = vring_new_virtqueue(info->num, VIRTIO_MMIO_VRING_ALIGN, vdev,
+ false, info->queue, vm_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto error_new_virtqueue;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -414,8 +414,8 @@ static struct virtqueue *setup_vq(struct
vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
/* create the vring */
- vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN,
- vdev, info->queue, vp_notify, callback, name);
+ vq = vring_new_virtqueue(info->num, VIRTIO_PCI_VRING_ALIGN, vdev,
+ true, info->queue, vp_notify, callback, name);
if (!vq) {
err = -ENOMEM;
goto out_activate_queue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -28,17 +28,20 @@
#ifdef CONFIG_SMP
/* Where possible, use SMP barriers which are more lightweight than mandatory
* barriers, because mandatory barriers control MMIO effects on accesses
- * through relaxed memory I/O windows (which virtio does not use). */
-#define virtio_mb() smp_mb()
-#define virtio_rmb() smp_rmb()
-#define virtio_wmb() smp_wmb()
+ * through relaxed memory I/O windows (which virtio-pci does not use). */
+#define virtio_mb(vq) \
+ do { if ((vq)->weak_barriers) smp_mb(); else mb(); } while(0)
+#define virtio_rmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
+#define virtio_wmb(vq) \
+ do { if ((vq)->weak_barriers) smp_rmb(); else rmb(); } while(0)
#else
/* We must force memory ordering even if guest is UP since host could be
* running on another CPU, but SMP barriers are defined to barrier() in that
* configuration. So fall back to mandatory barriers instead. */
-#define virtio_mb() mb()
-#define virtio_rmb() rmb()
-#define virtio_wmb() wmb()
+#define virtio_mb(vq) mb()
+#define virtio_rmb(vq) rmb()
+#define virtio_wmb(vq) wmb()
#endif
#ifdef DEBUG
@@ -77,6 +80,9 @@ struct vring_virtqueue
/* Actual memory layout for this queue */
struct vring vring;
+ /* Can we use weak barriers? */
+ bool weak_barriers;
+
/* Other side has made a mess, don't try any more. */
bool broken;
@@ -245,14 +251,14 @@ void virtqueue_kick(struct virtqueue *_v
START_USE(vq);
/* Descriptors and available array need to be set before we expose the
* new available array entries. */
- virtio_wmb();
+ virtio_wmb(vq);
old = vq->vring.avail->idx;
new = vq->vring.avail->idx = old + vq->num_added;
vq->num_added = 0;
/* Need to update avail index before checking if we should notify */
- virtio_mb();
+ virtio_mb(vq);
if (vq->event ?
vring_need_event(vring_avail_event(&vq->vring), new, old) :
@@ -314,7 +320,7 @@ void *virtqueue_get_buf(struct virtqueue
}
/* Only get used array entries after they have been exposed by host. */
- virtio_rmb();
+ virtio_rmb(vq);
i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
*len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
@@ -337,7 +343,7 @@ void *virtqueue_get_buf(struct virtqueue
* the read in the next get_buf call. */
if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) {
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
}
END_USE(vq);
@@ -366,7 +372,7 @@ bool virtqueue_enable_cb(struct virtqueu
* entry. Always do both to keep code simple. */
vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
vring_used_event(&vq->vring) = vq->last_used_idx;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely(more_used(vq))) {
END_USE(vq);
return false;
@@ -393,7 +399,7 @@ bool virtqueue_enable_cb_delayed(struct
/* TODO: tune this threshold */
bufs = (u16)(vq->vring.avail->idx - vq->last_used_idx) * 3 / 4;
vring_used_event(&vq->vring) = vq->last_used_idx + bufs;
- virtio_mb();
+ virtio_mb(vq);
if (unlikely((u16)(vq->vring.used->idx - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
@@ -453,6 +459,7 @@ EXPORT_SYMBOL_GPL(vring_interrupt);
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *),
void (*callback)(struct virtqueue *),
@@ -476,6 +483,7 @@ struct virtqueue *vring_new_virtqueue(un
vq->vq.vdev = vdev;
vq->vq.name = name;
vq->notify = notify;
+ vq->weak_barriers = weak_barriers;
vq->broken = false;
vq->last_used_idx = 0;
vq->num_added = 0;
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -168,6 +168,7 @@ struct virtqueue;
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -214,6 +214,7 @@ void *virtqueue_detach_unused_buf(struct
struct virtqueue *vring_new_virtqueue(unsigned int num,
unsigned int vring_align,
struct virtio_device *vdev,
+ bool weak_barriers,
void *pages,
void (*notify)(struct virtqueue *vq),
void (*callback)(struct virtqueue *vq),
diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -92,7 +92,8 @@ static void vq_info_add(struct vdev_info
assert(r >= 0);
memset(info->ring, 0, vring_size(num, 4096));
vring_init(&info->vring, num, info->ring, 4096);
- info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev, info->ring,
+ info->vq = vring_new_virtqueue(info->vring.num, 4096, &dev->vdev,
+ true, info->ring,
vq_notify, vq_callback, "test");
assert(info->vq);
info->vq->priv = info;
^ permalink raw reply [flat|nested] 111+ messages in thread