[PATCH 1/1] qemuDomainSetNumaParamsLive: set nodeset for root cgroup

Michal Privoznik mprivozn at redhat.com
Tue Jun 16 14:33:15 UTC 2020


On 6/11/20 8:54 PM, Daniel Henrique Barboza wrote:
> This function handles the change of NUMA nodeset for a given
> guest, setting CpusetMems for the emulator, vcpus and IOThread
> sub-groups. It doesn't set the same  nodeset to the root cgroup
> though. This means that cpuset.mems of the root cgroup ends up
> holding the new nodeset and the old nodeset as well. For
> a guest with placement=strict, nodeset='0', doing
> 
> virsh numatune <vm> 0 8 --live
> 
> Will make cpuset.mems of emulator, vcpus and iothread to be
> "8", but cpuset.mems of the root cgroup will be "0,8".
> 
> This means that any new tasks that ends up landing in the
> root cgroup, aside from the emulator/vcpus/iothread sub-groups,
> will be split between the old nodeset and the new nodeset,
> which is not what we want.
> 
> Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> ---
>   src/qemu/qemu_driver.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 88517ba6a7..59d322c8f3 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -9702,6 +9702,10 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm,
>           virCgroupFree(&cgroup_temp);
>       }
>   
> +    /* set nodeset for root cgroup */
> +    if (virCgroupSetCpusetMems(priv->cgroup, nodeset_str) < 0)
> +        goto cleanup;
> +
>       ret = 0;
>    cleanup:
>       virCgroupFree(&cgroup_temp);
> 

Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

and pushed.

Michal




More information about the libvir-list mailing list