Chapter 8. vHost User Ports
vHost user ports are DPDK-backed datapaths for instances with two modes:
dpdkvhostuser mode, Open vSwitch (OVS) acts as a server which creates the vHost user socket. OVS shares the socket with QEMU, the client. In this mode, if OVS is restarted, VM instances connected to it will need to be rebooted to regain connectivity.
As of OVS 2.9,
dpdkvhostuserclient is used instead. In this mode the QEMU creates and shares the vHost socket as a server, and OVS connects as the client. If OVS is restarted in this mode, it will automatically reconnect to all existing VMs.
8.1. Manually changing the vhost user port mode
DPDK vHost user ports are created exclusively with
dpdkvhostuserclient mode since RHOSP 10 maintenance release RHSA-2018:2102, with no option to change this behavior. The usage of
dpdkvhostuser mode for existing instances is still supported, however it is recommended to transition to
Change to the new
dpdkvhostuserclient mode on existing instances by cold migrating them to another host after updating the overcloud to OVS 2.9.
If you have instances configured with CPU pinning, set the
cpu_pinning_migration_quick_fail parameter in
nova.conf to false. This will allow CPU pinning to be recalculated for a higher chance of migration success. Prior to attempting a live migration of instances with CPU pinning, contact Red Hat support.
openstack server migrate <server_id> openstack server resize --confirm <server id>
Prior to RHOSP10 maintenance release RHBA-2019:0074, the cold migration may fail when the NUMATopologyFilter value is included in the NovaSchedulerDefaultFilters parameter in nova.conf. This behavior can be prevented by ensuring you are at the latest maintenance release, which includes the
cpu_pinning_migration_quick_fail option for Nova. See Red Hat OpenStack Platform 10 Release Notes for more information.
You can check that an instance’s vHost user port is in
dpdkvhostuserclient mode. Identify and log in to the hypervisor node where the instance resides.
Run the following:
compute-0# virsh dumpxml <instance name> | less
Identify the interface of type vhostuser and check that mode is set to server.
... <interface type='vhostuser'> <model type='virtio'/> <source type='unix' path='<path-to-socket>' mode='<client|server>'/> </interface> ...