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

John Ferlan jferlan at redhat.com
Fri Feb 20 12:37:03 UTC 2015


$sub

s/seting/setting

On 02/18/2015 09:16 AM, 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.
> ---
>  src/qemu/qemu_driver.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 

Peeking forward to the next patch it seems src/lxc/lxc_driver.c has the
same flags & VIR_DOMAIN_MEM_MAXIMUM, then flags & VIR_DOMAIN_AFFECT_CONFIG.

So if the theory is lxc copied qemu, then should this also be done for
lxc? Especially since you're altering the else portion for both.


> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 2b0dac7..e2abbe0 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 along */

Looks like you didn't finish your thoughts with the comment... 'along ?'

Seems reasonable, but is there a downside?  I don't have the
relationship between the balloon driver and numa currently paged in ;-)

It also seems that something like this would be documented - that is -
in the API and perhaps virsh.pod that changing maxmem for certain
hypervisors for domains using numa cannot be done (instead use...).

John
> +            if (virDomainNumaGetNodeCount(persistentDef->numa) > 0) {
> +                virReportError(VIR_ERR_OPERATION_INVALID, "%s",
> +                               _("maximum memory size of a domain with NUMA "
> +                                 "nodes cannot be modified with this API"));
> +                goto endjob;
> +            }
> +
>              persistentDef->mem.max_balloon = newmem;
>              if (persistentDef->mem.cur_balloon > newmem)
>                  persistentDef->mem.cur_balloon = newmem;
> 




More information about the libvir-list mailing list