Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-27 Thread Tang Chen
Hi, tj, On 09/27/2015 01:53 AM, Tejun Heo wrote: Hello, Tang. On Sat, Sep 26, 2015 at 05:31:07PM +0800, Tang Chen wrote: @@ -307,13 +307,19 @@ static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, if (nid < 0) nid = numa_node_id(); + if (!node_onli

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-26 Thread Tejun Heo
Hello, Tang. On Sat, Sep 26, 2015 at 05:31:07PM +0800, Tang Chen wrote: > >>@@ -307,13 +307,19 @@ static inline struct page *alloc_pages_node(int nid, > >>gfp_t gfp_mask, > >>if (nid < 0) > >>nid = numa_node_id(); > >>+ if (!node_online(nid)) > >>+ nid = get_near_onlin

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-26 Thread Tang Chen
Hi, Christoph, tj, On 09/11/2015 08:14 AM, Christoph Lameter wrote: On Thu, 10 Sep 2015, Tejun Heo wrote: Why not just update node_data[]->node_zonelist in the first place? Also, what's the synchronization rule here? How are allocators synchronized against node hot [un]plugs? Also, shouldn't

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-26 Thread Tang Chen
Hi, tj On 09/11/2015 03:29 AM, Tejun Heo wrote: Hello, On Thu, Sep 10, 2015 at 12:27:45PM +0800, Tang Chen wrote: diff --git a/include/linux/gfp.h b/include/linux/gfp.h index ad35f30..1a1324f 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -307,13 +307,19 @@ static inline struct

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-10 Thread Christoph Lameter
On Thu, 10 Sep 2015, Tejun Heo wrote: > > Why not just update node_data[]->node_zonelist in the first place? > > Also, what's the synchronization rule here? How are allocators > > synchronized against node hot [un]plugs? > > Also, shouldn't kmalloc_node() or any public allocator fall back > autom

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-10 Thread Tejun Heo
Hello, On Thu, Sep 10, 2015 at 05:02:31PM -0500, Christoph Lameter wrote: > > Also, shouldn't kmalloc_node() or any public allocator fall back > > automatically to a near node w/o GFP_THISNODE? Why is this failing at > > all? I get that cpu id -> node id mapping changing messes up the > > locali

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-10 Thread Christoph Lameter
On Thu, 10 Sep 2015, Tejun Heo wrote: > > Why not just update node_data[]->node_zonelist in the first place? > > Also, what's the synchronization rule here? How are allocators > > synchronized against node hot [un]plugs? > > Also, shouldn't kmalloc_node() or any public allocator fall back > autom

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-10 Thread Tejun Heo
(cc'ing Christoph Lameter) On Thu, Sep 10, 2015 at 03:29:35PM -0400, Tejun Heo wrote: > Hello, > > On Thu, Sep 10, 2015 at 12:27:45PM +0800, Tang Chen wrote: > > diff --git a/include/linux/gfp.h b/include/linux/gfp.h > > index ad35f30..1a1324f 100644 > > --- a/include/linux/gfp.h > > +++ b/includ

Re: [PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-10 Thread Tejun Heo
Hello, On Thu, Sep 10, 2015 at 12:27:45PM +0800, Tang Chen wrote: > diff --git a/include/linux/gfp.h b/include/linux/gfp.h > index ad35f30..1a1324f 100644 > --- a/include/linux/gfp.h > +++ b/include/linux/gfp.h > @@ -307,13 +307,19 @@ static inline struct page *alloc_pages_node(int nid, > gfp_t g

[PATCH v2 3/7] x86, gfp: Cache best near node for memory allocation.

2015-09-09 Thread Tang Chen
From: Gu Zheng In the current kernel, all possible cpus are mapped to the best near online node if they reside in a memory-less node in init_cpu_to_node(). init_cpu_to_node() { .. for_each_possible_cpu(cpu) { .. if (!node_online(node))