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
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to