Bug 716371

Summary: e1000:happened with multi nics:Execute multiple netperf clients caused system call interrupted
Product: Red Hat Enterprise Linux 5 Reporter: Golita Yue <gyue>
Component: kvmAssignee: jason wang <jasowang>
Status: CLOSED WONTFIX QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 5.7CC: fyang, juzhang, michen, mkenneth, rhod, rick.jones2, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 713063 Environment:
Last Closed: 2011-07-31 13:42:26 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: 713063    
Bug Blocks: 580948    

Description Golita Yue 2011-06-24 08:36:33 UTC
+++ This bug was initially created as a clone of Bug #713063 +++

Description of problem:
When I run multiple netperf clients on host, they connect with the
netperf-server in guest.
clients fail to execute cmds and output "interrupted system call"
Only happened with multi nics.

Version-Release number of selected component (if applicable):
kvm-83-237.el5
2.6.18-268.el5
Also can hit this problem in
kvm-83-235.el5
2.6.18-265.el5
so, not a regression.

How reproducible:
40%

Steps to Reproduce:
1. boot up a guest with multi nics (e1000)
2. setup and launch netperf server in guest
guest)# ./netserver
3. setup and launch multiple netperf client in host.
host)# while true;do ./netperf -t TCP_STREAM -H $guest_ip ;echo Tcp:$?;done &
host)# while true;do ./netperf -t UDP_STREAM -H $guest_ip;echo Udp:$?;done &
host)# while true;do ./netperf -H $guest_ip -- -m 200; echo $? Other:$?;done &
  
Actual results:
netperf clients outputted:
interrupted system call 
netperf remote error 4


Expected results:
netperf commands completed. 

Additional info:

--- Additional comment from rhod on 2011-06-21 13:37:31 EDT ---

Jason,
is it related to https://bugzilla.redhat.com/show_bug.cgi?id=704097?

--- Additional comment from jasowang on 2011-06-21 22:44:04 EDT ---

(In reply to comment #1)
> Jason,
> is it related to https://bugzilla.redhat.com/show_bug.cgi?id=704097?

Yes, looks related. 8193 also lacks the check of buffer availability before receiving packets. I can try this.

--- Additional comment from fyang on 2011-06-24 02:11:12 EDT ---

In step 1, I start guest with 4 nics.
In step 3, launch 4 netperf client in host.  one netperf client per guest nic.

Comment 1 Rick Jones 2011-06-24 22:32:50 UTC
Just a comment about (ab)use of the UDP_STREAM test.  There is no flow-control in UDP and a netperf UDP_STREAM test does not add any of its own, so those UDP_STREAM tests will no doubt be flooding the interconnect(s) with traffic. 

This may very well blow the timing so out of the water that netperf will not be able to cope.

Looking at the code in src/nettest_bsd.c the "netperf remote error" is printing the value of response->serv_errno.  There is no explicit setting of that to a value of four, which then implies that is an actual errno number from the system running netserver.  In this case, where netperf and netserver systems are probably running the same/similar OS, that netperf attempts to do a perror() with that value is probably ok, but may not be the most "robust" thing to do, so in general, it is best to lookup the errno in the context of the system on which netserver was running.  (I can never recall how standardized errno values are).

Also, I take it that is a "by hand" reciting of what netperf emitted rather than a direct cut-and-paste as there is a colon after netperf in the fprintf() calls in the source code :)

rick jones
mr netperf