Re: [libvirt] [PATCH v4 05/13] Implement cgroup memory controller tunables

2010-10-12 Thread Daniel Veillard
On Fri, Oct 08, 2010 at 05:45:34PM +0530, Nikunj A. Dadhania wrote:
 From: Nikunj A. Dadhania nik...@linux.vnet.ibm.com
 
 Provides interfaces for setting/getting memory tunables like hard_limit,
 soft_limit and swap_hard_limit

  ACK, just one extra misplaced space,

Daniel

-- 
Daniel Veillard  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
dan...@veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH v4 05/13] Implement cgroup memory controller tunables

2010-10-08 Thread Nikunj A. Dadhania
From: Nikunj A. Dadhania nik...@linux.vnet.ibm.com

Provides interfaces for setting/getting memory tunables like hard_limit,
soft_limit and swap_hard_limit

Acked-by: Balbir Singh bal...@linux.vnet.ibm.com
Signed-off-by: Nikunj A. Dadhania nik...@linux.vnet.ibm.com
---
 src/libvirt_private.syms |6 +++
 src/util/cgroup.c|  106 ++
 src/util/cgroup.h|7 +++
 3 files changed, 119 insertions(+), 0 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 301b0ef..09b108c 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -77,6 +77,12 @@ virCgroupControllerTypeFromString;
 virCgroupGetCpuacctUsage;
 virCgroupGetFreezerState;
 virCgroupSetFreezerState;
+virCgroupSetMemoryHardLimit;
+virCgroupGetMemoryHardLimit;
+virCgroupSetMemorySoftLimit;
+virCgroupGetMemorySoftLimit;
+virCgroupSetSwapHardLimit;
+virCgroupGetSwapHardLimit;
 
 
 # cpu.h
diff --git a/src/util/cgroup.c b/src/util/cgroup.c
index 024036a..f94db12 100644
--- a/src/util/cgroup.c
+++ b/src/util/cgroup.c
@@ -874,6 +874,112 @@ int virCgroupGetMemoryUsage(virCgroupPtr group, unsigned 
long *kb)
 }
 
 /**
+ * virCgroupSetMemoryHardLimit:
+ * 
+ * @group: The cgroup to change memory hard limit for
+ * @kb: The memory amount in kilobytes
+ *
+ * Returns: 0 on success
+ */
+int virCgroupSetMemoryHardLimit(virCgroupPtr group, unsigned long kb)
+{
+return virCgroupSetMemory(group, kb);
+}
+
+/**
+ * virCgroupGetMemoryHardLimit:
+ *
+ * @group: The cgroup to get the memory hard limit for
+ * @kb: The memory amount in kilobytes
+ *
+ * Returns: 0 on success
+ */
+int virCgroupGetMemoryHardLimit(virCgroupPtr group, unsigned long *kb)
+{
+long long unsigned int limit_in_bytes;
+int ret;
+ret = virCgroupGetValueU64(group,
+   VIR_CGROUP_CONTROLLER_MEMORY,
+   memory.limit_in_bytes, limit_in_bytes);
+if (ret == 0)
+*kb = (unsigned long) limit_in_bytes  10;
+return ret;
+}
+
+/**
+ * virCgroupSetMemorySoftLimit:
+ *
+ * @group: The cgroup to change memory soft limit for
+ * @kb: The memory amount in kilobytes
+ *
+ * Returns: 0 on success
+ */
+int virCgroupSetMemorySoftLimit(virCgroupPtr group, unsigned long kb)
+{
+return virCgroupSetValueU64(group,
+VIR_CGROUP_CONTROLLER_MEMORY,
+memory.soft_limit_in_bytes,
+kb  10);
+}
+
+
+/**
+ * virCgroupGetMemorySoftLimit:
+ *
+ * @group: The cgroup to get the memory soft limit for
+ * @kb: The memory amount in kilobytes
+ *
+ * Returns: 0 on success
+ */
+int virCgroupGetMemorySoftLimit(virCgroupPtr group, unsigned long *kb)
+{
+long long unsigned int limit_in_bytes;
+int ret;
+ret = virCgroupGetValueU64(group,
+   VIR_CGROUP_CONTROLLER_MEMORY,
+   memory.soft_limit_in_bytes, limit_in_bytes);
+if (ret == 0)
+*kb = (unsigned long) limit_in_bytes  10;
+return ret;
+}
+
+/**
+ * virCgroupSetSwapHardLimit:
+ *
+ * @group: The cgroup to change swap hard limit for
+ * @kb: The swap amount in kilobytes
+ *
+ * Returns: 0 on success
+ */
+int virCgroupSetSwapHardLimit(virCgroupPtr group, unsigned long kb)
+{
+return virCgroupSetValueU64(group,
+VIR_CGROUP_CONTROLLER_MEMORY,
+memory.memsw.limit_in_bytes,
+kb  10);
+}
+
+/**
+ * virCgroupGetSwapHardLimit:
+ *
+ * @group: The cgroup to get swap hard limit for
+ * @kb: The swap amount in kilobytes
+ *
+ * Returns: 0 on success
+ */
+int virCgroupGetSwapHardLimit(virCgroupPtr group, unsigned long *kb)
+{
+long long unsigned int limit_in_bytes;
+int ret;
+ret = virCgroupGetValueU64(group,
+   VIR_CGROUP_CONTROLLER_MEMORY,
+   memory.memsw.limit_in_bytes, limit_in_bytes);
+if (ret == 0)
+*kb = (unsigned long) limit_in_bytes  10;
+return ret;
+}
+
+/**
  * virCgroupDenyAllDevices:
  *
  * @group: The cgroup to deny devices for
diff --git a/src/util/cgroup.h b/src/util/cgroup.h
index 2bea49f..b8f2d08 100644
--- a/src/util/cgroup.h
+++ b/src/util/cgroup.h
@@ -43,6 +43,13 @@ int virCgroupAddTask(virCgroupPtr group, pid_t pid);
 int virCgroupSetMemory(virCgroupPtr group, unsigned long kb);
 int virCgroupGetMemoryUsage(virCgroupPtr group, unsigned long *kb);
 
+int virCgroupSetMemoryHardLimit(virCgroupPtr group, unsigned long kb);
+int virCgroupGetMemoryHardLimit(virCgroupPtr group, unsigned long *kb);
+int virCgroupSetMemorySoftLimit(virCgroupPtr group, unsigned long kb);
+int virCgroupGetMemorySoftLimit(virCgroupPtr group, unsigned long *kb);
+int virCgroupSetSwapHardLimit(virCgroupPtr group, unsigned long kb);
+int virCgroupGetSwapHardLimit(virCgroupPtr group, unsigned long *kb);
+
 int virCgroupDenyAllDevices(virCgroupPtr group);