* [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
* [Qemu-devel] [PATCH v5 0/1] NUMA: Validate CPU configuration @ 2015-03-04 13:52 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 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 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-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
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).