Bug 852665 - Backport e1000 receive queue fixes from upstream
Backport e1000 receive queue fixes from upstream
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: qemu-kvm (Show other bugs)
6.4
x86_64 Linux
medium Severity medium
: rc
: ---
Assigned To: Amos Kong
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2012-08-29 04:48 EDT by Amos Kong
Modified: 2015-05-24 20:06 EDT (History)
12 users (show)

See Also:
Fixed In Version: qemu-kvm-0.12.1.2-2.320.el6
Doc Type: Enhancement
Doc Text:
Cause: Virtio-net has code to flush the queue and notify the iothread whenever new receive buffers are added by the guest, it can help to improve the latency. Consequence: Need to do same thing for other driver. Fix: Signal to the IO thread to repoll the file descriptor, when the queue is emptied. Flush queue whenever can_receive can go from false to true. Result: Latency time is improved.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-02-21 02:39:13 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Comment 2 Amos Kong 2012-08-31 06:17:06 EDT
Hi Junyi,

You can verify this bug by checking the latency time (respond time) of ping command, regression should not exist here.

steps:
1. ping guest from host
# ping $guest_ip -i 0.01
2. check the latency time
Comment 8 langfang 2012-11-06 04:14:08 EST
test this bug as follow version:
# uname -r
2.6.32-335.el6.x86_64
# rpm -q qemu-kvm
qemu-kvm-0.12.1.2-2.316.el6.x86_64

guest:rhel6.4

steps:
1.boot guest with e1000 NIC
2.on host ping guest
# ping 10.66.7.114 -i 0.01

results:
# ping 10.66.7.114 -i 0.01 
PING 10.66.7.114 (10.66.7.114) 56(84) bytes of data.
64 bytes from 10.66.7.114: icmp_seq=1 ttl=64 time=1.40 ms
64 bytes from 10.66.7.114: icmp_seq=2 ttl=64 time=0.205 ms
64 bytes from 10.66.7.114: icmp_seq=3 ttl=64 time=0.215 ms
64 bytes from 10.66.7.114: icmp_seq=4 ttl=64 time=0.213 ms
64 bytes from 10.66.7.114: icmp_seq=5 ttl=64 time=0.211 ms
64 bytes from 10.66.7.114: icmp_seq=6 ttl=64 time=0.214 ms
64 bytes from 10.66.7.114: icmp_seq=7 ttl=64 time=0.213 ms
64 bytes from 10.66.7.114: icmp_seq=8 ttl=64 time=0.214 ms
64 bytes from 10.66.7.114: icmp_seq=9 ttl=64 time=0.220 ms
64 bytes from 10.66.7.114: icmp_seq=10 ttl=64 time=0.216 ms
64 bytes from 10.66.7.114: icmp_seq=11 ttl=64 time=0.234 ms
64 bytes from 10.66.7.114: icmp_seq=12 ttl=64 time=0.193 ms
64 bytes from 10.66.7.114: icmp_seq=13 ttl=64 time=0.232 ms
64 bytes from 10.66.7.114: icmp_seq=14 ttl=64 time=0.192 ms
64 bytes from 10.66.7.114: icmp_seq=15 ttl=64 time=0.216 ms
64 bytes from 10.66.7.114: icmp_seq=16 ttl=64 time=0.214 ms
64 bytes from 10.66.7.114: icmp_seq=17 ttl=64 time=0.234 ms
64 bytes from 10.66.7.114: icmp_seq=18 ttl=64 time=0.212 ms
64 bytes from 10.66.7.114: icmp_seq=19 ttl=64 time=0.192 ms
64 bytes from 10.66.7.114: icmp_seq=20 ttl=64 time=0.192 ms
64 bytes from 10.66.7.114: icmp_seq=21 ttl=64 time=0.219 ms
64 bytes from 10.66.7.114: icmp_seq=22 ttl=64 time=0.191 ms
64 bytes from 10.66.7.114: icmp_seq=23 ttl=64 time=0.185 ms
64 bytes from 10.66.7.114: icmp_seq=24 ttl=64 time=0.177 ms
64 bytes from 10.66.7.114: icmp_seq=25 ttl=64 time=0.216 ms
64 bytes from 10.66.7.114: icmp_seq=26 ttl=64 time=0.192 ms
64 bytes from 10.66.7.114: icmp_seq=27 ttl=64 time=0.218 ms
64 bytes from 10.66.7.114: icmp_seq=28 ttl=64 time=0.191 ms
64 bytes from 10.66.7.114: icmp_seq=29 ttl=64 time=0.216 ms
64 bytes from 10.66.7.114: icmp_seq=30 ttl=64 time=0.191 ms
64 bytes from 10.66.7.114: icmp_seq=31 ttl=64 time=0.220 ms
64 bytes from 10.66.7.114: icmp_seq=32 ttl=64 time=0.191 ms
64 bytes from 10.66.7.114: icmp_seq=33 ttl=64 time=0.158 ms
64 bytes from 10.66.7.114: icmp_seq=34 ttl=64 time=0.191 ms
64 bytes from 10.66.7.114: icmp_seq=35 ttl=64 time=0.191 ms
64 bytes from 10.66.7.114: icmp_seq=36 ttl=64 time=0.176 ms
64 bytes from 10.66.7.114: icmp_seq=37 ttl=64 time=0.262 ms
64 bytes from 10.66.7.114: icmp_seq=38 ttl=64 time=0.195 ms
64 bytes from 10.66.7.114: icmp_seq=39 ttl=64 time=0.215 ms
64 bytes from 10.66.7.114: icmp_seq=40 ttl=64 time=0.192 ms
64 bytes from 10.66.7.114: icmp_seq=41 ttl=64 time=0.220 ms
64 bytes from 10.66.7.114: icmp_seq=42 ttl=64 time=0.193 ms
64 bytes from 10.66.7.114: icmp_seq=43 ttl=64 time=0.186 ms
64 bytes from 10.66.7.114: icmp_seq=44 ttl=64 time=0.176 ms
64 bytes from 10.66.7.114: icmp_seq=45 ttl=64 time=0.186 ms
64 bytes from 10.66.7.114: icmp_seq=46 ttl=64 time=0.214 ms
64 bytes from 10.66.7.114: icmp_seq=47 ttl=64 time=0.214 ms
64 bytes from 10.66.7.114: icmp_seq=48 ttl=64 time=0.192 ms
64 bytes from 10.66.7.114: icmp_seq=49 ttl=64 time=0.240 ms


