Bug 706051

Summary: poor throughput of tcp_stream from exhost to guest .
Product: Red Hat Enterprise Linux 5 Reporter: Quan Wenli <wquan>
Component: kvmAssignee: Michael S. Tsirkin <mst>
Status: CLOSED DUPLICATE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: low    
Version: 5.7CC: gcosta, juzhang, mkenneth, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-06-02 12:26:34 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:    
Bug Blocks: 580948    

Description Quan Wenli 2011-05-19 10:32:15 UTC
Description of problem:

guest got very poor throughput  of tcp_stream from exhost to guest while disabled netfilter on bridge and also diabled tso and enabled gso on eth.

Version-Release number of selected component (if applicable):

kernel-2.6.18-259.el5
kvm-83-232.el5

How reproducible:

100%

Steps to Reproduce:
1.diabled bridge on host 
sysctl -a |grep bridg
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
2. sysctl -w net.ipv4.conf.default.arp_filter=1
   sysctl -w net.ipv4.conf.all.arp_filter=1
3.diabled tso and enabled gso on eth.
   ethtool -K eth2 tso off
   ethtool -K eth2 gso on 
4. boot guest with qemu-ci 
/usr/libexec/qemu-kvm  -name 'vm1'  -drive file=/root/RHEL-Server-5.7-64-virtio.qcow2,index=0,if=virtio,boot=on,media=disk,cache=none,format=qcow2 -net nic,vlan=0,model=virtio,macaddr='9a:3b:dd:52:d9:d7' -net tap,vlan=0,script=/etc/qemu-ifup -m 4096 -smp 2,cores=1,threads=1,sockets=2  -cpu qemu64,+sse2   -vnc :0 -rtc-td-hack  -boot c  -usbdevice tablet -no-kvm-pit-reinjection

5.run netserver on guest
6.run netperf on ex-host
./netperf  -H 192.168.0.101
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.101 (192.168.0.101) port 0 AF_INET
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    10.34       0.51 

Actual results:


Expected results:


Additional info:
#ethtool -k eth2
Offload parameters for eth2:
Cannot get device udp large send offload settings: Operation not supported
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: off
udp fragmentation offload: off
generic segmentation offload: on
generic-receive-offload: on

#ethtool -k breth0
Offload parameters for breth0:
Cannot get device rx csum settings: Operation not supported
Cannot get device udp large send offload settings: Operation not supported
rx-checksumming: off
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on
udp fragmentation offload: off
generic segmentation offload: on
generic-receive-offload: off

#ethtool -i eth2
driver: ixgbe
version: 3.2.9-k2
firmware-version: 0.9-3
bus-info: 0000:0f:00.

#brctl show
bridge name	bridge id		STP enabled	interfaces
breth0		8000.001b218eb2b8	no		tap0
							eth2

Comment 1 Quan Wenli 2011-05-20 05:27:56 UTC
also get poor throughtput of tcp_stream  on rhel5.6 with kernel-2.6.18-238.el5/kvm-83-224.el5 by using the same steps in "Steps to Reproduce:"

./netperf -H 192.168.0.101 -l 60 
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.101 (192.168.0.101) port 0 AF_INET
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    60.01       3.59

Comment 2 Quan Wenli 2011-05-20 11:02:46 UTC
throughput of tcp_stream got very obvious speedup by just disabled rsc with 'ethtool -C eth2 rx-usecs 0'.

#netperf -H 192.168.0.101
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.101
(192.168.0.101) port 0 AF_INET
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    10.01    2902.13

I also try disabled netfilter on bridge and disabled hw rsc,got about 2925.84 Mbps throughput of tcp_stream .But such virtio performance can not be accepted also.

Comment 3 Michael S. Tsirkin 2011-06-02 12:26:34 UTC
So this is a duplicate of
https://bugzilla.redhat.com/show_bug.cgi?id=703416
as far as I can tell.

*** This bug has been marked as a duplicate of bug 703416 ***