Description of problem: Currently, configuration of multiqueue for instances is dependent on the image property and nova flavor key and is a global per-instance setting (https://access.redhat.com/solutions/3215141). Can we implement the feature from neutron so that we can enable multiqueue on a per-interface basis? This would allow to minimize instance downtime. E.g., if an instance needs to switch from single queue to multi queue, one could unplug the port, delete it, create it and attach again to the instance, instead of having to resize the instance to a different flavor (if that's even currently possible). Thanks, Andreas Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
Hi, I was just assuming that this was a neutron task, given that I'd do a port-create with neutron. My point is, currently, we set this via the image properties, and this isn't very flexible. We also assume that all interfaces are either multi queue or not. libvirt, however, gives us more flexibility: ~~~ [root@overcloud-compute-0 ~]# virsh dumpxml 4 | grep interface -C4 </controller> <controller type='pci' index='0' model='pci-root'> <alias name='pci.0'/> </controller> <interface type='bridge'> <mac address='fa:16:3e:9e:31:8e'/> <source bridge='qbr09d23991-54'/> <target dev='tap09d23991-54'/> <model type='virtio'/> <driver name='vhost' queues='2'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='bridge'> <mac address='fa:16:3e:f0:00:99'/> <source bridge='qbrd84d8d6c-26'/> <target dev='tapd84d8d6c-26'/> <model type='virtio'/> <driver name='vhost' queues='2'/> <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </interface> <serial type='file'> <source path='/var/lib/nova/instances/7462dca7-ad8d-4dd7-aedc-20c39caecf76/console.log'/> <target type='isa-serial' port='0'> <model name='isa-serial'/> ~~~ ~~~ [root@rhel-test-multiqueue ~]# ethtool -l eth1 Channel parameters for eth1: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 2 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 ~~~ ~~~ [root@overcloud-compute-0 ~]# cat interface.xml <interface type='bridge'> <mac address='fa:16:3e:f0:00:99'/> <source bridge='qbrd84d8d6c-26'/> <target dev='tapd84d8d6c-26'/> <model type='virtio'/> <!-- <driver name='vhost' queues='2'/> --> <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </interface> ~~~ ~~~ [root@overcloud-compute-0 ~]# virsh detach-interface --domain instance-00000011 --mac fa:16:3e:f0:00:99 error: command 'detach-interface' requires <type> option [root@overcloud-compute-0 ~]# virsh detach-interface --domain instance-00000011 --mac fa:16:3e:f0:00:99 --type bridge Interface detached successfully [root@overcloud-compute-0 ~]# virsh attach-device instance-00000011 interface.xml Device attached successfully ~~~ ~~~ [root@rhel-test-multiqueue ~]# ethtool -l eth1 Channel parameters for eth1: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 1 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 ~~~ ~~~ [root@overcloud-compute-0 ~]# cat interface.xml <interface type='bridge'> <mac address='fa:16:3e:f0:00:99'/> <source bridge='qbrd84d8d6c-26'/> <target dev='tapd84d8d6c-26'/> <model type='virtio'/> <driver name='vhost' queues='4'/> <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </interface> ~~~ ~~~ [root@overcloud-compute-0 ~]# cat interface.xml <interface type='bridge'> <mac address='fa:16:3e:f0:00:99'/> <source bridge='qbrd84d8d6c-26'/> <target dev='tapd84d8d6c-26'/> <model type='virtio'/> <driver name='vhost' queues='4'/> <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </interface> [root@overcloud-compute-0 ~]# virsh detach-interface --domain instance-00000011 --mac fa:16:3e:f0:00:99 --type bridge Interface detached successfully [root@overcloud-compute-0 ~]# virsh attach-device instance-00000011 interface.xml Device attached successfully ~~~ ~~~ [root@rhel-test-multiqueue ~]# ethtool -l eth1 Channel parameters for eth1: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 4 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 ~~~