qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] docs: add cpu-hotplug.txt


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH] docs: add cpu-hotplug.txt
Date: Mon, 8 Aug 2016 14:18:05 +0200

On Mon, 8 Aug 2016 10:28:02 +0800
Dou Liyang <address@hidden> wrote:

> This document describes how to use cpu hotplug in QEMU.
> 
> Signed-off-by: Dou Liyang <address@hidden>
> ---
>  docs/cpu-hotplug.txt | 110 
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 110 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..d62638e
> --- /dev/null
> +++ b/docs/cpu-hotplug.txt
> @@ -0,0 +1,110 @@
> +QEMU CPU hotplug
> +===================
> +
> +This document explains how to use the cpu hotplug feature in QEMU,
> +which is present since v2.6.0.

 -device/device_add based CPUs are merged since 2.7

> +
> +Guest support is required for cpu hotplug to work.
> +
> +CPU hotplug
> +-------------------
> +
> +In order to be able to hotplug cpu, QEMU has to be told what is the
> +maximum amount of cpus the guest can grow. 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" set the number of CPUs to 'n' [default=1]
> + - "maxcpus" maximum number of total cpus, including offlineCPUs for
> +     hotplug, etc
s/total//
s/offlineCPUs/offline VCPUs/ or threads

> + - "cores" number of CPU cores on one socket
> + - "threads= number of threads on one CPU core
> + - "sockets= number of discrete sockets in the system
Above needs additional meaning clarification for SPAPR,
CCing David

> +
> +
> +For example, the following command-line:
> +
> + qemu [...] -smp 3,maxcpus=10,sockets=2,cores=2,threads=2
> +
> +Creates a guest with 3 cpus and it support up to 10 cpus. The cpu
> +topology is sockets (2) * cores (2) * threads (2) and can't greater
> +than maxcpus. When the guest is just booted, the guest will see 3
> +cpus. so there are seven cpus can be hotplugged by using any
> +combination of the available sockets,cores and threads topology or
> +using apic-id.
s/cpus/vcpus/

drop any mentioning of apic-id, it's not supposed to be used
by user and socket/core/thread-ids should be used i.e.
properties advertised by QEMU via QMP command query-hotpluggable-cpus
or corresponding HMP command 'info hotpluggable-cpus'

PS:
Eduardo should we drop apic-id property before 2.7 is released?
So people won't even try to use it, it wan never a public
property before as cpus weren't available with -device/device_add.


> +cpu hot-plug
> +-----------------------
> +
> +A monitor commands are used to hotplug cpu:
> +
> + - "device_add": creates a cpu device and inserts it into the
> + specific topology as a device
> +
> +For example, the following commands add a cpu which id is cpu1 to
> +the guest discussed earlier:
> +
> +  (qemu) device_add qemu64-x86_64-cpu,id=cpu1,apic-id=3
likewise remove any mentioning of apic-id from document

I'd add as the first section here commands that query possible
available cpus including topology properties. 

> +
> + - "qemu64-x86_64-cpu" is the cpu modle.
> + - "id" is the unique identifier in the device sets.
> + - "apic-id" is the hotpluged cpu's physical identification.
> +
> +Another command uses the cpu topology to add the additional cpu in
> +the designated position.
> +
> +For example, the following commands add a cpu in the last position
> +of the guest cpu topology discussed earlier.
> +
> +  (qemu) device_add qemu64-x86_64-cpu,id=cpu1,socket-id=2,core-id=1,
> +     thread-id=1
> +
> +It's also possible to start a guest with cpu cold-plugged into the
> +hotpluggable cpu topology.
s/hotpluggable cpu topology/specific place (socket,core,thread)/

> +
> +In the following command-line example, a guest which has 3 cpus is
> +created where one of the cpus comes from the "apic-id", and another
> +one comes from "socket-id...". After that, the guest has additional
> +seven cpus to be hot-plug when needed:
> +
> + qemu  [...] -smp 1,maxcpus=10,sockets=2,cores=2,threads=2
> +     -device qemu64-x86_64-cpu,id=cpu1,apic-id=1
> +     -device qemu64-x86_64-cpu,socket-id=2,core-id=1,thread-id=0
> +
> +cpu hot-unplug
> +------------------------
> +
> +In order to be able to hot unplug cpu device, QEMU has two ways
> +to remove cpu device.
> +  1. Using the ids which were assigned when you hot plugged cpus.
> +  2. Using qom_path where the cpu is located in the guest.
I wouldn't advertise #2 as it's possible to unplug CPUs created with
-smp X with its help and then have broken migration

device_del qom_path should even be able to remove a device without ID,
it should allow removal of devices below /machine/peripheral only
instead of current anywhere.

Daniel,
is it a bug in current device_del impl.?
 i.e. device_del /machine/unattached/device[2]
 is currently allowed while I think it shouldn't.

> +
> +A monitor commands are used to hot unplug cpus:
> +
> + - "device_del": deletes a cpu device
> +
> +For example, assuming that the cpu device with id "cpu1" exists,
> +the following commands tries to remove it.
> +
> +  (qemu) device_del cpu1
> +
> +If you don't set the ids when you hot plugged cpus.
> +


> +First, you may need to obtain the cpu's qom_path. The following
> +commands list all hotplugable-cpus, you can get the qom_path
> +through the cpu topology.
> +
> +  (qemu) info hotpluggable-cpus
> +
> +Then you can remove it by the qom_path.
> +
> +For example, assuming that the cpu device with qom_path "/machine
> +/unattached/device[0]" exists, the following commands tries to
> +remove it.
> +
> +  (qemu) device_del /machine/unattached/device[0]
I'd remove qom-path related parts and leave only ID based one.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]