netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Hemminger <shemminger@linux-foundation.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Ulrich Drepper <drepper@gmail.com>,
	Maximilian Engelhardt <maxi@daemonizer.de>,
	Michael Buesch <mb@bu3sch.de>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
	Jeff Garzik <jgarzik@pobox.com>,
	Gary Zambrano <zambrano@broadcom.com>,
	netdev@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@elte.hu>
Subject: Re: iperf: performance regression (was b44 driver problem?)
Date: Mon, 4 Jun 2007 10:51:58 -0700	[thread overview]
Message-ID: <20070604105158.31ede1f5@freepuppy> (raw)
In-Reply-To: <1180978368.4404.29.camel@chaos>

On Mon, 04 Jun 2007 19:32:48 +0200
Thomas Gleixner <tglx@linutronix.de> wrote:

> On Mon, 2007-06-04 at 09:59 -0700, Stephen Hemminger wrote:
> > > > gettimeofday({1180973726, 982754}, NULL) = 0
> > > > recv(4, "\0\0\0\0\0\0\0\1\0\0\23\211\0\0\0\0\0\0\0\0\377\377\364"..., 8192, 0) = 8192
> > > > gettimeofday({1180973726, 983790}, NULL) = 0
> > > 
> > > Well, gettimeofday() is not affected by the highres code, but
> > > 
> > > > nanosleep({0, 0}, NULL) = 0
> > > > nanosleep({0, 0}, NULL) = 0
> > > 
> > > is. The nanosleep call with a relative timeout of 0 returns immediately
> > > with highres enabled, while it sleeps at least until the next tick
> > > arrives when highres is off. Are there more of those stupid sleeps in
> > > the code ?
> > 
> > GLIBC pthread_mutex does it, YES it is a problem!
> > Looks like the old behavior is required for ABI compatibility.
> >
> > iperf server has several threads. One thread is using pthread_mutex_lock
> > to wait for the other thread.  It looks like pthread_mutex_lock is using
> > nanosleep as yield().
> 
> 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.

--- iperf-2.0.2/compat/Thread.c.orig	2005-05-03 08:15:51.000000000 -0700
+++ iperf-2.0.2/compat/Thread.c	2007-06-04 10:54:21.000000000 -0700
@@ -405,9 +405,13 @@
 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
+
+#if defined( _POSIX_PRIORITY_SCHEDULING )
+    sched_yield();
+#else
     usleep( 0 );
+#endif
+
 #else // Win32
     SwitchToThread( );
 #endif




