[libvirt] [PATCH 1/2] cgroup: Add accessors for cpuset.memory_migrate
John Ferlan
jferlan at redhat.com
Thu Mar 19 23:11:09 UTC 2015
On 03/11/2015 08:39 AM, Martin Kletzander wrote:
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> src/libvirt_private.syms | 2 ++
> src/util/vircgroup.c | 42 +++++++++++++++++++++++++++++++++++++++++-
> src/util/vircgroup.h | 5 ++++-
> 3 files changed, 47 insertions(+), 2 deletions(-)
>
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index e0d5459..f3d8517 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1130,6 +1130,7 @@ virCgroupGetCpuacctUsage;
> virCgroupGetCpuCfsPeriod;
> virCgroupGetCpuCfsQuota;
> virCgroupGetCpusetCpus;
> +virCgroupGetCpusetMemoryMigrate;
> virCgroupGetCpusetMems;
> virCgroupGetCpuShares;
> virCgroupGetDevicePermsString;
> @@ -1170,6 +1171,7 @@ virCgroupSetBlkioWeight;
> virCgroupSetCpuCfsPeriod;
> virCgroupSetCpuCfsQuota;
> virCgroupSetCpusetCpus;
> +virCgroupSetCpusetMemoryMigrate;
> virCgroupSetCpusetMems;
> virCgroupSetCpuShares;
> virCgroupSetFreezerState;
> diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
> index 6957e81..5d3de10 100644
> --- a/src/util/vircgroup.c
> +++ b/src/util/vircgroup.c
> @@ -1,7 +1,7 @@
> /*
> * vircgroup.c: methods for managing control cgroups
> *
> - * Copyright (C) 2010-2014 Red Hat, Inc.
> + * Copyright (C) 2010-2015 Red Hat, Inc.
> * Copyright IBM Corp. 2008
> *
> * This library is free software; you can redistribute it and/or
> @@ -872,6 +872,7 @@ virCgroupCpuSetInherit(virCgroupPtr parent, virCgroupPtr group)
> const char *inherit_values[] = {
> "cpuset.cpus",
> "cpuset.mems",
> + "cpuset.memory_migrate",
> };
>
> VIR_DEBUG("Setting up inheritance %s -> %s", parent->path, group->path);
> @@ -2671,6 +2672,45 @@ virCgroupGetCpusetMems(virCgroupPtr group, char **mems)
>
>
> /**
> + * virCgroupSetCpusetMemoryMigrate:
> + *
> + * @group: The cgroup to set cpuset.memory_migrate for
> + * @migrate: Whether to migrate the memory on change or not
> + *
> + * Returns: 0 on success
> + */
> +int
> +virCgroupSetCpusetMemoryMigrate(virCgroupPtr group, bool migrate)
> +{
> + return virCgroupSetValueStr(group,
> + VIR_CGROUP_CONTROLLER_CPUSET,
> + "cpuset.memory_migrate",
> + migrate ? "1" : "0");
> +}
are my eyes deceiving me?... boolean here (1 or 0)
> +
> +
> +/**
> + * virCgroupGetCpusetMemoryMigrate:
> + *
> + * @group: The cgroup to get cpuset.memory_migrate for
> + * @migrate: Migration setting
> + *
> + * Returns: 0 on success
> + */
> +int
> +virCgroupGetCpusetMemoryMigrate(virCgroupPtr group, bool *migrate)
> +{
> + unsigned long long value = 0;
> + int ret = virCgroupGetValueU64(group,
But we're getting a U64 here? for what's documented as "contains a flag
(0 or 1)
> + VIR_CGROUP_CONTROLLER_CPUSET,
> + "cpuset.memory_migrate",
> + &value);
> + *migrate = !!value;
> + return ret;
> +}
Also there's no callers to this? I see that vircgrouptest.c exists and
there are a few API's called there - of course none for the
virCgroupGetCpuset*...
I think this is "ACKable" with perhaps usage of the right API to get at
the value.
John
> +
> +
> +/**
> * virCgroupSetCpusetCpus:
> *
> * @group: The cgroup to set cpuset.cpus for
> diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
> index 9f984e7..bfb3a9b 100644
> --- a/src/util/vircgroup.h
> +++ b/src/util/vircgroup.h
> @@ -1,7 +1,7 @@
> /*
> * vircgroup.h: methods for managing control cgroups
> *
> - * Copyright (C) 2011-2014 Red Hat, Inc.
> + * Copyright (C) 2011-2015 Red Hat, Inc.
> * Copyright IBM Corp. 2008
> *
> * This library is free software; you can redistribute it and/or
> @@ -251,6 +251,9 @@ int virCgroupGetFreezerState(virCgroupPtr group, char **state);
> int virCgroupSetCpusetMems(virCgroupPtr group, const char *mems);
> int virCgroupGetCpusetMems(virCgroupPtr group, char **mems);
>
> +int virCgroupSetCpusetMemoryMigrate(virCgroupPtr group, bool migrate);
> +int virCgroupGetCpusetMemoryMigrate(virCgroupPtr group, bool *migrate);
> +
> int virCgroupSetCpusetCpus(virCgroupPtr group, const char *cpus);
> int virCgroupGetCpusetCpus(virCgroupPtr group, char **cpus);
>
More information about the libvir-list
mailing list