Re: [rfc] balance-on-fork NUMA placement

Nick Piggin
2007-08-01T00:21:14Z

On Tue, Jul 31, 2007 at 10:01:14AM +0200, Ingo Molnar wrote:
>
> * Nick Piggin <npiggin@suse.de> wrote:
>
> > This patch uses memory policies to attempt to improve this. It
> > requires that we ask the scheduler to suggest the child's new CPU
> > earlier in the fork, but that is not a fundamental difference.
>
> no fundamental objections, but i think we could simply move sched_fork()
> to the following place:
>
> > @@ -989,10 +990,13 @@ static struct task_struct *copy_process(
> > if (retval)
> > goto fork_out;
> >
> > + cpu = sched_fork_suggest_cpu(clone_flags);
> > + mpol_arg = mpol_prefer_cpu_start(cpu);
> > +
> > retval = -ENOMEM;
> > p = dup_task_struct(current);
> > if (!p)
> > - goto fork_out;
> > + goto fork_mpol;
> >
> > rt_mutex_init_task(p);
>
>
> _after_ the dup_task_struct(). Then change sched_fork() to return a CPU
> number - hence we dont have a separate sched_fork_suggest_cpu()
> initialization function, only one, obvious sched_fork() function.
> Agreed?

That puts task struct, kernel stack, thread info on the wrong node.