[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assign
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU |
Date: |
Wed, 4 Mar 2015 11:09:34 -0300 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Wed, Mar 04, 2015 at 10:52:58AM -0300, Eduardo Habkost wrote:
> We need all possible CPUs (including hotplug ones) to be present in the
> SRAT when QEMU starts. QEMU already does that correctly today, the only
> problem is that when a CPU is omitted from the NUMA configuration, it is
> silently assigned to node 0.
>
> Check if all CPUs up to max_cpus are present in the NUMA configuration
> and warn about missing CPUs.
>
> Make it just a warning, to allow management software to be updated if
> necessary. In the future we may make it a fatal error instead.
Michael asked for a command-line example, so I will include this in the commit
log when queueing the patch:
Correct command-line, no warning:
$ qemu-system-x86_64 -smp 2,maxcpus=4
$ qemu-system-x86_64 -smp 2,maxcpus=4 -numa node,cpus=0-3
Incomplete command-line, with warnings:
$ qemu-system-x86_64 -smp 2,maxcpus=4 -numa node,cpus=0
qemu-system-x86_64: warning: CPU(s) not present in any NUMA nodes: 1 2 3
qemu-system-x86_64: warning: All CPU(s) up to maxcpus should be described in
NUMA config
$ qemu-system-x86_64 -smp 2,maxcpus=4 -numa node,cpus=0-2
qemu-system-x86_64: warning: CPU(s) not present in any NUMA nodes: 3
qemu-system-x86_64: warning: All CPU(s) up to maxcpus should be described in
NUMA config
>
> Signed-off-by: Eduardo Habkost <address@hidden>
> ---
> v1 -> v2: (no changes)
>
> v2 -> v3:
> * Use enumerate_cpus() and error_report() for error message
> * Simplify logic using bitmap_full()
>
> v3 -> v4:
> * Clarify error message, mention that all CPUs up to
> maxcpus need to be described in NUMA config
>
> v4 -> v5:
> * Commit log update, to make problem description clearer
> ---
> numa.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/numa.c b/numa.c
> index e922265..9b2ba05 100644
> --- a/numa.c
> +++ b/numa.c
> @@ -200,6 +200,16 @@ static void validate_numa_cpus(void)
> bitmap_or(seen_cpus, seen_cpus,
> numa_info[i].node_cpu, MAX_CPUMASK_BITS);
> }
> +
> + if (!bitmap_full(seen_cpus, max_cpus)) {
> + char *msg;
> + bitmap_complement(seen_cpus, seen_cpus, max_cpus);
> + msg = enumerate_cpus(seen_cpus, max_cpus);
> + error_report("warning: CPU(s) not present in any NUMA nodes: %s",
> msg);
> + error_report("warning: All CPU(s) up to maxcpus should be described "
> + "in NUMA config");
> + g_free(msg);
> + }
> }
>
> void parse_numa_opts(void)
> --
> 2.1.0
>
--
Eduardo