Re: 2.6.5-rc3-mm4 x86_64 sched domains patch

From: Darren Hart
Date: Wed Apr 14 2004 - 12:27:11 EST


On Wed, 2004-04-14 at 06:44, Andi Kleen wrote:
> On Thu, 08 Apr 2004 16:22:09 -0700
> Darren Hart <dvhltc@xxxxxxxxxx> wrote:
> > This patch is intended as a quick fix for the x86_64 problem, and
>
> Ingo's latest tweaks seemed to already cure STREAM, but some more
> tuning is probably a good idea agreed.
> ...
> The patch doesn't apply against 2.6.5-mm5 anymore. Can you generate a new patch?
> I will test it then.

Find below the patch updated for akpm's 2.6.5-mm5-1.bz2 patch. As with
the previous patch I verified it works properly on a 4 node, 16 CPU
NUMA-Q. Please test both CONFIG_SCHED_NUMA=n (the improved case,
default) and CONFIG_SCHED_NUMA=y (pre-patch equivalent) on x86_64, and
thanks!

>
> Also it will need merging with the patch that adds SMT support for IA32e machines
> on x86-64.

Where is this patch?

-- Darren





diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/arch/alpha/Kconfig linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/alpha/Kconfig
--- linux-2.6.5-mm5/arch/alpha/Kconfig 2004-04-03 19:37:40.000000000 -0800
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/alpha/Kconfig 2004-04-14 09:39:40.000000000 -0700
@@ -519,6 +519,14 @@ config NUMA
Access). This option is for configuring high-end multiprocessor
server machines. If in doubt, say N.

+config SCHED_NUMA
+ bool "Two level sched domains"
+ depends on NUMA
+ default y
+ help
+ Enable two level sched domains hierarchy.
+ Say Y if unsure.
+
# LARGE_VMALLOC is racy, if you *really* need it then fix it first
config ALPHA_LARGE_VMALLOC
bool
diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/arch/i386/Kconfig linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/i386/Kconfig
--- linux-2.6.5-mm5/arch/i386/Kconfig 2004-04-14 09:37:40.000000000 -0700
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/i386/Kconfig 2004-04-14 09:39:40.000000000 -0700
@@ -724,6 +724,14 @@ config NUMA
default n if X86_PC
default y if (X86_NUMAQ || X86_SUMMIT)

+config SCHED_NUMA
+ bool "Two level sched domains"
+ depends on NUMA
+ default y
+ help
+ Enable two level sched domains hierarchy.
+ Say Y if unsure.
+
# Need comments to help the hapless user trying to turn on NUMA support
comment "NUMA (NUMA-Q) requires SMP, 64GB highmem support"
depends on X86_NUMAQ && (!HIGHMEM64G || !SMP)
diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/arch/ia64/Kconfig linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/ia64/Kconfig
--- linux-2.6.5-mm5/arch/ia64/Kconfig 2004-04-14 09:37:41.000000000 -0700
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/ia64/Kconfig 2004-04-14 09:39:40.000000000 -0700
@@ -172,6 +172,14 @@ config NUMA
Access). This option is for configuring high-end multiprocessor
server systems. If in doubt, say N.

+config SCHED_NUMA
+ bool "Two level sched domains"
+ depends on NUMA
+ default y
+ help
+ Enable two level sched domains hierarchy.
+ Say Y if unsure.
+
config VIRTUAL_MEM_MAP
bool "Virtual mem map"
default y if !IA64_HP_SIM
diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/arch/mips/Kconfig linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/mips/Kconfig
--- linux-2.6.5-mm5/arch/mips/Kconfig 2004-04-03 19:37:06.000000000 -0800
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/mips/Kconfig 2004-04-14 09:39:40.000000000 -0700
@@ -337,6 +337,14 @@ config NUMA
Access). This option is for configuring high-end multiprocessor
server machines. If in doubt, say N.

