[libvirt] [PATCHv2 1/7] qemu: Forbid setting maximum memory size with the API with NUMA enabled

Martin Kletzander mkletzan at redhat.com
Thu Feb 26 12:20:29 UTC 2015


On Wed, Feb 25, 2015 at 11:21:58AM +0100, Peter Krempa wrote:
>NUMA enabled guest configuration explicitly specifies memory sizes for
>individual nodes. Allowing the virDomainSetMemoryFlags API (and friends)
>to change the total doesn't make sense as the individual node configs
>are not updated in that case.
>
>Forbid use of the API in case NUMA is specified.
>---
>
>Notes:
>    Version 2:
>    - fixed typo in subject
>    - fixed incomplete sentence in comment
>    - clarified that LXC doesn't use NUMA to the extent where this change would make sense in the LXC driver
>
> src/qemu/qemu_driver.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
>diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>index bec05d4..27cb3bf 100644
>--- a/src/qemu/qemu_driver.c
>+++ b/src/qemu/qemu_driver.c
>@@ -2307,6 +2307,16 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem,
>         if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
>             /* Help clang 2.8 decipher the logic flow.  */
>             sa_assert(persistentDef);
>+
>+            /* resizing memory with NUMA nodes specified doesn't work as there
>+             * is no way to decrease the individual node sizes with this API */

s/decrease/change/ as I believe increase isn't possible as well.

ACK with this squashed in (or added flag that will proportionally
change node memory sizes):

diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c
index 471b583..60c97ad 100644
--- i/src/qemu/qemu_driver.c
+++ w/src/qemu/qemu_driver.c
@@ -2309,7 +2309,7 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem,
             sa_assert(persistentDef);

             /* resizing memory with NUMA nodes specified doesn't work as there
-             * is no way to decrease the individual node sizes with this API */
+             * is no way to changee individual node sizes with this API */
             if (virDomainNumaGetNodeCount(persistentDef->numa) > 0) {
                 virReportError(VIR_ERR_OPERATION_INVALID, "%s",
                                _("maximum memory size of a domain with NUMA "
diff --git i/tools/virsh.pod w/tools/virsh.pod
index 343f26f..408cac5 100644
--- i/tools/virsh.pod
+++ w/tools/virsh.pod
@@ -1937,7 +1937,10 @@ exclusive. If no flag is specified, behavior is different depending
 on hypervisor.

 Some hypervisors such as QEMU/KVM don't support live changes (especially
-increasing) of the maximum memory limit.
+increasing) of the maximum memory limit.  Even persistent configuration changes
+might not be performed with some hypervisors/configuration (e.g. on NUMA enabled
+domains on QEMU).  For complex configuration changes use command B<edit>
+instead).

 I<size> is a scaled integer (see B<NOTES> above); it defaults to kibibytes
 (blocks of 1024 bytes) unless you provide a suffix (and the older option
--
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150226/917044ce/attachment-0001.sig>


More information about the libvir-list mailing list