linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andries Brouwer <aebr@win.tue.nl>
To: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@transmeta.com>,
	William Lee Irwin III <wli@holomorphy.com>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [patch] lockless, scalable get_pid(), for_each_process() elimination, 2.5.35-BK
Date: Wed, 18 Sep 2002 20:28:18 +0200	[thread overview]
Message-ID: <20020918182818.GA14629@win.tue.nl> (raw)
In-Reply-To: <Pine.LNX.4.44.0209181452050.19672-100000@localhost.localdomain>

On Wed, Sep 18, 2002 at 02:56:19PM +0200, Ingo Molnar wrote:
> On Wed, 18 Sep 2002, Andries Brouwer wrote:
> 
> > I still don't understand the current obsession with this stuff. It is
> > easy to have pid_max 2^30 and a fast algorithm that does not take any
> > more kernel space.
> 
> it's only an if(unlikely()) branch in a 1:4096 slowpath to handle this, so
> why not? If it couldnt be done sanely then i wouldnt argue about this, but
> look at the code, it can be done cleanly and with very low cost.

In my opinion you are doing something that is entirely superfluous,
and at nonzero cost.

> > It seems to me you are first creating an unrealistic and unfavorable
> > situation (put pid_max at some artificially low value, [...]
> 
> we want the default to be low, so that compatibility with the older SysV
> APIs is preserved.

Do you know of any programs that would be affected?
Last I did a grep on all source rpm's in some SuSE or RedHat distribution,
there was not a single program.

> Also, why use a 128K bitmap to handle 1 million PIDs on
> a system that has at most 1000 tasks running? I'd rather use an algorithm
> that scales well from low pid_max to a larger pid_max as well.

Yes indeed. So I advertize not using any bitmap at all.

> > Please leave pid_max large.
> 
> why? For most desktop systems even 32K PIDs is probably too high. A large
> pid_max only increases the RAM footprint. (well not under the current
> allocation scheme but still.)

I have said it so many times, but let me repeat.
A large pid_max makes your system faster.

Collisions cost time. In a large space there are few collisions.

Now suppose you start 10^4 tasks at boot time and after 10^9 forks
you have to come back. Do you necessarily have to come across this
bunch of 10^4 tasks that are still sitting there?
That would be unfortunate.

But, you see, there are really many ways to avoid that.

Let me just invent one on the spot. Pick a random generator with
period 2^128 - 1 and each time you want a new pid pick the last
30 bits of its output. Why is that nice? Next time you come
around to the same pid, pids that were close together first
are far apart the second time.

You see, no data structures, no bitmaps, and very good behaviour
on average, even after 10^9 forks.

But there are lots of other solutions.

I would prefer to avoid talking about specific solutions as long as
this is not a problem that occurs in practice (with 30-bit pids).
I just want to stress: the larger the pid space, the faster your
computer forks.

Andries

  parent reply	other threads:[~2002-09-18 18:23 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-09-17 23:06 [patch] lockless, scalable get_pid(), for_each_process() elimination, 2.5.35-BK Ingo Molnar
2002-09-18  0:22 ` William Lee Irwin III
2002-09-18  1:27   ` David S. Miller
2002-09-18  2:22     ` William Lee Irwin III
2002-09-18 10:11   ` Ingo Molnar
2002-09-18 14:28     ` William Lee Irwin III
2002-09-18 12:32 ` Andries Brouwer
2002-09-18 12:56   ` Ingo Molnar
2002-09-18 16:17     ` Linus Torvalds
2002-09-18 16:46       ` Ingo Molnar
2002-09-18 16:57       ` Ingo Molnar
2002-09-18 18:28     ` Andries Brouwer [this message]
2002-09-18 18:27       ` William Lee Irwin III
2002-09-18 19:00       ` Ingo Molnar
2002-09-18 20:11         ` Andries Brouwer
2002-09-18 20:29           ` William Lee Irwin III
2002-09-18 21:15             ` Andries Brouwer
2002-09-19  3:05               ` Ingo Molnar
2002-09-19 13:11                 ` Andries Brouwer
2002-09-21 12:56                   ` quadratic behaviour Andries Brouwer
2002-09-21 17:06                     ` Linus Torvalds
2002-09-21 17:35                       ` William Lee Irwin III
2002-09-21 17:49                       ` Ingo Molnar
2002-09-21 17:46                         ` William Lee Irwin III
2002-09-18 14:49   ` [patch] lockless, scalable get_pid(), for_each_process() elimination, 2.5.35-BK William Lee Irwin III
2002-09-18 15:01     ` Cort Dougan
2002-09-18 15:33       ` Ingo Molnar
2002-09-18 15:31         ` yodaiken
2002-09-18 15:35         ` Cort Dougan
2002-09-18 15:37       ` Rik van Riel
2002-09-18 15:50       ` Alan Cox
2002-09-18 18:31     ` Andries Brouwer
2002-09-18 18:32       ` William Lee Irwin III
2002-09-18 16:15   ` Linus Torvalds
2002-09-18 16:32     ` Rik van Riel
2002-09-18 16:48       ` Linus Torvalds
2002-09-18 17:31         ` Ingo Molnar
2002-09-18 21:46         ` Rogier Wolff
2002-09-18 16:41     ` Ingo Molnar
2002-09-18 16:45       ` William Lee Irwin III
2002-09-18 16:59         ` Linus Torvalds
2002-09-18 17:36         ` Ingo Molnar
2002-09-18 17:36           ` William Lee Irwin III
2002-09-18 17:46             ` Linus Torvalds
2002-09-18 17:47               ` William Lee Irwin III
2002-09-18 17:59             ` Ingo Molnar
2002-09-18 17:50               ` William Lee Irwin III
2002-09-18 18:07                 ` Ingo Molnar
2002-09-19 19:27           ` Martin Mares
2002-09-17 15:31             ` Pavel Machek
2002-09-19 20:07             ` Richard B. Johnson
2002-09-18 16:46     ` Rik van Riel
2002-09-18 16:53       ` Linus Torvalds
2002-09-18 17:00         ` Rik van Riel
2002-09-18 17:16           ` Linus Torvalds
2002-09-18 17:28             ` Ingo Molnar
2002-09-18 17:38           ` Ingo Molnar
2002-09-18 17:24         ` Ingo Molnar
2002-09-18 17:30           ` Linus Torvalds
2002-09-18 17:35             ` Cort Dougan
2002-09-18 17:43               ` Rik van Riel
2002-09-18 17:48               ` Martin J. Bligh
2002-09-18 17:57                 ` Cort Dougan
2002-09-18 18:08                   ` Martin J. Bligh
2002-09-18 18:28                     ` Ingo Molnar
2002-09-18 18:33                       ` Linus Torvalds
2002-09-18 18:51                         ` Ingo Molnar
2002-09-18 18:56                           ` interruptible_sleep_on_timeout() and signals Imran Badr
2002-09-19  7:16                             ` David Woodhouse
2002-09-18 19:53                       ` [patch] lockless, scalable get_pid(), for_each_process() elimination, 2.5.35-BK Martin J. Bligh
2002-09-22  0:34                   ` Andrea Arcangeli
2002-09-22 10:02                     ` Ingo Molnar
2002-09-22 15:27                       ` Andrea Arcangeli
2002-09-18 18:02               ` Ingo Molnar
2002-09-18 17:58                 ` Cort Dougan
2002-09-18 18:14                   ` Ingo Molnar
2002-09-18 17:54             ` Alan Cox
2002-09-18 17:54             ` Ingo Molnar
2002-09-18 18:00               ` yodaiken
2002-09-18 18:21                 ` Ingo Molnar
2002-09-18 18:33                   ` yodaiken
2002-09-18 16:55     ` Alan Cox

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=20020918182818.GA14629@win.tue.nl \
    --to=aebr@win.tue.nl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=torvalds@transmeta.com \
    --cc=wli@holomorphy.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).