Re: init's children list is long and slows reaping children.

From: Oleg Nesterov
Date: Tue Apr 10 2007 - 10:34:23 EST


On 04/10, Ingo Molnar wrote:
>
> * Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote:
>
> > Ingo Molnar <mingo@xxxxxxx> writes:
> >
> > > no. Two _completely separate_ lists.
> > >
> > > i.e. a to-be-reaped task will still be on the main list _too_. The
> > > main list is for all the PID semantics rules. The reap-list is just
> > > for wait4() processing. The two would be completely separate.
> >
> > And what pray tell except for heuristics is the list of children used
> > for?
>
> on a second thought: the p->children list is needed for the whole
> child/parent task tree, which is needed for sys_getppid(). The question
> is, does anything require us to reparent to within the same thread
> group?

No! That is why I suggest (a long ago, in fact) to move ->children into
->signal_struct. When sub-thread forks, we set ->parent = group_leader.
We don't need forget_original_parent() until the last thead exists. This
also simplify do_wait().

However, this breaks the current ->pdeath_signal behaviour. In fact (and
Eric thinks the same) this _fixes_ this behaviour, but may break things.

Oleg.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/