]> xenbits.xensource.com Git - libvirt.git/commitdiff
cgroup: Implement blkio.weight tuning API.
authorGui Jianfeng <guijianfeng@cn.fujitsu.com>
Tue, 8 Feb 2011 06:56:39 +0000 (14:56 +0800)
committerEric Blake <eblake@redhat.com>
Tue, 8 Feb 2011 18:25:33 +0000 (11:25 -0700)
Implement blkio.weight tuning API.

Acked-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
src/libvirt_private.syms
src/util/cgroup.c
src/util/cgroup.h

index 88e270c2760990407b6cd6e828b1063b08da08ec..1bbd44e8dd91d5bdc1486ddd3707b306feaf12ec 100644 (file)
@@ -66,6 +66,7 @@ virCgroupDenyDevicePath;
 virCgroupForDomain;
 virCgroupForDriver;
 virCgroupFree;
+virCgroupGetBlkioWeight;
 virCgroupGetCpuShares;
 virCgroupGetCpuacctUsage;
 virCgroupGetFreezerState;
@@ -75,6 +76,7 @@ virCgroupGetMemoryUsage;
 virCgroupGetSwapHardLimit;
 virCgroupMounted;
 virCgroupRemove;
+virCgroupSetBlkioWeight;
 virCgroupSetCpuShares;
 virCgroupSetFreezerState;
 virCgroupSetMemory;
index 309f4e9b58dd3af4dd5fcca715497e0b00a5b3a7..de1fd8e24b24d8409526ff1e8a2c2cb08c3ffdcb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * cgroup.c: Tools for managing cgroups
  *
- * Copyright (C) 2010 Red Hat, Inc.
+ * Copyright (C) 2010-2011 Red Hat, Inc.
  * Copyright IBM Corp. 2008
  *
  * See COPYING.LIB for the License of this software
@@ -850,6 +850,45 @@ int virCgroupForDomain(virCgroupPtr driver ATTRIBUTE_UNUSED,
 }
 #endif
 
+/**
+ * virCgroupSetBlkioWeight:
+ *
+ * @group: The cgroup to change io weight for
+ * @weight: The Weight for this cgroup
+ *
+ * Returns: 0 on success
+ */
+int virCgroupSetBlkioWeight(virCgroupPtr group, unsigned int weight)
+{
+    if (weight > 1000 || weight < 100)
+        return -EINVAL;
+
+    return virCgroupSetValueU64(group,
+                                VIR_CGROUP_CONTROLLER_BLKIO,
+                                "blkio.weight",
+                                weight);
+}
+
+/**
+ * virCgroupGetBlkioWeight:
+ *
+ * @group: The cgroup to get weight for
+ * @Weight: Pointer to returned weight
+ *
+ * Returns: 0 on success
+ */
+int virCgroupGetBlkioWeight(virCgroupPtr group, unsigned int *weight)
+{
+    unsigned long long tmp;
+    int ret;
+    ret = virCgroupGetValueU64(group,
+                               VIR_CGROUP_CONTROLLER_BLKIO,
+                               "blkio.weight", &tmp);
+    if (ret == 0)
+        *weight = tmp;
+    return ret;
+}
+
 /**
  * virCgroupSetMemory:
  *
index 67b12990230e39f79d1a239c1305b662fcd9ef75..f1bdd0f3dafb698cc9b63426da6a8fc27a02644d 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * cgroup.h: Interface to tools for managing cgroups
  *
+ * Copyright (C) 2011 Red Hat, Inc.
  * Copyright IBM Corp. 2008
  *
  * See COPYING.LIB for the License of this software
@@ -41,6 +42,9 @@ int virCgroupForDomain(virCgroupPtr driver,
 
 int virCgroupAddTask(virCgroupPtr group, pid_t pid);
 
+int virCgroupSetBlkioWeight(virCgroupPtr group, unsigned int weight);
+int virCgroupGetBlkioWeight(virCgroupPtr group, unsigned int *weight);
+
 int virCgroupSetMemory(virCgroupPtr group, unsigned long long kb);
 int virCgroupGetMemoryUsage(virCgroupPtr group, unsigned long *kb);