Patchwork Enable hashdist by default on PowerPC

login
register
mail settings
Submitter Anton Blanchard
Date Feb. 20, 2009, 5:19 a.m.
Message ID <20090220051956.GE32195@kryten>
Download mbox | patch
Permalink /patch/23474/
State Changes Requested, archived
Delegated to: Benjamin Herrenschmidt
Headers show

Comments

Anton Blanchard - Feb. 20, 2009, 5:19 a.m.
Hi David,

> I should probably do this on sparc64 too.
> 
> Why don't we just change this thing to CONFIG_64BIT?

I agree. How does this look?

Anton
--

On PowerPC we allocate large boot time hashes on node 0. This leads to
an imbalance in the free memory, for example on a 64GB box (4 x 16GB
nodes):

Free memory:
Node 0: 97.03%
Node 1: 98.54%
Node 2: 98.42%
Node 3: 98.53%

If we switch to using vmalloc (like ia64 and x86-64) things are more
balanced:

Free memory:
Node 0: 97.53%
Node 1: 98.35%
Node 2: 98.33%
Node 3: 98.33%

For many HPC applications we are limited by the free available memory on
the smallest node, so even though the same amount of memory is used the
better balancing helps.

Since all 64bit NUMA capable architectures should have sufficient
vmalloc space, it makes sense to enable it via CONFIG_64BIT.

Signed-off-by: Anton Blanchard <anton@samba.org>
---
David Miller - Feb. 20, 2009, 8:03 a.m.
From: Anton Blanchard <anton@samba.org>
Date: Fri, 20 Feb 2009 16:19:56 +1100

> 
> Hi David,
> 
> > I should probably do this on sparc64 too.
> > 
> > Why don't we just change this thing to CONFIG_64BIT?
> 
> I agree. How does this look?

Hmmm... my bad, I think you need to keep the CONFIG_NUMA
there too as there is a TLB usage penalty for non-NUMA
systems if you only use CONFIG_64BIT there.

Patch

diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index 95837bf..aa861d5 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -144,10 +144,10 @@  extern void *alloc_large_system_hash(const char *tablename,
 
 #define HASH_EARLY	0x00000001	/* Allocating during early boot? */
 
-/* Only NUMA needs hash distribution.
- * IA64 and x86_64 have sufficient vmalloc space.
+/* Only NUMA needs hash distribution. 64bit NUMA architectures have
+ * sufficient vmalloc space.
  */
-#if defined(CONFIG_NUMA) && (defined(CONFIG_IA64) || defined(CONFIG_X86_64))
+#if defined(CONFIG_64BIT)
 #define HASHDIST_DEFAULT 1
 #else
 #define HASHDIST_DEFAULT 0