[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 00/13] numa: add '-numa cpu' option
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [RFC 00/13] numa: add '-numa cpu' option |
Date: |
Wed, 18 Jan 2017 18:13:16 +0100 |
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 cpu<->node mapping from global bitmaps
to PCMachineState struct.
It focuses on PC in RFC version to see if approach is suitable in general,
later we can move generic parts to common code or do a bigger non RFC
version of this series that would take care of all concerned targets
(arm-virt/spapr/pc).
Thing which I've kept PC specific but could be generalized is:
* moving array possible_cpus to generic MachineState where
we already have possible_cpu_arch_ids(). I plan to reuse it
in virt-arm for CPU hotplug/-device cpu support and as this series
shows it also could be used for numa mapping.
Perhaps it could be used in simmilar manner for core based SPAPR
but I haven't looked it yet. So any opions on if we should move it there.
So far 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 (stoppod mode) so that
mgmt could query hopluggable-cpus first, then map them to numa nodes
in runtime before actually allowing guest to run.
Any suggestions on how to make it work are welcome.
PS:
skipped travis-ci build as currently it seems to be broken.
CC: Dou Liyang <address@hidden>
CC: address@hidden
CC: address@hidden
CC: address@hidden
CC: address@hidden
CC: address@hidden
CC: address@hidden
CC: address@hidden
CC: Andrew Jones <address@hidden>
CC: David Gibson <address@hidden>
CC: Thomas Huth <address@hidden>
Igor Mammedov (13):
numa: access CPU's node id via property in hmp_info_numa()
pc: cleanup: move smbios_set_cpuid() into pc_build_smbios()
pc: don't return cpu pointer from pc_new_cpu() as it's not needed
anymore
make possible_cpu_arch_ids() return const pointer
pc: move pcms->possible_cpus init out of pc_cpus_init()
pc: calculate topology only once when possible_cpus is initialised
pc: pass apic_id to pc_find_cpu_slot() directly so lookup could be
done without CPU object
pc: add writeonly 'cpu' property to PCMachine
numa: introduce '-numa cpu' cpu option
numa: replace cpu_index_to_socket_id() with
cpu_index_to_instance_props()
numa: use new machine.cpu property with -numa cpus=... CLI
pc: drop usage of legacy numa_get_node_for_cpu()
pc: cpu: make sure that cpu.node-id matches -numa mapping
include/hw/acpi/acpi_dev_interface.h | 2 +-
include/hw/boards.h | 14 ++-
include/hw/i386/pc.h | 2 +-
include/qom/cpu.h | 2 -
include/sysemu/numa.h | 3 +-
target/arm/cpu.h | 2 +
target/i386/cpu.h | 1 +
target/ppc/cpu.h | 2 +
hw/acpi/cpu.c | 13 +--
hw/acpi/cpu_hotplug.c | 4 +-
hw/arm/virt.c | 12 +-
hw/i386/acpi-build.c | 25 ++---
hw/i386/pc.c | 210 +++++++++++++++++++++++------------
hw/ppc/spapr.c | 15 ++-
hw/ppc/spapr_cpu_core.c | 2 +-
monitor.c | 7 +-
numa.c | 89 +++++++++++----
qapi-schema.json | 3 +-
stubs/pc_madt_cpu_entry.c | 2 +-
target/arm/cpu.c | 1 +
target/i386/cpu.c | 1 +
target/ppc/translate_init.c | 1 +
vl.c | 4 +-
23 files changed, 269 insertions(+), 148 deletions(-)
--
2.7.4
- [Qemu-devel] [RFC 00/13] numa: add '-numa cpu' option,
Igor Mammedov <=
- [Qemu-devel] [RFC 01/13] numa: access CPU's node id via property in hmp_info_numa(), Igor Mammedov, 2017/01/18
- [Qemu-devel] [RFC 02/13] pc: cleanup: move smbios_set_cpuid() into pc_build_smbios(), Igor Mammedov, 2017/01/18
- [Qemu-devel] [RFC 03/13] pc: don't return cpu pointer from pc_new_cpu() as it's not needed anymore, Igor Mammedov, 2017/01/18
- [Qemu-devel] [RFC 04/13] make possible_cpu_arch_ids() return const pointer, Igor Mammedov, 2017/01/18
- [Qemu-devel] [RFC 05/13] pc: move pcms->possible_cpus init out of pc_cpus_init(), Igor Mammedov, 2017/01/18