* [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU
2015-03-04 13:52 [Qemu-devel] [PATCH v5 0/1] NUMA: Validate CPU configuration Eduardo Habkost
@ 2015-03-04 13:52 ` Eduardo Habkost
2015-03-04 14:09 ` Eduardo Habkost
0 siblings, 1 reply; 4+ messages in thread
From: Eduardo Habkost @ 2015-03-04 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Igor Mammedov, Hu Tao, Michael S. Tsirkin
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.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU
2015-03-04 13:52 ` [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU Eduardo Habkost
@ 2015-03-04 14:09 ` Eduardo Habkost
0 siblings, 0 replies; 4+ messages in thread
From: Eduardo Habkost @ 2015-03-04 14:09 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Igor Mammedov, Hu Tao, Michael S. Tsirkin
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 <ehabkost@redhat.com>
> ---
> 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
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH v5 0/1] NUMA: Validate CPU configuration
@ 2015-03-19 19:21 Eduardo Habkost
2015-03-19 19:21 ` [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU Eduardo Habkost
0 siblings, 1 reply; 4+ messages in thread
From: Eduardo Habkost @ 2015-03-19 19:21 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Igor Mammedov, Hu Tao, Michael S. Tsirkin
This adds extra checks to the NUMA code to make sure the CPU configuration is
consistent. This needs to be applied on top of my numa patch queue:
https://github.com/ehabkost/qemu.git numa
Changes v1 -> v2:
* (none, v1 was tagged by accident and never sent to qemu-devel)
Changes v2 -> v3:
* Fix off-by-one error on CPU index check
* Use GString and error_report() instead of calling fprintf() directly
* Simplify logic of the CPUs-not-present check
Changes v3 -> v4:
* Patches 1-3 from v3 are now in the numa queue (URL above)
* Clarify error message when some CPUs are missing from the config
Changes v4 -> v5:
* Commit log update, to make problem description clearer
Eduardo Habkost (1):
numa: Print warning if no node is assigned to a CPU
numa.c | 10 ++++++++++
1 file changed, 10 insertions(+)
--
2.1.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU
2015-03-19 19:21 [Qemu-devel] [PATCH v5 0/1] NUMA: Validate CPU configuration Eduardo Habkost
@ 2015-03-19 19:21 ` Eduardo Habkost
0 siblings, 0 replies; 4+ messages in thread
From: Eduardo Habkost @ 2015-03-19 19:21 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Igor Mammedov, Hu Tao, Michael S. Tsirkin
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.
Command-line examples:
* Correct, no warning:
$ qemu-system-x86_64 -smp 2,maxcpus=4
$ qemu-system-x86_64 -smp 2,maxcpus=4 -numa node,cpus=0-3
* Incomplete, 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 <ehabkost@redhat.com>
---
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 fe74e1e..c975fb2 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(MachineClass *mc)
--
2.1.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-03-19 19:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-19 19:21 [Qemu-devel] [PATCH v5 0/1] NUMA: Validate CPU configuration Eduardo Habkost
2015-03-19 19:21 ` [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU Eduardo Habkost
-- strict thread matches above, loose matches on Subject: below --
2015-03-04 13:52 [Qemu-devel] [PATCH v5 0/1] NUMA: Validate CPU configuration Eduardo Habkost
2015-03-04 13:52 ` [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU Eduardo Habkost
2015-03-04 14:09 ` Eduardo Habkost
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).