[libvirt] [PATCH 2/3] cgroup: Implement blkio.weight tuning API.

Implement blkio.weight tuning API. Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com> --- src/libvirt_private.syms | 2 ++ src/util/cgroup.c | 36 ++++++++++++++++++++++++++++++++++++ src/util/cgroup.h | 3 +++ 3 files changed, 41 insertions(+), 0 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 2ce4bed..97b9851 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -77,6 +77,8 @@ virCgroupMounted; virCgroupRemove; virCgroupSetCpuShares; virCgroupSetFreezerState; +virCgroupSetWeight; +virCgroupGetWeight; virCgroupSetMemory; virCgroupSetMemoryHardLimit; virCgroupSetMemorySoftLimit; diff --git a/src/util/cgroup.c b/src/util/cgroup.c index 309f4e9..a3d3f29 100644 --- a/src/util/cgroup.c +++ b/src/util/cgroup.c @@ -851,6 +851,42 @@ int virCgroupForDomain(virCgroupPtr driver ATTRIBUTE_UNUSED, #endif /** + * virCgroupSetWeight: + * + * @group: The cgroup to change io weight for + * @weight: The Weight for this cgroup + * + * Returns: 0 on success + */ +int virCgroupSetWeight(virCgroupPtr group, unsigned long weight) +{ + return virCgroupSetValueU64(group, + VIR_CGROUP_CONTROLLER_BLKIO, + "blkio.weight", + weight); +} + +/** + * virCgroupGetWeight: + * + * @group: The cgroup to get weight for + * @Weight: Pointer to returned weight + * + * Returns: 0 on success + */ +int virCgroupGetWeight(virCgroupPtr group, unsigned long *weight) +{ + long long unsigned int __weight; + int ret; + ret = virCgroupGetValueU64(group, + VIR_CGROUP_CONTROLLER_BLKIO, + "blkio.weight", &__weight); + if (ret == 0) + *weight = (unsigned long) __weight; + return ret; +} + +/** * virCgroupSetMemory: * * @group: The cgroup to change memory for diff --git a/src/util/cgroup.h b/src/util/cgroup.h index 67b1299..99c1cfe 100644 --- a/src/util/cgroup.h +++ b/src/util/cgroup.h @@ -41,6 +41,9 @@ int virCgroupForDomain(virCgroupPtr driver, int virCgroupAddTask(virCgroupPtr group, pid_t pid); +int virCgroupSetWeight(virCgroupPtr group, unsigned long weight); +int virCgroupGetWeight(virCgroupPtr group, unsigned long *weight); + int virCgroupSetMemory(virCgroupPtr group, unsigned long long kb); int virCgroupGetMemoryUsage(virCgroupPtr group, unsigned long *kb); -- 1.7.1

On Sun, Jan 23, 2011 at 02:18:55PM +0800, Gui Jianfeng wrote:
Implement blkio.weight tuning API.
Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com> --- src/libvirt_private.syms | 2 ++ src/util/cgroup.c | 36 ++++++++++++++++++++++++++++++++++++ src/util/cgroup.h | 3 +++ 3 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 2ce4bed..97b9851 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -77,6 +77,8 @@ virCgroupMounted; virCgroupRemove; virCgroupSetCpuShares; virCgroupSetFreezerState; +virCgroupSetWeight; +virCgroupGetWeight; virCgroupSetMemory; virCgroupSetMemoryHardLimit; virCgroupSetMemorySoftLimit; diff --git a/src/util/cgroup.c b/src/util/cgroup.c index 309f4e9..a3d3f29 100644 --- a/src/util/cgroup.c +++ b/src/util/cgroup.c @@ -851,6 +851,42 @@ int virCgroupForDomain(virCgroupPtr driver ATTRIBUTE_UNUSED, #endif
/** + * virCgroupSetWeight: + * + * @group: The cgroup to change io weight for + * @weight: The Weight for this cgroup + * + * Returns: 0 on success + */ +int virCgroupSetWeight(virCgroupPtr group, unsigned long weight) +{ + return virCgroupSetValueU64(group, + VIR_CGROUP_CONTROLLER_BLKIO, + "blkio.weight", + weight); +} + +/** + * virCgroupGetWeight: + * + * @group: The cgroup to get weight for + * @Weight: Pointer to returned weight + * + * Returns: 0 on success + */ +int virCgroupGetWeight(virCgroupPtr group, unsigned long *weight) +{ + long long unsigned int __weight; + int ret; + ret = virCgroupGetValueU64(group, + VIR_CGROUP_CONTROLLER_BLKIO, + "blkio.weight", &__weight); + if (ret == 0) + *weight = (unsigned long) __weight; + return ret; +} + +/** * virCgroupSetMemory: * * @group: The cgroup to change memory for diff --git a/src/util/cgroup.h b/src/util/cgroup.h index 67b1299..99c1cfe 100644 --- a/src/util/cgroup.h +++ b/src/util/cgroup.h @@ -41,6 +41,9 @@ int virCgroupForDomain(virCgroupPtr driver,
int virCgroupAddTask(virCgroupPtr group, pid_t pid);
+int virCgroupSetWeight(virCgroupPtr group, unsigned long weight); +int virCgroupGetWeight(virCgroupPtr group, unsigned long *weight); + int virCgroupSetMemory(virCgroupPtr group, unsigned long long kb); int virCgroupGetMemoryUsage(virCgroupPtr group, unsigned long *kb);
ACK Daniel

On 01/26/2011 05:42 AM, Daniel P. Berrange wrote:
On Sun, Jan 23, 2011 at 02:18:55PM +0800, Gui Jianfeng wrote:
Implement blkio.weight tuning API.
Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
ACK
I saw that 1 and 2 had been ACK'd, and was about to push, but then I looked further and saw that 3 had comments, and that you had posted a v2 of the series with further comments (including one about still missing documentation): https://www.redhat.com/archives/libvir-list/2011-January/msg01110.html Let's get that fixed into a v3 before I push anything. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (3)
-
Daniel P. Berrange
-
Eric Blake
-
Gui Jianfeng