test on the fixed version
# uname -r
2.6.32-337.el6.x86_64
# rpm -q qemu-kvm
qemu-kvm-0.12.1.2-2.331.el6.x86_64

guest:rhel6.4

the steps as same as reproduce

results:
[root@localhost home]# ping 10.66.6.206 -i 0.01
PING 10.66.6.206 (10.66.6.206) 56(84) bytes of data.
64 bytes from 10.66.6.206: icmp_seq=1 ttl=64 time=1.10 ms
64 bytes from 10.66.6.206: icmp_seq=2 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=3 ttl=64 time=0.096 ms
64 bytes from 10.66.6.206: icmp_seq=4 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=5 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=6 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=7 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=8 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=9 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=10 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=11 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=12 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=13 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=14 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=15 ttl=64 time=0.108 ms
64 bytes from 10.66.6.206: icmp_seq=16 ttl=64 time=0.105 ms
64 bytes from 10.66.6.206: icmp_seq=17 ttl=64 time=0.104 ms
64 bytes from 10.66.6.206: icmp_seq=18 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=19 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=20 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=21 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=22 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=23 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=24 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=25 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=26 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=27 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=28 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=29 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=30 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=31 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=32 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=33 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=34 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=35 ttl=64 time=0.095 ms
64 bytes from 10.66.6.206: icmp_seq=36 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=37 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=38 ttl=64 time=0.112 ms
64 bytes from 10.66.6.206: icmp_seq=39 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=40 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=41 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=42 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=43 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=44 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=45 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=46 ttl=64 time=0.096 ms
64 bytes from 10.66.6.206: icmp_seq=47 ttl=64 time=0.095 ms
64 bytes from 10.66.6.206: icmp_seq=48 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=49 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=50 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=51 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=52 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=53 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=54 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=55 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=56 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=57 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=58 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=59 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=60 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=61 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=62 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=63 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=64 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=65 ttl=64 time=0.096 ms
64 bytes from 10.66.6.206: icmp_seq=66 ttl=64 time=0.094 ms
64 bytes from 10.66.6.206: icmp_seq=67 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=68 ttl=64 time=0.092 ms
64 bytes from 10.66.6.206: icmp_seq=69 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=70 ttl=64 time=0.093 ms
64 bytes from 10.66.6.206: icmp_seq=71 ttl=64 time=0.091 ms
64 bytes from 10.66.6.206: icmp_seq=72 ttl=64 time=0.093 ms


as above test ,on the fixed version,the latency time (respond time) of ping have more faster speed .
Comment 11 errata-xmlrpc 2013-02-21 02:39:13 EST
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.

http://rhn.redhat.com/errata/RHBA-2013-0527.html

Note You need to log in before you can comment on or make changes to this bug.