Bug 1071888

Summary: Libvirt should calculate and pass vectors parameter correclty (should be 2N+2) to qemu command line for multiqueue virtio net device
Product: Red Hat Enterprise Linux 7 Reporter: jason wang <jasowang>
Component: libvirtAssignee: Michal Privoznik <mprivozn>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0CC: acathrow, bili, chhu, dyuan, honzhang, jasowang, jiahu, juzhang, lcui, michen, mjenner, mprivozn, mst, mzhan, narendra_k, qiguo, rhod, shyu, svenkatr, xwei, zhwang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libvirt-1.1.1-26.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1066209 Environment:
Last Closed: 2014-06-13 12:21:14 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1066209    
Bug Blocks:    

Comment 1 Michal Privoznik 2014-03-03 12:38:34 UTC
Jason,

can you please update the linux-kvm.org wiki so I have something to point to?

The http://www.linux-kvm.org/page/Multiqueue#Enable_MQ_feature page still lists the old default.

Comment 4 jason wang 2014-03-04 02:44:25 UTC
(In reply to Michal Privoznik from comment #1)
> Jason,
> 
> can you please update the linux-kvm.org wiki so I have something to point to?
> 
> The http://www.linux-kvm.org/page/Multiqueue#Enable_MQ_feature page still
> lists the old default.

Thanks for the reminding.

Have changed the wiki to use 2N+2.

Comment 5 Michal Privoznik 2014-03-04 09:48:28 UTC
Patch proposed upstream:

https://www.redhat.com/archives/libvir-list/2014-March/author.html

Comment 8 Hu Jianwei 2014-03-07 03:31:21 UTC
Verified as below:

Version:
libvirt-1.1.1-26.el7.x86_64
qemu-kvm-rhev-1.5.3-52.el7.x86_64
kernel-3.10.0-105.el7.x86_64

1. Set queues=6, libvirt can pass 2*6+2 to vectors in qemu command line.
[root@intel-e5530-8-2 ~]# virsh dumpxml test| grep interface -A8
    <interface type='network'>
      <mac address='52:54:00:85:26:85'/>
      <source network='default'/>
      <target dev='vnet1'/>
      <model type='virtio'/>
      <driver name='vhost' queues='6'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
...
[root@intel-e5530-8-2 ~]# ps aux | grep test |grep -v grep| sed 's/-device/\n-device/g' | grep "virtio-net-pci"
-device virtio-net-pci,mq=on,vectors=14,netdev=hostnet0,id=net0,mac=52:54:00:85:26:85,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 

2. Set queues=1 or omitted this element, libvirt would not pass value to vectors in qemu command line, this is expected results from code patch.
[root@intel-e5530-8-2 ~]# virsh dumpxml test| grep interface -A8
    <interface type='network'>
      <mac address='52:54:00:85:26:85'/>
      <source network='default'/>
      <target dev='vnet1'/>
      <model type='virtio'/>
      <driver name='vhost'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
...
[root@intel-e5530-8-2 ~]# ps aux | grep test |grep -v grep| sed 's/-device/\n-device/g' | grep "virtio-net-pci"
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:85:26:85,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 


We can get the expected result, changed to verified.

Comment 9 Ludek Smid 2014-06-13 12:21:14 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.