Messages in this thread | | | Subject | Re: iperf: performance regression (was b44 driver problem?) | From | Thomas Gleixner <> | Date | Mon, 04 Jun 2007 21:00:47 +0200 |
| |
On Mon, 2007-06-04 at 10:51 -0700, Stephen Hemminger wrote: > > I doubt that. This is in the iperf code itself. > > > > void thread_rest ( void ) { > > #if defined( HAVE_THREAD ) > > #if defined( HAVE_POSIX_THREAD ) > > // TODO add checks for sched_yield or pthread_yield and call that > > // if available > > usleep( 0 ); > > > > ----------^^^^ > > > > It results in a nanosleep({0,0}, NULL) > > > > tglx > > > > Yes, the following patch makes iperf work better than ever. > But are other broken applications going to have same problem. > Sounds like the old "who runs first" fork() problems.
Not really. The fork() "who runs first" problem is nowhere specified.
usleep(0) is well defined:
.... If the value of useconds is 0, then the call has no effect.
So the call into the kernel has been wrong for quite a time.
tglx
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |