All of lore.kernel.org
 help / color / mirror / Atom feed
* x86/dom0: limit dom0_max_vcpus value
@ 2012-03-12 15:56 Andrew Cooper
  2012-03-12 16:12 ` Jan Beulich
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Cooper @ 2012-03-12 15:56 UTC (permalink / raw)
  To: xen-devel@lists.xensource.com, Keir Fraser, Jan Beulich

[-- Attachment #1: Type: text/plain, Size: 272 bytes --]

This caused particularly poor performance when booting a server in
uniprocessor mode for debugging reasons, and had 4 dom0 vcpus competing
for 1pcpus worth of time.

-- 
Andrew Cooper - Dom0 Kernel Engineer, Citrix XenServer
T: +44 (0)1223 225 900, http://www.citrix.com


[-- Attachment #2: limit-dom_max_vcpus.patch --]
[-- Type: text/x-patch, Size: 1413 bytes --]

# HG changeset patch
# Parent 5d20d2f6ffed0a49f030f04a8870f1926babbcbf
x86/dom0: limit dom0_max_vcpus value

The command line parameter "dom0_max_vcpus" is useful on large servers where
dom0 does not want many vcpus, as an alternative to booting and hot-unplugging
down to a sensible number (which is poor memory-wize as many drivers allocate
large per-cpu buffers which will never be used after the hot-unplug).

However, as the code currently stands, the value for "dom0_max_vcpus" is used as
an absolute value rather than a maximum, resulting in dom0 getting more vcpus
than pcpus.  This can lead to unexpected poor performance.

Therefore, augment the "opt_dom0_max_vcpus == 0" test to also check whether the
user specified parameter is greater than the number of available pcpus.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

diff -r 5d20d2f6ffed xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c
+++ b/xen/arch/x86/domain_build.c
@@ -87,8 +87,9 @@ integer_param("dom0_max_vcpus", opt_dom0
 
 struct vcpu *__init alloc_dom0_vcpu0(void)
 {
-    if ( opt_dom0_max_vcpus == 0 )
-        opt_dom0_max_vcpus = num_cpupool_cpus(cpupool0);
+    int nr_pcpus = num_cpupool_cpus(cpupool0);
+    if ( opt_dom0_max_vcpus == 0 || opt_dom0_max_vcpus > nr_pcpus)
+        opt_dom0_max_vcpus = nr_pcpus;
     if ( opt_dom0_max_vcpus > MAX_VIRT_CPUS )
         opt_dom0_max_vcpus = MAX_VIRT_CPUS;
 

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-03-12 16:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-12 15:56 x86/dom0: limit dom0_max_vcpus value Andrew Cooper
2012-03-12 16:12 ` Jan Beulich
2012-03-12 16:32   ` Andrew Cooper
2012-03-12 16:41     ` Jan Beulich

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.