Hi I work mostly in OpenStack on enabling ovs with dpdk. When deploying vms on host running ovs with dpdk vms are booted utilizing
Vhost-user interfaces. Qemu support creating vms with vhost-user network interfaces as of v2.1. Libvirt currently has support for requesting the use of vhost-user interfaces by added the following xml fragment <interface type='vhostuser'> <mac address='fa:16:3e:ea:2a:08'/> <source type='unix' path='/var/run/openvswitch/vhuf1204e0c-98' mode='client'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> Send traffic via a vhost-user interface, the vhost-user frontend (provided by qemu) must share
the virtios ring to the vhost-backed via passing a file descript to the memory backing object of the qemu instance as part of the port creation. Today the only native way to request Libvirt to create a vm who’s memory is backed by a memdev which can be Accessed via a file descriptor is to request hugepage backed memory. This requires the operator to Manage and configure hugepage on each of their compute hosts and take special care to ensure that vms are Not placed on host were vhost-user interface are used if they do not request hugepages. Today it is possible to use Libvirt to spawn a vm without hugepage memory and a file descriptor backed memdev Via the use of the qemu:commandline element. <qemu:commandline> <qemu:arg value='-object'/> <qemu:arg value='memory-backend-file,id=mem,size=1024M,mem-path=/var/lib/libvirt/qemu,share=on'/> <qemu:arg value='-numa'/> <qemu:arg value='node,memdev=mem'/> <qemu:arg value='-mem-prealloc'/> </qemu:commandline> I created a proof of concept patch to nova to demonstrate that this works however to support this usecase in Nova a new xml element is required. https://review.openstack.org/#/c/309565/1 I would like to propose the introduction of a new subelemnt to the memorybacking element to request file discrptro backed memory <memoryBacking> <filedescriptor size_mb=”1024” path=”/var/lib/libvirt/qemu” prealloc=”true” shared=”on” />
</memoryBacking> The above filedescriptor xml fragment above would then be parsed to generate the same qemu argument as the qemu:commandline fragment Therefor allowing the creation of a vm with vhost-user interface without hugepage memory backing. Before I start looking at the Libvirt code base I wanted to ask if the Libvirt community would be open to this change and what would be the best way
To approach enabling this feature. Regards Sean. |
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list