[dpdk-dev] DPDK's vhost-user logging capability

Yuanhan Liu yuanhan.liu at linux.intel.com
Fri Mar 25 03:49:59 CET 2016


On Wed, Mar 23, 2016 at 03:34:09PM +0000, shesha Sreenivasamurthy (shesha) wrote:
> Hi All,
> 
> I was going over vhost-user migration capability in DPDK in lieu of a Cisco's
> multi-q DPDK vhost-user application. I see that log_base address is implemented
> as per virtio_net device. However, desc, addr and used is per vhost_virtqueue.
> Additionally, QEMU sends one VHOST_USER_SET_LOG_BASE per queue-pair (QEMU - hw/
> virtio/vhost.c::vhost_dev_set_log).
> 
> Does it mean we need to log dirty pages of all rings to same location ?

Hi,

Yes, and QEMU allocates only one block of memory (see vhost_log_alloc())
after all.

> If that
> is the case then why does QEMU sends separate VHOST_USER_SET_LOG_BASE per queue
> pair ?

That's kind of like a design. One queue pair is associated with one
vhost_dev struct in QEMU, hence, all those requests will go through
vhost_dev structs (aka, all qeueu pairs), including those that one
time request is needed only, such as VHOST_USER_SET_MEM_TABLE. Thus,
we introduced vhost_user_one_time_request() to avoid such case.

So, good question, and we may need add it to the "one time request"
group, Marc?

And FYI, for queue-pair (or vring) request, there should be an index
in the payload, to point to the right vring. If not, it normally
means a global request, that _may_ need be sent once only.

	--yliu


More information about the dev mailing list