From: Robert Love <rml@tech9.net>
To: linux-kernel@vger.kernel.org
Cc: torvalds@transmeta.com
Subject: [PATCH] Configurable NR_CPUS for 2.5.24
Date: 24 Jun 2002 15:06:40 -0400 [thread overview]
Message-ID: <1024945649.2550.7.camel@icbm> (raw)
This is in 2.5-dj now and thus I have gotten a couple emails for a
resync against 2.5 proper... so here we go, live from the Kernel Summit.
This patch implements a CONFIG_NR_CPUS that allows the user to specify a
sane value for NR_CPUS in an effort to save memory and cycles. This is
especially useful for debugging or other work where you have large
per-CPU static structures. It also has a more appreciable benefit now
that hotplug CPUs has more code using NR_CPUS vs smp_num_cpus.
This patch also allows each architecture to specify its own default
NR_CPUS, allowing 64-bit arches to set their default to 64.
We need feedback on use of other-than-default NR_CPUS values (x86 is
well tested) as well as use of the new 64 default on such architectures.
Oh, and to make Tom Rini happy I will accept patches for other
architectures Config.help entries :)
Patch is against 2.5.24.
Robert Love
diff -urN linux-2.5.24/arch/alpha/config.in linux/arch/alpha/config.in
--- linux-2.5.24/arch/alpha/config.in Thu Jun 20 15:53:47 2002
+++ linux/arch/alpha/config.in Thu Jun 20 16:35:45 2002
@@ -232,6 +232,7 @@
if [ "$CONFIG_SMP" = "y" ]; then
define_bool CONFIG_HAVE_DEC_LOCK y
+ int 'Maximum number of CPUs (2-64)' CONFIG_NR_CPUS 64
fi
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
diff -urN linux-2.5.24/arch/i386/Config.help linux/arch/i386/Config.help
--- linux-2.5.24/arch/i386/Config.help Thu Jun 20 15:53:44 2002
+++ linux/arch/i386/Config.help Thu Jun 20 16:35:45 2002
@@ -25,6 +25,14 @@
If you don't know what to do here, say N.
+CONFIG_NR_CPUS
+ This allows you to specify the maximum number of CPUs which this
+ kernel will support. The maximum supported value is 32 and the
+ minimum value which makes sense is 2.
+
+ This is purely to save memory - each supported CPU adds
+ approximately eight kilobytes to the kernel image.
+
CONFIG_PREEMPT
This option reduces the latency of the kernel when reacting to
real-time or interactive events by allowing a low priority process to
diff -urN linux-2.5.24/arch/i386/config.in linux/arch/i386/config.in
--- linux-2.5.24/arch/i386/config.in Thu Jun 20 15:53:49 2002
+++ linux/arch/i386/config.in Thu Jun 20 16:35:45 2002
@@ -165,6 +165,7 @@
define_bool CONFIG_X86_IO_APIC y
fi
else
+ int 'Maximum number of CPUs (2-32)' CONFIG_NR_CPUS 32
bool 'Multiquad NUMA system' CONFIG_MULTIQUAD
fi
diff -urN linux-2.5.24/arch/i386/defconfig linux/arch/i386/defconfig
--- linux-2.5.24/arch/i386/defconfig Thu Jun 20 15:53:45 2002
+++ linux/arch/i386/defconfig Thu Jun 20 16:35:45 2002
@@ -74,6 +74,7 @@
# CONFIG_PREEMPT is not set
# CONFIG_MULTIQUAD is not set
CONFIG_HAVE_DEC_LOCK=y
+CONFIG_NR_CPUS=32
#
# General options
diff -urN linux-2.5.24/arch/ia64/config.in linux/arch/ia64/config.in
--- linux-2.5.24/arch/ia64/config.in Thu Jun 20 15:53:53 2002
+++ linux/arch/ia64/config.in Thu Jun 20 16:35:45 2002
@@ -95,6 +95,10 @@
tristate '/proc/pal support' CONFIG_IA64_PALINFO
tristate '/proc/efi/vars support' CONFIG_EFI_VARS
+if [ "$CONFIG_SMP" = "y" ]; then
+ int 'Maximum number of CPUs (2-64)' CONFIG_NR_CPUS 64
+fi
+
tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
diff -urN linux-2.5.24/arch/ia64/defconfig linux/arch/ia64/defconfig
--- linux-2.5.24/arch/ia64/defconfig Thu Jun 20 15:53:44 2002
+++ linux/arch/ia64/defconfig Thu Jun 20 16:35:45 2002
@@ -61,6 +61,7 @@
CONFIG_EFI_VARS=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
+CONFIG_NR_CPUS=64
#
# ACPI Support
diff -urN linux-2.5.24/arch/mips/config.in linux/arch/mips/config.in
--- linux-2.5.24/arch/mips/config.in Thu Jun 20 15:53:54 2002
+++ linux/arch/mips/config.in Thu Jun 20 16:35:45 2002
@@ -500,6 +500,8 @@
bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
if [ "$CONFIG_SMP" != "y" ]; then
bool 'Run uncached' CONFIG_MIPS_UNCACHED
+else
+ int 'Maximum number of CPUs (2-32)' CONFIG_NR_CPUS 32
fi
endmenu
diff -urN linux-2.5.24/arch/mips64/config.in linux/arch/mips64/config.in
--- linux-2.5.24/arch/mips64/config.in Thu Jun 20 15:53:45 2002
+++ linux/arch/mips64/config.in Thu Jun 20 16:35:45 2002
@@ -245,6 +245,8 @@
bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
if [ "$CONFIG_SMP" != "y" ]; then
bool 'Run uncached' CONFIG_MIPS_UNCACHED
+else
+ int 'Maximum number of CPUs (2-64)' CONFIG_NR_CPUS 64
fi
endmenu
diff -urN linux-2.5.24/arch/mips64/defconfig linux/arch/mips64/defconfig
--- linux-2.5.24/arch/mips64/defconfig Thu Jun 20 15:53:47 2002
+++ linux/arch/mips64/defconfig Thu Jun 20 16:35:45 2002
@@ -32,6 +32,7 @@
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SBUS is not set
+CONFIG_NR_CPUS=64
#
# CPU selection
diff -urN linux-2.5.24/arch/parisc/config.in linux/arch/parisc/config.in
--- linux-2.5.24/arch/parisc/config.in Thu Jun 20 15:53:57 2002
+++ linux/arch/parisc/config.in Thu Jun 20 16:35:45 2002
@@ -18,6 +18,10 @@
# bool 'Symmetric multi-processing support' CONFIG_SMP
define_bool CONFIG_SMP n
+if [ "$CONFIG_SMP" = "y" ]; then
+ int 'Maximum number of CPUs (2-32)' CONFIG_NR_CPUS 32
+fi
+
bool 'Kernel Debugger support' CONFIG_KWDB
# define_bool CONFIG_KWDB n
diff -urN linux-2.5.24/arch/ppc/config.in linux/arch/ppc/config.in
--- linux-2.5.24/arch/ppc/config.in Thu Jun 20 15:53:41 2002
+++ linux/arch/ppc/config.in Thu Jun 20 16:35:45 2002
@@ -172,6 +172,7 @@
bool 'Symmetric multi-processing support' CONFIG_SMP
if [ "$CONFIG_SMP" = "y" ]; then
bool ' Distribute interrupts on all CPUs by default' CONFIG_IRQ_ALL_CPUS
+ int 'Maximum number of CPUs (2-32)' CONFIG_NR_CPUS 32
fi
if [ "$CONFIG_SMP" != "y" ]; then
bool 'Preemptible Kernel' CONFIG_PREEMPT
diff -urN linux-2.5.24/arch/ppc64/config.in linux/arch/ppc64/config.in
--- linux-2.5.24/arch/ppc64/config.in Thu Jun 20 15:53:45 2002
+++ linux/arch/ppc64/config.in Thu Jun 20 16:35:45 2002
@@ -21,6 +21,7 @@
bool 'Symmetric multi-processing support' CONFIG_SMP
if [ "$CONFIG_SMP" = "y" ]; then
bool ' Distribute interrupts on all CPUs by default' CONFIG_IRQ_ALL_CPUS
+ int 'Maximum number of CPUs (2-64)' CONFIG_NR_CPUS 64
if [ "$CONFIG_PPC_PSERIES" = "y" ]; then
bool ' Hardware multithreading' CONFIG_HMT
fi
diff -urN linux-2.5.24/arch/ppc64/defconfig linux/arch/ppc64/defconfig
--- linux-2.5.24/arch/ppc64/defconfig Thu Jun 20 15:53:48 2002
+++ linux/arch/ppc64/defconfig Thu Jun 20 16:35:45 2002
@@ -38,6 +38,7 @@
CONFIG_IRQ_ALL_CPUS=y
# CONFIG_HMT is not set
# CONFIG_PREEMPT is not set
+CONFIG_NR_CPUS=64
#
# General setup
diff -urN linux-2.5.24/arch/s390/config.in linux/arch/s390/config.in
--- linux-2.5.24/arch/s390/config.in Thu Jun 20 15:53:47 2002
+++ linux/arch/s390/config.in Thu Jun 20 16:35:45 2002
@@ -20,6 +20,9 @@
comment 'Processor type and features'
bool 'Symmetric multi-processing support' CONFIG_SMP
bool 'IEEE FPU emulation' CONFIG_MATHEMU
+if [ "$CONFIG_SMP" = "y" ]; then
+ int 'Maximum number of CPUs (2-32)' CONFIG_NR_CPUS 32
+fi
endmenu
mainmenu_option next_comment
diff -urN linux-2.5.24/arch/s390/defconfig linux/arch/s390/defconfig
--- linux-2.5.24/arch/s390/defconfig Thu Jun 20 15:53:56 2002
+++ linux/arch/s390/defconfig Thu Jun 20 16:35:45 2002
@@ -35,6 +35,7 @@
#
CONFIG_SMP=y
CONFIG_MATHEMU=y
+CONFIG_NR_CPUS=64
#
# Base setup
diff -urN linux-2.5.24/arch/s390x/config.in linux/arch/s390x/config.in
--- linux-2.5.24/arch/s390x/config.in Thu Jun 20 15:53:44 2002
+++ linux/arch/s390x/config.in Thu Jun 20 16:35:45 2002
@@ -19,6 +19,9 @@
mainmenu_option next_comment
comment 'Processor type and features'
bool 'Symmetric multi-processing support' CONFIG_SMP
+if [ "$CONFIG_SMP" = "y" ]; then
+ int 'Maximum number of CPUs (2-64)' CONFIG_NR_CPUS 64
+fi
bool 'Kernel support for 31 bit emulation' CONFIG_S390_SUPPORT
if [ "$CONFIG_S390_SUPPORT" = "y" ]; then
tristate 'Kernel support for 31 bit ELF binaries' CONFIG_BINFMT_ELF32
diff -urN linux-2.5.24/arch/s390x/defconfig linux/arch/s390x/defconfig
--- linux-2.5.24/arch/s390x/defconfig Thu Jun 20 15:53:41 2002
+++ linux/arch/s390x/defconfig Thu Jun 20 16:35:45 2002
@@ -36,6 +36,7 @@
CONFIG_SMP=y
CONFIG_S390_SUPPORT=y
CONFIG_BINFMT_ELF32=y
+CONFIG_NR_CPUS=64
#
# Base setup
diff -urN linux-2.5.24/arch/sparc/config.in linux/arch/sparc/config.in
--- linux-2.5.24/arch/sparc/config.in Thu Jun 20 15:53:44 2002
+++ linux/arch/sparc/config.in Thu Jun 20 16:35:45 2002
@@ -17,6 +17,10 @@
bool 'Symmetric multi-processing support (does not work on sun4/sun4c)' CONFIG_SMP
+if [ "$CONFIG_SMP" = "y" ]; then
+ int 'Maximum number of CPUs (2-32)' CONFIG_NR_CPUS 32
+fi
+
# Identify this as a Sparc32 build
define_bool CONFIG_SPARC32 y
diff -urN linux-2.5.24/arch/sparc64/config.in linux/arch/sparc64/config.in
--- linux-2.5.24/arch/sparc64/config.in Thu Jun 20 15:53:49 2002
+++ linux/arch/sparc64/config.in Thu Jun 20 16:35:45 2002
@@ -17,6 +17,10 @@
bool 'Symmetric multi-processing support' CONFIG_SMP
bool 'Preemptible Kernel' CONFIG_PREEMPT
+if [ "$CONFIG_SMP" = "y" ]; then
+ int 'Maximum number of CPUs (2-64)' CONFIG_NR_CPUS 64
+fi
+
# Identify this as a Sparc64 build
define_bool CONFIG_SPARC64 y
diff -urN linux-2.5.24/arch/sparc64/defconfig linux/arch/sparc64/defconfig
--- linux-2.5.24/arch/sparc64/defconfig Thu Jun 20 15:53:49 2002
+++ linux/arch/sparc64/defconfig Thu Jun 20 16:35:45 2002
@@ -63,6 +63,7 @@
CONFIG_BINFMT_MISC=m
# CONFIG_SUNOS_EMUL is not set
CONFIG_SOLARIS_EMUL=m
+CONFIG_NR_CPUS=64
#
# Parallel port support
diff -urN linux-2.5.24/arch/x86_64/config.in linux/arch/x86_64/config.in
--- linux-2.5.24/arch/x86_64/config.in Thu Jun 20 15:53:47 2002
+++ linux/arch/x86_64/config.in Thu Jun 20 16:35:45 2002
@@ -54,6 +54,7 @@
fi
if [ "$CONFIG_SMP" = "y" ]; then
define_bool CONFIG_HAVE_DEC_LOCK y
+ int 'Maximum number of CPUs (2-64)' CONFIG_NR_CPUS 64
fi
define_bool CONFIG_X86_MCE y
diff -urN linux-2.5.24/arch/x86_64/defconfig linux/arch/x86_64/defconfig
--- linux-2.5.24/arch/x86_64/defconfig Thu Jun 20 15:53:55 2002
+++ linux/arch/x86_64/defconfig Thu Jun 20 16:35:45 2002
@@ -51,6 +51,7 @@
CONFIG_HAVE_DEC_LOCK=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
+CONFIG_NR_CPUS=64
#
# Power management options
diff -urN linux-2.5.24/include/linux/threads.h linux/include/linux/threads.h
--- linux-2.5.24/include/linux/threads.h Thu Jun 20 15:53:42 2002
+++ linux/include/linux/threads.h Thu Jun 20 16:35:45 2002
@@ -8,10 +8,16 @@
* /proc/sys/kernel/threads-max.
*/
+/*
+ * Maximum supported processors that can run under SMP. This value is
+ * set via configure setting. The maximum is equal to the size of the
+ * bitmasks used on that platform, i.e. 32 or 64. Setting this smaller
+ * saves quite a bit of memory.
+ */
#ifdef CONFIG_SMP
-#define NR_CPUS 32 /* Max processors that can be running in SMP */
+#define NR_CPUS CONFIG_NR_CPUS
#else
-#define NR_CPUS 1
+#define NR_CPUS 1
#endif
#define MIN_THREADS_LEFT_FOR_ROOT 4
reply other threads:[~2002-06-24 19:12 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1024945649.2550.7.camel@icbm \
--to=rml@tech9.net \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.