Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755346Ab2E3Uza (ORCPT ); Wed, 30 May 2012 16:55:30 -0400 Received: from mail-qc0-f174.google.com ([209.85.216.174]:61558 "EHLO mail-qc0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753935Ab2E3Uz3 (ORCPT ); Wed, 30 May 2012 16:55:29 -0400 Date: Wed, 30 May 2012 16:55:24 -0400 From: Konrad Rzeszutek Wilk To: Andrea Arcangeli Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Hillf Danton , Dan Smith , Peter Zijlstra , Linus Torvalds , Andrew Morton , Thomas Gleixner , Ingo Molnar , Paul Turner , Suresh Siddha , Mike Galbraith , "Paul E. McKenney" , Lai Jiangshan , Bharata B Rao , Lee Schermerhorn , Rik van Riel , Johannes Weiner , Srivatsa Vaddagiri , Christoph Lameter Subject: Re: [PATCH 18/35] autonuma: alloc/free/init sched_autonuma Message-ID: <20120530205523.GD30148@localhost.localdomain> References: <1337965359-29725-1-git-send-email-aarcange@redhat.com> <1337965359-29725-19-git-send-email-aarcange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1337965359-29725-19-git-send-email-aarcange@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3210 Lines: 99 On Fri, May 25, 2012 at 07:02:22PM +0200, Andrea Arcangeli wrote: > This is where the dynamically allocated sched_autonuma structure is > being handled. > > The reason for keeping this outside of the task_struct besides not > using too much kernel stack, is to only allocate it on NUMA > hardware. So the not NUMA hardware only pays the memory of a pointer > in the kernel stack (which remains NULL at all times in that case). > > If the kernel is compiled with CONFIG_AUTONUMA=n, not even the pointer > is allocated on the kernel stack of course. > > Signed-off-by: Andrea Arcangeli > --- > kernel/fork.c | 24 ++++++++++++++---------- > 1 files changed, 14 insertions(+), 10 deletions(-) > > diff --git a/kernel/fork.c b/kernel/fork.c > index 237c34e..d323eb1 100644 > --- a/kernel/fork.c > +++ b/kernel/fork.c > @@ -206,6 +206,7 @@ static void account_kernel_stack(struct thread_info *ti, int account) > void free_task(struct task_struct *tsk) > { > account_kernel_stack(tsk->stack, -1); > + free_sched_autonuma(tsk); > free_thread_info(tsk->stack); > rt_mutex_debug_task_free(tsk); > ftrace_graph_exit_task(tsk); > @@ -260,6 +261,8 @@ void __init fork_init(unsigned long mempages) > /* do the arch specific task caches init */ > arch_task_cache_init(); > > + sched_autonuma_init(); > + > /* > * The default maximum number of threads is set to a safe > * value: the thread structures can take up at most half > @@ -292,21 +295,21 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) > struct thread_info *ti; > unsigned long *stackend; > int node = tsk_fork_get_node(orig); > - int err; > > tsk = alloc_task_struct_node(node); > - if (!tsk) > + if (unlikely(!tsk)) > return NULL; > > ti = alloc_thread_info_node(tsk, node); > - if (!ti) { > - free_task_struct(tsk); > - return NULL; > - } > + if (unlikely(!ti)) Should those "unlikely" have their own commit? Did you run this with the likely/unlikely tracer to confirm that it does give a sppedup? > + goto out_task_struct; > > - err = arch_dup_task_struct(tsk, orig); > - if (err) > - goto out; > + if (unlikely(arch_dup_task_struct(tsk, orig))) > + goto out_thread_info; > + > + if (unlikely(alloc_sched_autonuma(tsk, orig, node))) > + /* free_thread_info() undoes arch_dup_task_struct() too */ > + goto out_thread_info; > > tsk->stack = ti; > > @@ -334,8 +337,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) > > return tsk; > > -out: > +out_thread_info: > free_thread_info(ti); > +out_task_struct: > free_task_struct(tsk); > return NULL; > } > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ > Don't email: email@kvack.org > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/