Hello,
The test settings are:
server: iperf -s -u
client: iperf -c 192.168.1.2 -u -P 4 -t 10 -b 600M
iperf is ver. 2.0.5 which is the latest version to my knowledge,
and I cross-compiled it on our arch.
I found that some threads are not completed and hang there for ever.
I looked into this issue. I found that those iperf client
threads hang at Condition_Wait( &ReportDoneCond ).
The issue seems to be due to some condition variables are
not locked so there are race conditions.
I made a quick fix (see the following patch). The issue is now gone.
Thanks,
Paul
--- Reporter.c.ori 2012-04-12 16:43:05.000000000 +0800
+++ Reporter.c 2012-04-13 10:09:23.000000000 +0800
@@ -339,7 +339,9 @@
// item
while ( index == 0 ) {
Condition_Signal( &ReportCond );
+ Condition_Lock( ReportDoneCond );
Condition_Wait( &ReportDoneCond );
+ Condition_Unlock( ReportDoneCond );
index = agent->reporterindex;
}
agent->agentindex = 0;
@@ -347,7 +349,9 @@
// Need to make sure that reporter is not about to be "lapped"
while ( index - 1 == agent->agentindex ) {
Condition_Signal( &ReportCond );
+ Condition_Lock( ReportDoneCond );
Condition_Wait( &ReportDoneCond );
+ Condition_Unlock( ReportDoneCond );
index = agent->reporterindex;
}
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Iperf-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/iperf-users