On Wed, Aug 17, 2016 at 03:01:06PM +0800, Dou Liyang wrote: > This document describes how to use cpu hotplug in QEMU. > > Signed-off-by: Dou Liyang <douly.f...@cn.fujitsu.com> > --- > Change log v5 -> v6 > From drew's advice > 1. Fix some spelling and grammar mistakes > > Change log v4 -> v5 > 1. add an example for sPAPR > From Bharata's advice > 1. Fix the examples > > Change log v3 -> v4 > From David's advice > 1. add spapr examples > 2. Fix some comment > From drew's advice > 1. Fix some syntax > > Change log v2 -> v3: > From drew's advice: > 1. modify the examples. > 2. Fix some syntax. > > Change log v1 -> v2: > From Fam's advice: > 1. Fix some comment. > > Change log v1: > From Igor's advice: > 1. Remove any mentioning of apic-id from the document. > 2. Remove the "device_del qom_path" from the CPU hot-unplug. > 3. Fix some comment. > > docs/cpu-hotplug.txt | 140 > +++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 140 insertions(+) > create mode 100644 docs/cpu-hotplug.txt > > diff --git a/docs/cpu-hotplug.txt b/docs/cpu-hotplug.txt > new file mode 100644 > index 0000000..c9a16f6 > --- /dev/null > +++ b/docs/cpu-hotplug.txt > @@ -0,0 +1,140 @@ > +QEMU CPU hotplug > +================ > + > +This document explains how to use the CPU hotplug feature in QEMU, > +which regards the CPU as a device, using -device/device_add and > +device_del. > + > +QEMU support was merged for 2.7. > + > +Guest support is required for CPU hotplug to work. > + > +CPU hot-plug > +------------ > + > +In order to be able to hotplug CPUs, QEMU has to be told the maximum > +number of CPUs which the guest can have. This is done at startup time > +by means of the -smp command-line option, which has the following > +format: > + > + -smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads] > + [,sockets=sockets] > + > +Where, > + > + - "cpus" sets the number of CPUs to 'n' [default=1]. > + - "maxcpus" sets the maximum number of CPUs, including offline VCPUs > + for hotplug. > + - "sockets" sets the number of discrete sockets in the system. > + - "cores" sets the number of CPU cores on one socket. > + - "threads" sets the number of threads on one CPU core. > + > +For example, the following command-line: > + > + qemu [...] -smp 4,maxcpus=8,sockets=2,cores=2,threads=2 > + > +creates a guest with 4 VCPUs and supports up to 8 VCPUs. The CPU topology > +is sockets (2) * cores (2) * threads (2) and should compute a number of > +slots exactly equal to maxcpus. A computed number of slots greater than > +maxcpus will result in error. When the guest finishes loading, the guest > +will see 4 VCPUs. More of this below. > + > +Query available CPU objects > +--------------------------- > + > +To add a VCPU, it must be identified by socket-id, core-id, and/or > +thread-id parameters. > + > +Before adding the VCPU, we should know the topology parameters,so > +that we can find the available location (socket,core,thread) for a > +new VCPU. > + > +Use the HMP command "info hotpluggable-cpus" to obtain them, for example: > + > + (qemu) info hotpluggable-cpus > + > +lists all hot-pluggable CPUs. Such as this:
lists all CPUs including the present and possible hot-pluggable CPUs. > + > + ... > + type: "qemu64-x86_64-cpu" > + vcpus_count: "1" > + CPUInstance Properties: > + socket-id: "1" > + core-id: "0" > + thread-id: "0" > + ... > + > +Or > + > + ... > + type: "POWER7_v2.3-spapr-cpu-core" > + vcpus_count: "1" > + CPUInstance Properties: > + core-id: "2" There is another property called "qom_path" which if present indicates that the listed CPU is already present or plugged-in. Hotpluggable CPUs are those which don't have "qom_path" set. May be useful to explicitly bring this out in the doc ? Regards, Bharata.