[Xen-users] CPU hotplug x86 32bit

Alan Greenspan
Fri, 12 May 2006 17:48:13 -0000

Does anyone have any insight as to how CPU hotplug integrates with x86_32
and Xen?

Though the #VCPUs for a domU can be changed dynamically in Xen 3.0 using:

xm vcpu-set <domid> <VCPUs>

it appears that running x86_32 Linux domUs don''t detect dynamically
added
VCPUs.    The Linux CPU hotplug documentation seems to indicate that if the
CPUs are not detected at boot time, they cannot be added later.   IMHO, this
stretches the definition of "hot pluggable".

As far as Xen goes, I can imagine use cases where a domU could start on a
machine with say N real and N VCPUs, but if it outgrows those needs, it
could be live migrated or saved/restored on a machine with > N real CPU
capacity.  After a restore or migration, bumping up the VCPUs to >N would
allow the domU to make use of the additional CPUs on the target machine.
Another use case is simply wanting to dynamically adjust the number of CPUs
available to particular domUs on a large SMP host as application needs
change.

It seems like the "additional_cpus" kernel option might do the trick
to
allow Linux to reserve slots for additional CPUs, but this is apparently not
supported for x86_32 (see below).   So I guess the question is - does
dynamic VCPU modification NOT work such that VCPUs can be added and
recognized by a running x86_32 Linux/domU?    And a follow up question is
whether it works on x86_64 using "additional_cpus".   And then there
is the
question of Windows and how it reacts to dynamic changes in VCPUs.

Alan

[Not sure how current this hotplug info is ...]
+General Stuff about CPU Hotplug
+--------------------------------
+
+Command Line Switches
+---------------------
+maxcpus=n    Restrict boot time cpus to n. Say if you have 4 cpus, using
+             maxcpus=2 will only boot 2. You can choose to bring the
+             other cpus later online, read FAQ''s for more info.
+
+additional_cpus*=n   Use this to limit hotpluggable cpus. This option sets
+           cpu_possible_map = cpu_present_map + additional_cpus
+
+(*) Option valid only for following architectures
+- x86_64, ia64, s390
+
+ia64 and x86_64 use the number of disabled local apics in ACPI tables MADT
+to determine the number of potentially hot-pluggable cpus. The
implementation
+should only rely on this to count the #of cpus, but *MUST* not rely on the
+apicid values in those tables for disabled apics. In the event BIOS doesnt
+mark such hot-pluggable cpus as disabled entries, one could use this
+parameter "additional_cpus=x" to represent those cpus in the
cpu_possible_map.
+


_______________________________________________
Xen-users mailing list
Xen-users@lists.xensource.com