Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752016AbaA3A1Z (ORCPT ); Wed, 29 Jan 2014 19:27:25 -0500 Received: from mail-pb0-f41.google.com ([209.85.160.41]:54913 "EHLO mail-pb0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750879AbaA3A1Y (ORCPT ); Wed, 29 Jan 2014 19:27:24 -0500 Date: Wed, 29 Jan 2014 16:27:22 -0800 (PST) From: David Rientjes X-X-Sender: rientjes@chino.kir.corp.google.com To: Christoph Lameter , Eric Dumazet cc: Nishanth Aravamudan , LKML , Anton Blanchard , Andrew Morton , Tejun Heo , Oleg Nesterov , Jan Kara , Thomas Gleixner , Tetsuo Handa , linux-mm@kvack.org, Wanpeng Li , Joonsoo Kim , Ben Herrenschmidt Subject: Re: [PATCH] kthread: ensure locality of task_struct allocations In-Reply-To: Message-ID: References: <20140128183808.GB9315@linux.vnet.ibm.com> User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 29 Jan 2014, Christoph Lameter wrote: > > > diff --git a/kernel/kthread.c b/kernel/kthread.c > > > index b5ae3ee..8573e4e 100644 > > > --- a/kernel/kthread.c > > > +++ b/kernel/kthread.c > > > @@ -217,7 +217,7 @@ int tsk_fork_get_node(struct task_struct *tsk) > > > if (tsk == kthreadd_task) > > > return tsk->pref_node_fork; > > > #endif > > > - return numa_node_id(); > > > + return numa_mem_id(); > > > > I'm wondering why return NUMA_NO_NODE wouldn't have the same effect and > > prefer the local node? > > > > The idea here seems to be that the allocation may occur from a cpu that is > different from where the process will run later on. > Yeah, that makes sense for kthreadd, but I'm wondering why we have to return numa_mem_id() rather than just NUMA_NO_NODE. Sorry for not being specific about doing s/numa_mem_id/NUMA_NO_NODE/ here. That should just turn kmem_cache_alloc_node() into kmem_cache_alloc() and alloc_pages_node() into alloc_pages() for the allocators that use this return value, task_struct and thread_info. If that's not allocating local memory, if possible, and numa_mem_id() magically does, then there's a problem. Eric, did you try this when writing 207205a2ba26 ("kthread: NUMA aware kthread_create_on_node()") or was it always numa_node_id() from the beginning? -- 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/