[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V4 00/22] Multiqueue virtio-net
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH V4 00/22] Multiqueue virtio-net |
Date: |
Thu, 31 Jan 2013 16:21:49 +0200 |
On Wed, Jan 30, 2013 at 07:12:19PM +0800, Jason Wang wrote:
> Hello all:
>
> This seires is an update of last version of multiqueue virtio-net support.
>
> This series tries to brings multiqueue support to virtio-net through a
> multiqueue support tap backend and multiple vhost threads.
>
> Patch 1 converts bitfield in TAPState to bool. Patch 2 replace assert(0) with
> abort() in tap.
>
> To support this, multiqueue nic support were added to qemu. This is done by
> introducing an array of NetClientStates in NICState, and make each pair of
> peers
> to be an queue of the nic. This is done in patch 3-9.
>
> Tap were also converted to be able to create a multiple queue
> backend. Currently, only linux support this by issuing TUNSETIFF N times with
> the same device name to create N queues. Each fd returned by TUNSETIFF were a
> queue supported by kernel. Three new command lines were introduced, "queues"
> were used to tell how many queues will be created by qemu; "fds" were used to
> pass multiple pre-created tap file descriptors to qemu; "vhostfds" were used
> to
> pass multiple pre-created vhost descriptors to qemu. This is done in patch
> 10-15.
>
> A method of deleting a queue and queue_index were also introduce for virtio,
> this is done in patch 16-17.
>
> Vhost were also changed to support multiqueue by introducing a start vq index
> which tracks the first virtqueue that will be used by vhost instead of the
> assumption that the vhost always use virtqueue from index 0. This is done in
> patch 18.
>
> The last part is the multiqueue userspace changes, this is done in patch
> 19-22.
>
> With this changes, user could start a multiqueue virtio-net device through
>
> ./qemu -netdev tap,id=hn0,queues=2,vhost=on -device virtio-net-pci,netdev=hn0
>
> Management tools such as libvirt can pass multiple pre-created fds/vhostfds
> through
>
> ./qemu -netdev tap,id=hn0,fds=X:Y,vhostfds=M:N -device
> virtio-net-pci,netdev=hn0
>
> For the one who wants to try, a git tree is available at:
> git://github.com/jasowang/qemu.git
>
> Changes from V3:
> - convert bitfield to bool in TAPState (Blue)
> - use abort() instead of assert(0) in tap code (Blue)
> - rebase to the latest
> - fix a bug that breaks the non-tap network
This conflicts with the pull request I sent, in partucular this adds a
layout assumption. In the hope this will accelerate things, I did a
rebase and a trivial test with single queue only and it seems ok:
git://github.com/mstsirkin/qemu.git pci
There were some warnings about whitespace at EOF but
otherwise seems ok.
--
MST
- [Qemu-devel] [PATCH V4 18/22] virtio: add a queue_index to VirtQueue, (continued)
- [Qemu-devel] [PATCH V4 18/22] virtio: add a queue_index to VirtQueue, Jason Wang, 2013/01/30
- [Qemu-devel] [PATCH V4 21/22] virtio-net: migration support for multiqueue, Jason Wang, 2013/01/30
- [Qemu-devel] [PATCH V4 16/22] vhost: multiqueue support, Jason Wang, 2013/01/30
- [Qemu-devel] [PATCH V4 19/22] virtio-net: separate virtqueue from VirtIONet, Jason Wang, 2013/01/30
- [Qemu-devel] [PATCH V4 22/22] virtio-net: compat multiqueue support, Jason Wang, 2013/01/30
- Message not available
Re: [Qemu-devel] [PATCH V4 00/22] Multiqueue virtio-net,
Michael S. Tsirkin <=