public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Petr Tesarik <ptesarik@suse.cz>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Frank Mayhar <fmayhar@google.com>,
	Christoph Lameter <cl@linux-foundation.org>,
	Doug Chapman <doug.chapman@hp.com>,
	mingo@elte.hu, roland@redhat.com, adobriyan@gmail.com,
	akpm@linux-foundation.org,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: regression introduced by - timers: fix itimer/many thread hang
Date: Fri, 21 Nov 2008 19:42:43 +0100	[thread overview]
Message-ID: <200811211942.43848.ptesarik@suse.cz> (raw)
In-Reply-To: <1226053744.7803.5851.camel@twins>

Dne Friday 07 of November 2008 11:29:04 Peter Zijlstra napsal(a):
> (fwiw your email doesn't come across properly, evo refuses to display
> them, there's some mangling of headers which makes it think there's an
> attachment)
>
> On Thu, 2008-11-06 at 15:52 -0800, Frank Mayhar wrote:
> > On Thu, 2008-11-06 at 16:08 +0100, Peter Zijlstra wrote:
> > > On Thu, 2008-11-06 at 09:03 -0600, Christoph Lameter wrote:
> > > > On Thu, 6 Nov 2008, Peter Zijlstra wrote:
> > > > > Also, you just introduced per-cpu allocations for each
> > > > > thread-group, while Christoph is reworking the per-cpu allocator,
> > > > > with one unfortunate side-effect - its going to have a limited size
> > > > > pool. Therefore this will limit the number of thread-groups we can
> > > > > have.
> > > >
> > > > Patches exist that implement a dynamically growable percpu pool
> > > > (using virtual mappings though). If the cost of the additional
> > > > complexity / overhead is justifiable then we can make the percpu pool
> > > > dynamically extendable.
> > >
> > > Right, but I don't think the patch under consideration will fly anyway,
> > > doing a for_each_possible_cpu() loop on every tick on all cpus isn't
> > > really healthy, even for moderate sized machines.
> >
> > I personally think that you're overstating this.  First, the current
> > implementation walks all threads for each tick, which is simply not
> > scalable and results in soft lockups with large numbers of threads.
> > This patch fixes a real bug.  Second, this only happens "on every tick"
> > for processes that have more than one thread _and_ that use posix
> > interval timers.  Roland and I went to some effort to keep loops like
> > the on you're referring to out of the common paths.
> >
> > In any event, while this particular implementation may not be optimal,
> > at least it's _right_.  Whatever happened to "make it right, then make
> > it fast?"
>
> Well, I'm not thinking you did it right ;-)
>
> While I agree that the linear loop is sub-optimal, but it only really
> becomes a problem when you have hundreds or thousands of threads in your
> application, which I'll argue to be insane anyway.

This is just not true. I've seen a very real example of a lockup with a very 
sane number of threads (one per CPU), but on a very large machine (1024 CPUs 
IIRC). The application set per-process CPU profiling with an interval of 1 
tick, which translates to 1024 timers firing off with each tick...

Well, yes, that was broken, too, but that's the way one quite popular FORTRAN 
compiler works...

Petr

  parent reply	other threads:[~2008-11-21 18:41 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1224694989.8431.23.camel@oberon>
     [not found] ` <1225132746.14792.13.camel@bobble.smo.corp.google.com>
     [not found]   ` <1225219114.24204.37.camel@oberon>
2008-11-06  1:58     ` regression introduced by - timers: fix itimer/many thread hang Frank Mayhar
2008-11-06 11:03       ` Peter Zijlstra
2008-11-06 15:03         ` Christoph Lameter
2008-11-06 15:08           ` Peter Zijlstra
2008-11-06 16:08             ` Christoph Lameter
2008-11-06 23:52             ` Frank Mayhar
2008-11-07  8:35               ` Ingo Molnar
2008-11-07 10:29               ` Peter Zijlstra
2008-11-07 18:10                 ` Frank Mayhar
2008-11-07 20:26                   ` Peter Zijlstra
2008-11-10 14:38                     ` Christoph Lameter
2008-11-10 14:42                       ` Peter Zijlstra
2008-11-10 15:41                         ` Christoph Lameter
2008-11-10 18:00                         ` Frank Mayhar
2008-11-14  2:42                           ` Roland McGrath
2008-11-14 16:41                             ` Oleg Nesterov
2008-11-17 14:36                               ` Oleg Nesterov
2008-11-17 18:16                                 ` Roland McGrath
2008-11-17 22:18                                   ` Oleg Nesterov
2008-11-17 21:49                                     ` Roland McGrath
2008-11-11  0:20                         ` Ingo Oeser
2008-11-11 13:58                           ` Christoph Lameter
2008-11-21 18:42                 ` Petr Tesarik [this message]
2008-11-21 19:26                   ` Frank Mayhar
2008-11-23 14:24                   ` Peter Zijlstra
2008-11-24  8:46                     ` Petr Tesarik
2008-11-24  9:33                       ` Peter Zijlstra
2008-11-24 12:32                         ` Petr Tesarik
2008-11-24 12:59                           ` Peter Zijlstra
2008-11-24 16:06                             ` Peter Zijlstra
2008-11-06 16:31         ` [PATCH] revert: " Peter Zijlstra
2008-11-06 21:44           ` Ingo Molnar
2008-11-06 21:53             ` Christoph Lameter
2008-11-07 10:19               ` Peter Zijlstra
2008-11-13 16:00           ` Doug Chapman
2008-11-13 16:08             ` Ingo Molnar
2008-11-14 14:10               ` Doug Chapman
     [not found] <20081105191211.c0316b94.akpm@linux-foundation.org>
2008-11-06 12:59 ` regression introduced by - " Oleg Nesterov

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=200811211942.43848.ptesarik@suse.cz \
    --to=ptesarik@suse.cz \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux-foundation.org \
    --cc=doug.chapman@hp.com \
    --cc=fmayhar@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=roland@redhat.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