+config SCHED_NUMA
+ bool "Two level sched domains"
+ depends on NUMA
+ default y
+ help
+ Enable two level sched domains hierarchy.
+ Say Y if unsure.
+
config MAPPED_KERNEL
bool "Mapped kernel support"
depends on SGI_IP27
diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/arch/ppc64/Kconfig linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/ppc64/Kconfig
--- linux-2.6.5-mm5/arch/ppc64/Kconfig 2004-04-14 09:37:43.000000000 -0700
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/ppc64/Kconfig 2004-04-14 09:39:40.000000000 -0700
@@ -173,6 +173,14 @@ config NUMA
bool "NUMA support"
depends on DISCONTIGMEM

+config SCHED_NUMA
+ bool "Two level sched domains"
+ depends on NUMA
+ default y
+ help
+ Enable two level sched domains hierarchy.
+ Say Y if unsure.
+
config SCHED_SMT
bool "SMT (Hyperthreading) scheduler support"
depends on SMP
diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/arch/x86_64/Kconfig linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/x86_64/Kconfig
--- linux-2.6.5-mm5/arch/x86_64/Kconfig 2004-04-14 09:37:46.000000000 -0700
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/arch/x86_64/Kconfig 2004-04-14 09:39:40.000000000 -0700
@@ -261,6 +261,14 @@ config NUMA
depends on K8_NUMA
default y

+config SCHED_NUMA
+ bool "Two level sched domains"
+ depends on NUMA
+ default n
+ help
+ Enable two level sched domains hierarchy.
+ Say N if unsure.
+
config HAVE_DEC_LOCK
bool
depends on SMP
diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/include/linux/sched.h linux-2.6.5-mm5-x86_64_arch_sched_domain/include/linux/sched.h
--- linux-2.6.5-mm5/include/linux/sched.h 2004-04-14 09:38:08.000000000 -0700
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/include/linux/sched.h 2004-04-14 09:41:35.000000000 -0700
@@ -670,7 +670,7 @@ struct sched_domain {
.nr_balance_failed = 0, \
}

-#ifdef CONFIG_NUMA
+#ifdef CONFIG_SCHED_NUMA
/* Common values for NUMA nodes */
#define SD_NODE_INIT (struct sched_domain) { \
.span = CPU_MASK_NONE, \
diff -aurpN -X /home/dvhart/.diff.exclude linux-2.6.5-mm5/kernel/sched.c linux-2.6.5-mm5-x86_64_arch_sched_domain/kernel/sched.c
--- linux-2.6.5-mm5/kernel/sched.c 2004-04-14 09:38:09.000000000 -0700
+++ linux-2.6.5-mm5-x86_64_arch_sched_domain/kernel/sched.c 2004-04-14 09:45:34.000000000 -0700
@@ -45,7 +45,7 @@
#include <linux/seq_file.h>
#include <linux/times.h>

-#ifdef CONFIG_NUMA
+#ifdef CONFIG_SCHED_NUMA
#define cpu_to_node_mask(cpu) node_to_cpumask(cpu_to_node(cpu))
#else
#define cpu_to_node_mask(cpu) (cpu_online_map)
@@ -3735,7 +3735,7 @@ extern void __init arch_init_sched_domai
#else
static struct sched_group sched_group_cpus[NR_CPUS];
static DEFINE_PER_CPU(struct sched_domain, cpu_domains);
-#ifdef CONFIG_NUMA
+#ifdef CONFIG_SCHED_NUMA
static struct sched_group sched_group_nodes[MAX_NUMNODES];
static DEFINE_PER_CPU(struct sched_domain, node_domains);
static void __init arch_init_sched_domains(void)
@@ -3806,7 +3806,7 @@ static void __init arch_init_sched_domai
}
}

-#else /* !CONFIG_NUMA */
+#else /* !CONFIG_SCHED_NUMA */
static void __init arch_init_sched_domains(void)
{
int i;
@@ -3845,7 +3845,7 @@ static void __init arch_init_sched_domai
}
}

-#endif /* CONFIG_NUMA */
+#endif /* CONFIG_SCHED_NUMA */
#endif /* ARCH_HAS_SCHED_DOMAIN */

#define SCHED_DOMAIN_DEBUG


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