Bug 1375597

Summary: Increase the queue size to the max allowed, 1024.
Product: Red Hat Enterprise Linux 7 Reporter: Marcel Kolaja <mkolaja>
Component: libvirtAssignee: Michal Privoznik <mprivozn>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 7.2CC: ailan, areis, atheurer, chayang, dyuan, fbaudin, fleitner, fpan, ganguly, iawells, jasowang, jdonohue, jherrman, jsuchane, juzhang, knoel, krister, lhuang, lmiksik, markmc, maxime.coquelin, mprivozn, mrezanin, mst, pezhang, rbalakri, tlavigne, virt-maint, yalzhang, zshi
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-1.2.17-13.el7_2.6 Doc Type: Enhancement
Doc Text:
It is now possible to specify the virtio data buffer limit between a guest and the QEMU emulator. To do this, change the value of the <driver rx_queue_size='N'/> parameter in the guest's domain XML file, where N can be from 256 to 1024.
Story Points: ---
Clone Of: 1366989 Environment:
Last Closed: 2016-11-09 17:17:07 UTC Type: ---
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: 1366989    
Bug Blocks:    

Description Marcel Kolaja 2016-09-13 14:00:06 UTC
This bug has been copied from bug #1366989 and has been proposed
to be backported to 7.2 z-stream (EUS).

Comment 6 yalzhang@redhat.com 2016-10-10 01:34:36 UTC
# rpm -q libvirt qemu-kvm-rhev spice-server
libvirt-1.2.17-13.el7_2.6.x86_64
qemu-kvm-rhev-2.3.0-31.el7_2.22.x86_64
spice-server-0.12.4-15.el7_2.2.x86_64
# uname  -a
Linux localhost.localdomain 3.10.0-327.42.1.el7.x86_64 #1 SMP Wed Oct 5 07:15:46 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux

1. negative test, define the rx_queue_size to some negative ones, PASS.

2. migration test, migrate during the guest is copying a big file with rx_queue_size defined(libvirt-1.2.17-13.el7_2.6.x86_64<->libvirt-1.2.17-13.el7_2.6.x86_64), then migrate back, PASS;

3. hotplug,PASS


1. negative test
1)try -2, sdf
# virsh edit rhel7.2
error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Extra element devices in interleave
Element domain failed to validate content

Failed. Try again? [y,n,i,f,?]: 
2) try 111
# virsh edit rhel7.2
Domain rhel7.2 XML configuration edited.
# virsh start rhel7.2
error: Failed to start domain rhel7.2
error: unsupported configuration: rx_queue_size has to be a power of two

3) try 128, 2048,
# virsh edit rhel7.2
Domain rhel7.2 XML configuration not changed.

# virsh start rhel7.2
error: Failed to start domain rhel7.2
error: internal error: process exited while connecting to monitor: 2016-10-09T03:51:22.727663Z qemu-kvm: -device virtio-net-pci,rx_queue_size=128,netdev=hostnet0,id=net0,mac=52:54:00:68:bb:04,bus=pci.0,addr=0x3: Invalid rx_queue_size (= 128), must be a power of 2 between 256 and 1024.
2016-10-09T03:51:22.727849Z qemu-kvm: -device virtio-net-pci,rx_queue_size=128,netdev=hostnet0,id=net0,mac=52:54:00:68:bb:04,bus=pci.0,addr=0x3: Device 'virtio-net-pci' could not be initialized

4) try 256, 512, 1024, 
the guest can start, check the qemu command line and check on guest by "ethtool -g", all the results is as expected.

2. migration test, migrate during copy a file into the guest.
1) migrate libvirt-1.2.17-13.el7_2.6.x86_64<->libvirt-1.2.17-13.el7_2.6.x86_64, set the rx_queue_size as 1024/512/256.
on another host, copy file to the guest. During copy file, do the migration. After migration, check the file's checksum keep unchanged. 
# scp /home/yalzhang/Downloads/iso/win7.iso  10.66.4.218:/home 
# virsh migrate s1 --live qemu+ssh://server/system --verbose
root@server's password:
Migration: [100%]

Then migrate back.

2) migrate libvirt-1.2.17-13.el7_2.6.x86_64<->libvirt-2.0.0-10.el7.x86_64 (rhel7.3), PASS.

3. # cat inter
   <interface type='network'>
      <source network='default'/>
      <model type='virtio'/>
      <driver name='vhost' queues='5' rx_queue_size='1024'/>
    </interface>
# virsh attach-device rhel7.2 inter --config --live
Device attached successfully

Comment 8 errata-xmlrpc 2016-11-09 17:17:07 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2016-2688.html