-- 
Stephen Hemminger <shemminger@linux-foundation.org>

  reply	other threads:[~2007-06-04 18:06 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-26  0:24 b44: regression in 2.6.22 Stephen Hemminger
2007-05-26  3:51 ` Gary Zambrano
2007-05-26 17:01 ` Michael Buesch
     [not found]   ` <200705261901.18110.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-27 19:25     ` b44: regression in 2.6.22 (resend) Maximilian Engelhardt
     [not found]       ` <200705272125.25506.maxi-OwNUvPV92VfddJNmlsFzeA@public.gmane.org>
2007-05-27 19:45         ` Michael Buesch
     [not found]           ` <200705272145.00796.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-27 20:36             ` Maximilian Engelhardt
     [not found]               ` <200705272236.42628.maxi-OwNUvPV92VfddJNmlsFzeA@public.gmane.org>
2007-05-27 20:46                 ` Michael Buesch
     [not found]                   ` <200705272246.16960.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-27 21:46                     ` Maximilian Engelhardt
2007-05-27 21:13         ` Michael Buesch
2007-05-27 21:16           ` Michael Buesch
     [not found]             ` <200705272316.07338.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-27 21:50               ` Maximilian Engelhardt
     [not found]           ` <200705272313.33129.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-27 22:15             ` Maximilian Engelhardt
2007-05-28  0:24               ` Michael Buesch
     [not found]                 ` <200705280224.40506.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-28  0:40                   ` Maximilian Engelhardt
     [not found]                     ` <200705280240.17910.maxi-OwNUvPV92VfddJNmlsFzeA@public.gmane.org>
2007-05-28 10:16                       ` Michael Buesch
     [not found]                         ` <200705281216.51690.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-28 14:09                           ` Maximilian Engelhardt
     [not found]                             ` <200705281609.49859.maxi-OwNUvPV92VfddJNmlsFzeA@public.gmane.org>
2007-05-28 15:14                               ` Michael Buesch
     [not found]                                 ` <200705281714.25841.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-28 15:32                                   ` Thomas Gleixner
2007-05-28 15:43                                     ` Michael Buesch
2007-05-28 17:44                                     ` Maximilian Engelhardt
2007-05-28 19:23                                       ` Thomas Gleixner
2007-05-28 20:55                                         ` Maximilian Engelhardt
2007-05-28 21:45                                           ` Thomas Gleixner
2007-05-29 18:28                                             ` Maximilian Engelhardt
     [not found]                                           ` <200705282255.56490.maxi-OwNUvPV92VfddJNmlsFzeA@public.gmane.org>
2007-05-29 13:58                                             ` Gary Zambrano
     [not found]                                               ` <1180447123.17146.4.camel-opBMJL+S1+nCw/J+WP9nZ0NK2P1VvzQgpWgKQ6/u3Fg@public.gmane.org>
2007-05-29 17:23                                                 ` Maximilian Engelhardt
2007-06-03 16:26                                         ` Maximilian Engelhardt
     [not found]                                           ` <200706031826.06891.maxi-OwNUvPV92VfddJNmlsFzeA@public.gmane.org>
2007-06-04  6:39                                             ` Thomas Gleixner
2007-06-04 16:09                                               ` Stephen Hemminger
2007-06-04 16:35                                                 ` Thomas Gleixner
2007-06-04 16:59                                                   ` iperf: performance regression (was b44 driver problem?) Stephen Hemminger
2007-06-04 17:32                                                     ` Thomas Gleixner
2007-06-04 17:51                                                       ` Stephen Hemminger [this message]
2007-06-04 19:00                                                         ` Thomas Gleixner
2007-06-04 19:26                                                           ` Thomas Gleixner
2007-06-04 19:32                                                         ` Ingo Molnar
2007-06-04 19:47                                                           ` Maximilian Engelhardt
2007-06-04 20:02                                                             ` Stephen Hemminger
2007-06-04 20:52                                                               ` Maximilian Engelhardt
2007-05-28 10:49                     ` b44: regression in 2.6.22 (resend) Michael Buesch
     [not found]                       ` <200705281249.56106.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-28 14:12                         ` Maximilian Engelhardt
2007-05-28 14:55                           ` Michael Buesch
2007-05-29 14:14                             ` Gary Zambrano
     [not found]                               ` <1180448075.17146.12.camel-opBMJL+S1+nCw/J+WP9nZ0NK2P1VvzQgpWgKQ6/u3Fg@public.gmane.org>
2007-05-29 20:45                                 ` Michael Buesch
     [not found]                                   ` <200705292245.22940.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-05-29 21:01                                     ` Stephen Hemminger
2007-05-29 21:05                                     ` Gary Zambrano
     [not found]                                       ` <1180472741.17711.19.camel-opBMJL+S1+nCw/J+WP9nZ0NK2P1VvzQgpWgKQ6/u3Fg@public.gmane.org>
2007-05-29 22:39                                         ` Jeff Garzik
     [not found]                                           ` <465CABA3.10003-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2007-05-29 21:36                                             ` Gary Zambrano
2007-05-30 10:45                                               ` Michael Buesch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070604105158.31ede1f5@freepuppy \
    --to=shemminger@linux-foundation.org \
    --cc=acme@ghostprotocols.net \
    --cc=akpm@linux-foundation.org \
    --cc=drepper@gmail.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=maxi@daemonizer.de \
    --cc=mb@bu3sch.de \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=zambrano@broadcom.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).