Dor Laor
2008-Jan-09 05:23 UTC
[PATCH] Increase the tx queue to 512 descriptors to fix performance problem.
Now that we have a host timer based tx wakeup it waits for 64 packets or timeout before processing them. This might cause the guest to run out of tx buffers while the host holds them up. This is a temporal solution to quickly bring back performance to 800mbps. But a better fix will soon be sent (its not the only problem). Signed-off-by: Dor Laor <dor.laor@qumranet.com> --- qemu/hw/virtio-net.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/qemu/hw/virtio-net.c b/qemu/hw/virtio-net.c index 777fe2c..3d07b65 100644 --- a/qemu/hw/virtio-net.c +++ b/qemu/hw/virtio-net.c @@ -293,7 +293,7 @@ void *virtio_net_init(PCIBus *bus, NICInfo *nd, int devfn) n->vdev.update_config = virtio_net_update_config; n->vdev.get_features = virtio_net_get_features; n->rx_vq = virtio_add_queue(&n->vdev, 512, virtio_net_handle_rx); - n->tx_vq = virtio_add_queue(&n->vdev, 128, virtio_net_handle_tx); + n->tx_vq = virtio_add_queue(&n->vdev, 512, virtio_net_handle_tx); n->can_receive = 0; memcpy(n->mac, nd->macaddr, 6); n->vc = qemu_new_vlan_client(nd->vlan, virtio_net_receive, -- 1.5.3.7
Anthony Liguori
2008-Jan-09 06:30 UTC
[PATCH] Increase the tx queue to 512 descriptors to fix performance problem.
Dor Laor wrote:> Now that we have a host timer based tx wakeup it waits for 64 > packets or timeout before processing them. > This might cause the guest to run out of tx buffers while the host > holds them up. >There's a proper fix that Rusty added last night.> This is a temporal solution to quickly bring back performance to 800mbps. > But a better fix will soon be sent (its not the only problem). >How are you doing performance testing? Regards, Anthony Liguori> Signed-off-by: Dor Laor <dor.laor@qumranet.com> > --- > qemu/hw/virtio-net.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/qemu/hw/virtio-net.c b/qemu/hw/virtio-net.c > index 777fe2c..3d07b65 100644 > --- a/qemu/hw/virtio-net.c > +++ b/qemu/hw/virtio-net.c > @@ -293,7 +293,7 @@ void *virtio_net_init(PCIBus *bus, NICInfo *nd, int devfn) > n->vdev.update_config = virtio_net_update_config; > n->vdev.get_features = virtio_net_get_features; > n->rx_vq = virtio_add_queue(&n->vdev, 512, virtio_net_handle_rx); > - n->tx_vq = virtio_add_queue(&n->vdev, 128, virtio_net_handle_tx); > + n->tx_vq = virtio_add_queue(&n->vdev, 512, virtio_net_handle_tx); > n->can_receive = 0; > memcpy(n->mac, nd->macaddr, 6); > n->vc = qemu_new_vlan_client(nd->vlan, virtio_net_receive, >
Anthony Liguori
2008-Jan-09 06:52 UTC
[PATCH] Increase the tx queue to 512 descriptors to fix performance problem.
Dor Laor wrote:> On Wed, 2008-01-09 at 08:29 -0600, Anthony Liguori wrote: >> Dor Laor wrote: >>> Now that we have a host timer based tx wakeup it waits for 64 >>> packets or timeout before processing them. >>> This might cause the guest to run out of tx buffers while the host >>> holds them up. >>> >> There's a proper fix that Rusty added last night. > > This is with his latest patch, without it I got a lot of > "printk("Unlikely: restart svq failed\n");" > + The performance is much better now.How are you getting that? What are you running and what is your guest kernel? I've not seen that before.>>> This is a temporal solution to quickly bring back performance to 800mbps. >>> But a better fix will soon be sent (its not the only problem). >>> >> How are you doing performance testing? > > Not really, this was just to stabilize the module. > It needs some more work, disable/enable of the device is broken.What do you mean by disable/enable? FWIW, your patch really hurts netperf performance which is why I asked how you were measuring 800mbps. Regards, Anthony Liguori>> Regards, >> >> Anthony Liguori >> >>> Signed-off-by: Dor Laor <dor.laor@qumranet.com> >>> --- >>> qemu/hw/virtio-net.c | 2 +- >>> 1 files changed, 1 insertions(+), 1 deletions(-) >>> >>> diff --git a/qemu/hw/virtio-net.c b/qemu/hw/virtio-net.c >>> index 777fe2c..3d07b65 100644 >>> --- a/qemu/hw/virtio-net.c >>> +++ b/qemu/hw/virtio-net.c >>> @@ -293,7 +293,7 @@ void *virtio_net_init(PCIBus *bus, NICInfo *nd, int devfn) >>> n->vdev.update_config = virtio_net_update_config; >>> n->vdev.get_features = virtio_net_get_features; >>> n->rx_vq = virtio_add_queue(&n->vdev, 512, virtio_net_handle_rx); >>> - n->tx_vq = virtio_add_queue(&n->vdev, 128, virtio_net_handle_tx); >>> + n->tx_vq = virtio_add_queue(&n->vdev, 512, virtio_net_handle_tx); >>> n->can_receive = 0; >>> memcpy(n->mac, nd->macaddr, 6); >>> n->vc = qemu_new_vlan_client(nd->vlan, virtio_net_receive, >>>
Maybe Matching Threads
- [PATCH] Increase the tx queue to 512 descriptors to fix performance problem.
- [Virtio-for-kvm] [PATCH 7/7] userspace virtio
- [Virtio-for-kvm] [PATCH 7/7] userspace virtio
- [Virtio-for-kvm] [PATCH 2/7] userspace virtio
- [Virtio-for-kvm] [PATCH 2/7] userspace virtio