From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: Eduardo Habkost <ehabkost@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
Andrew Jones <drjones@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>,
Eric Blake <eblake@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Shannon Zhao <zhaoshenglong@huawei.com>,
qemu-arm@nongnu.org, qemu-ppc@nongnu.org
Subject: [Qemu-devel] [PATCH v2 00/24] numa: add '-numa cpu' option
Date: Wed, 3 May 2017 14:56:54 +0200 [thread overview]
Message-ID: <1493816238-33120-1-git-send-email-imammedo@redhat.com> (raw)
Changes since v1:
* arm (Drew)
- s/virt_idx2mp_affinity/virt_cpu_mp_affinity/
- add arm_cpu_mp_affinity() to reduce code duplication
- use cpu list returned by possible_cpu_arch_ids() instead of
directly accessing MachineState::possible_cpus field
* various checkpatch/cleanups/spelling fixes (Eric/Drew)
* simplify spapr_cpu_index_to_props() (David)
* add/use numa_[has_]node_id() wrappers (Drew)
* use new NumaCpuOptions instead of CpuInstanceProperties
in NumaOptions (Eduardo)
* better documment NumaCpuOptions.node-id in qapi-schema.json (Eduardo)
Changes since RFC:
* convert all targets that support numa (Eduardo)
* add numa CLI tests
* support wildcard matching with "-numa cpu,..." (Paolo)
Series introduces a new CLI option to allow mapping cpus to numa
nodes using public properties [socket|core|thread]-ids instead of
internal cpu_index and moving internal handling of cpu<->node
mapping from cpu_index based global bitmaps to MachineState.
New '-numa cpu' option is supported only on PC and SPAPR
machines that implement hotpluggable-cpus query.
ARM machine user-facing interface stays cpu_index based due to
lack of hotpluggable-cpus support, but internally cpu<->node
mapping will be using the common for PC/SPAPR/ARM approach
(i.e. store mapping info in MachineState:possible_cpus)
It only provides CLI interface to do mapping, there is no QMP
one as I haven't found a suitable place/way to update/set mapping
after machine_done for QEMU started with -S (stopped mode) so that
mgmt could query hopluggable-cpus first, then map them to numa nodes
in runtime before actually allowing guest to run.
Another alternative I've been considering is to add CLI option
similar to -S but that would pause initialization before machine_init()
callback is run so that user can get CPU layout with hopluggable-cpus,
then map CPUs to numa nodes and unpause to let machine_init() initialize
machine using previously predefined numa mapping.
Such option might also be useful for other usecases.
git repo for testing:
https://github.com/imammedo/qemu.git cphp_numa_cfg_v2
reference to v1:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg438955.html
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: Peter Maydell <peter.maydell@linaro.org>
CC: Andrew Jones <drjones@redhat.com>
CC: David Gibson <david@gibson.dropbear.id.au>
CC: Eric Blake <eblake@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Shannon Zhao <zhaoshenglong@huawei.com>
CC: qemu-arm@nongnu.org
CC: qemu-ppc@nongnu.org
Igor Mammedov (24):
tests: add CPUs to numa node mapping test
hw/arm/virt: extract mp-affinity calculation in separate function
hw/arm/virt: use machine->possible_cpus for storing possible topology
info
hw/arm/virt: explicitly allocate cpu_index for cpus
numa: move source of default CPUs to NUMA node mapping into boards
spapr: add node-id property to sPAPR core
pc: add node-id property to CPU
virt-arm: add node-id property to CPU
numa: add check that board supports cpu_index to node mapping
numa: mirror cpu to node mapping in MachineState::possible_cpus
numa: do default mapping based on possible_cpus instead of node_cpu
bitmaps
numa: add numa_[has_]node_id() wrappers
pc: get numa node mapping from possible_cpus instead of
numa_get_node_for_cpu()
spapr: get numa node mapping from possible_cpus instead of
numa_get_node_for_cpu()
virt-arm: get numa node mapping from possible_cpus instead of
numa_get_node_for_cpu()
QMP: include CpuInstanceProperties into query_cpus output output
tests: numa: add case for QMP command query-cpus
numa: remove no longer used numa_get_node_for_cpu()
numa: remove no longer need numa_post_machine_init()
machine: call machine init from wrapper
numa: use possible_cpus for not mapped CPUs check
numa: remove node_cpu bitmaps as they are no longer used
numa: add '-numa cpu,...' option for property based node mapping
tests: check -numa node,cpu=props_list usecase
include/hw/boards.h | 11 +-
include/hw/ppc/spapr_cpu_core.h | 1 +
include/qom/cpu.h | 2 +
include/sysemu/numa.h | 16 ++-
target/arm/cpu.h | 2 +
cpus.c | 10 ++
hw/acpi/cpu.c | 7 +-
hw/arm/virt-acpi-build.c | 19 +--
hw/arm/virt.c | 123 +++++++++++++---
hw/core/machine.c | 132 ++++++++++++++++++
hw/i386/acpi-build.c | 11 +-
hw/i386/pc.c | 54 +++++--
hw/ppc/spapr.c | 44 +++++-
hw/ppc/spapr_cpu_core.c | 21 ++-
numa.c | 157 +++++++++------------
qapi-schema.json | 27 +++-
qemu-options.hx | 23 ++-
target/arm/cpu.c | 13 +-
target/i386/cpu.c | 1 +
tests/Makefile.include | 5 +
tests/numa-test.c | 302 ++++++++++++++++++++++++++++++++++++++++
vl.c | 6 +-
22 files changed, 796 insertions(+), 191 deletions(-)
create mode 100644 tests/numa-test.c
--
2.7.4
next reply other threads:[~2017-05-03 12:57 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-03 12:56 Igor Mammedov [this message]
2017-05-03 12:56 ` [Qemu-devel] [PATCH v2 01/24] tests: add CPUs to numa node mapping test Igor Mammedov
2017-05-03 14:32 ` Eduardo Habkost
2017-05-04 13:17 ` Eduardo Habkost
2017-05-03 12:56 ` [Qemu-devel] [PATCH v2 02/24] hw/arm/virt: extract mp-affinity calculation in separate function Igor Mammedov
2017-05-04 9:20 ` Andrew Jones
2017-05-04 13:21 ` Eduardo Habkost
2017-05-03 12:56 ` [Qemu-devel] [PATCH v2 03/24] hw/arm/virt: use machine->possible_cpus for storing possible topology info Igor Mammedov
2017-05-04 9:38 ` Andrew Jones
2017-05-04 12:55 ` Igor Mammedov
2017-05-04 13:16 ` Andrew Jones
2017-05-04 14:33 ` Igor Mammedov
2017-05-03 12:56 ` [Qemu-devel] [PATCH v2 04/24] hw/arm/virt: explicitly allocate cpu_index for cpus Igor Mammedov
2017-05-03 12:56 ` [Qemu-devel] [PATCH v2 05/24] numa: move source of default CPUs to NUMA node mapping into boards Igor Mammedov
2017-05-03 14:42 ` Eduardo Habkost
2017-05-03 15:57 ` Igor Mammedov
2017-05-04 7:32 ` David Gibson
2017-05-05 8:01 ` Igor Mammedov
2017-05-03 14:59 ` Eduardo Habkost
2017-05-03 16:14 ` Igor Mammedov
2017-05-03 15:13 ` Eduardo Habkost
2017-05-04 9:19 ` Igor Mammedov
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 06/24] spapr: add node-id property to sPAPR core Igor Mammedov
2017-05-03 14:46 ` Eduardo Habkost
2017-05-03 16:12 ` Igor Mammedov
2017-05-04 16:49 ` David Gibson
2017-05-05 8:04 ` Igor Mammedov
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 07/24] pc: add node-id property to CPU Igor Mammedov
2017-05-05 20:29 ` Eduardo Habkost
2017-05-09 13:14 ` Igor Mammedov
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 08/24] virt-arm: " Igor Mammedov
2017-05-04 9:57 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 09/24] numa: add check that board supports cpu_index to node mapping Igor Mammedov
2017-05-03 15:04 ` Eduardo Habkost
2017-05-03 16:19 ` Igor Mammedov
2017-05-03 17:31 ` Eduardo Habkost
2017-05-04 9:07 ` Igor Mammedov
2017-05-04 10:01 ` Andrew Jones
2017-05-04 16:51 ` David Gibson
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 10/24] numa: mirror cpu to node mapping in MachineState::possible_cpus Igor Mammedov
2017-05-03 15:20 ` Eduardo Habkost
2017-05-04 8:44 ` Igor Mammedov
2017-05-05 12:16 ` Igor Mammedov
2017-05-05 17:04 ` Eduardo Habkost
2017-05-05 20:00 ` Igor Mammedov
2017-05-04 11:40 ` Andrew Jones
2017-05-04 12:57 ` Igor Mammedov
2017-05-05 11:28 ` Igor Mammedov
2017-05-05 11:47 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 11/24] numa: do default mapping based on possible_cpus instead of node_cpu bitmaps Igor Mammedov
2017-05-04 11:45 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 12/24] numa: add numa_[has_]node_id() wrappers Igor Mammedov
2017-05-04 12:30 ` Andrew Jones
2017-05-05 1:45 ` David Gibson
2017-05-05 8:09 ` Igor Mammedov
2017-05-05 9:06 ` Andrew Jones
2017-05-05 17:12 ` Eduardo Habkost
2017-05-05 20:04 ` Igor Mammedov
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 13/24] pc: get numa node mapping from possible_cpus instead of numa_get_node_for_cpu() Igor Mammedov
2017-05-04 12:30 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 14/24] spapr: " Igor Mammedov
2017-05-05 3:15 ` David Gibson
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 15/24] virt-arm: " Igor Mammedov
2017-05-04 12:33 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 16/24] QMP: include CpuInstanceProperties into query_cpus output output Igor Mammedov
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 17/24] tests: numa: add case for QMP command query-cpus Igor Mammedov
2017-05-05 3:22 ` David Gibson
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 18/24] numa: remove no longer used numa_get_node_for_cpu() Igor Mammedov
2017-05-04 12:34 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 19/24] numa: remove no longer need numa_post_machine_init() Igor Mammedov
2017-05-04 12:35 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 20/24] machine: call machine init from wrapper Igor Mammedov
2017-05-04 12:43 ` Andrew Jones
2017-05-05 3:23 ` David Gibson
2017-05-08 14:31 ` Eduardo Habkost
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 21/24] numa: use possible_cpus for not mapped CPUs check Igor Mammedov
2017-05-04 12:43 ` Andrew Jones
2017-05-04 13:06 ` Igor Mammedov
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 22/24] numa: remove node_cpu bitmaps as they are no longer used Igor Mammedov
2017-05-04 12:45 ` Andrew Jones
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 23/24] numa: add '-numa cpu, ...' option for property based node mapping Igor Mammedov
2017-05-03 16:35 ` Eduardo Habkost
2017-05-03 16:39 ` Eric Blake
2017-05-03 17:38 ` Eduardo Habkost
2017-05-03 17:58 ` Eduardo Habkost
2017-05-04 9:52 ` Igor Mammedov
2017-05-08 5:40 ` David Gibson
2017-05-08 14:47 ` Eduardo Habkost
2017-05-09 15:58 ` Igor Mammedov
2017-05-10 1:15 ` David Gibson
2017-05-03 12:57 ` [Qemu-devel] [PATCH v2 24/24] tests: check -numa node, cpu=props_list usecase Igor Mammedov
2017-05-08 6:35 ` David Gibson
2017-05-04 13:41 ` [Qemu-devel] [PATCH v2 00/24] numa: add '-numa cpu' option Eduardo Habkost
2017-05-04 14:34 ` Igor Mammedov
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=1493816238-33120-1-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=drjones@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=zhaoshenglong@huawei.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.