All of lore.kernel.org
 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: 78+ 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
2007-05-27 19:25   ` b44: regression in 2.6.22 (resend) Maximilian Engelhardt
2007-05-27 19:25     ` Maximilian Engelhardt
2007-05-27 19:45     ` Michael Buesch
2007-05-27 19:45       ` Michael Buesch
2007-05-27 20:36       ` Maximilian Engelhardt
2007-05-27 20:36         ` Maximilian Engelhardt
2007-05-27 20:46         ` Michael Buesch
2007-05-27 20:46           ` Michael Buesch
2007-05-27 21:46           ` Maximilian Engelhardt
2007-05-27 21:46             ` Maximilian Engelhardt
2007-05-27 21:13     ` Michael Buesch
2007-05-27 21:13       ` Michael Buesch
2007-05-27 21:16       ` Michael Buesch
2007-05-27 21:50         ` Maximilian Engelhardt
2007-05-27 21:50           ` Maximilian Engelhardt
2007-05-27 22:15       ` Maximilian Engelhardt
2007-05-27 22:15         ` Maximilian Engelhardt
2007-05-28  0:24         ` Michael Buesch
2007-05-28  0:40           ` Maximilian Engelhardt
2007-05-28  0:40             ` Maximilian Engelhardt
2007-05-28 10:16             ` Michael Buesch
2007-05-28 10:16               ` Michael Buesch
2007-05-28 14:09               ` Maximilian Engelhardt
2007-05-28 14:09                 ` Maximilian Engelhardt
2007-05-28 15:14                 ` Michael Buesch
2007-05-28 15:14                   ` Michael Buesch
2007-05-28 15:32                   ` Thomas Gleixner
2007-05-28 15:32                     ` Thomas Gleixner
2007-05-28 15:43                     ` Michael Buesch
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
2007-05-29 18:28                               ` Maximilian Engelhardt
2007-05-29 13:58                           ` Gary Zambrano
2007-05-29 13:58                             ` Gary Zambrano
2007-05-29 17:23                             ` Maximilian Engelhardt
2007-05-29 17:23                               ` Maximilian Engelhardt
2007-06-03 16:26                         ` Maximilian Engelhardt
2007-06-04  6:39                           ` Thomas Gleixner
2007-06-04  6:39                             ` Thomas Gleixner
2007-06-04 16:09                             ` Stephen Hemminger
2007-06-04 16:09                               ` Stephen Hemminger
2007-06-04 16:35                               ` Thomas Gleixner
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: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: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-06-04 20:52                                               ` Maximilian Engelhardt
2007-05-28 10:49             ` b44: regression in 2.6.22 (resend) Michael Buesch
2007-05-28 14:12               ` Maximilian Engelhardt
2007-05-28 14:12                 ` Maximilian Engelhardt
2007-05-28 14:55                 ` Michael Buesch
2007-05-29 14:14                   ` Gary Zambrano
2007-05-29 20:45                     ` Michael Buesch
2007-05-29 20:45                       ` Michael Buesch
2007-05-29 21:01                       ` Stephen Hemminger
2007-05-29 21:01                         ` Stephen Hemminger
2007-05-29 21:05                       ` Gary Zambrano
2007-05-29 21:05                         ` Gary Zambrano
2007-05-29 22:39                         ` Jeff Garzik
2007-05-29 22:39                           ` Jeff Garzik
2007-05-29 21:36                           ` Gary Zambrano
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.