From: Christoph Lameter on



Acked-by: Christoph Lameter <cl(a)linux-foundation.org>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Andrew Morton on
On Mon, 26 Apr 2010 16:00:41 -0500
Jack Steiner <steiner(a)sgi.com> wrote:

> We have observed several workloads running on multi-node systems where
> memory is assigned unevenly across the nodes in the system. There are
> numerous reasons for this but one is the round-robin rotor in
> cpuset_mem_spread_node().
>
> For example, a simple test that writes a multi-page file will allocate pages
> on nodes 0 2 4 6 ... Odd nodes are skipped. (Sometimes it allocates on
> odd nodes & skips even nodes).
>
> An example is shown below. The program "lfile" writes a file consisting of
> 10 pages. The program then mmaps the file & uses get_mempolicy(...,
> MPOL_F_NODE) to determine the nodes where the file pages were allocated.
> The output is shown below:
>
> # ./lfile
> allocated on nodes: 2 4 6 0 1 2 6 0 2
>
>
>
> There is a single rotor that is used for allocating both file pages & slab
> pages. Writing the file allocates both a data page & a slab page
> (buffer_head). This advances the RR rotor 2 nodes for each page
> allocated.
>
> A quick confirmation seems to confirm this is the cause of the uneven
> allocation:
>
> # echo 0 >/dev/cpuset/memory_spread_slab
> # ./lfile
> allocated on nodes: 6 7 8 9 0 1 2 3 4 5
>
>
> This patch introduces a second rotor that is used for slab allocations.
>
> include/linux/cpuset.h | 6 ++++++
> include/linux/sched.h | 1 +
> kernel/cpuset.c | 20 ++++++++++++++++----
> mm/slab.c | 2 +-
> 4 files changed, 24 insertions(+), 5 deletions(-)

Why no update to slob and slub?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Christoph Lameter on
On Fri, 30 Apr 2010, Andrew Morton wrote:

> Why no update to slob and slub?

SLUB does not do things like managing object level NUMAness but relies on
the page allocator to spread page size blocks out. It will only use one
rotor and therefore not skip nodes. The SLAB issues are a result of the
way object level NUMA awareness is implemented there.

SLOB also does not do the SLAB thing and defers to the page allocator.



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