Re: [PATCH 08/10] memcg: add cgroupfs interface to memcg dirty limits

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Balbir Singh
Date: Wednesday, October 6, 2010 - 6:30 am

* Greg Thelen <gthelen@google.com> [2010-10-03 23:58:03]:


The added interface is not uniform with the rest of our write
operations. Does the patch below help? I did a quick compile and run
test.


Make writes to memcg dirty tunables more uniform

From: Balbir Singh <balbir@linux.vnet.ibm.com>

We today support 'M', 'm', 'k', 'K', 'g' and 'G' suffixes for
general memcg writes. This patch provides the same functionality
for dirty tunables.
---

 mm/memcontrol.c |   47 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 37 insertions(+), 10 deletions(-)


diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 2d45a0a..3c360e6 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4323,6 +4323,41 @@ static u64 mem_cgroup_dirty_read(struct cgroup *cgrp, struct cftype *cft)
 }
 
 static int
+mem_cgroup_dirty_write_string(struct cgroup *cont, struct cftype *cft,
+				const char *buffer)
+{
+	struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp);
+	int type = cft->private;
+	int ret = -EINVAL;
+	unsigned long long val;
+
+	if (cgrp->parent == NULL)
+		return ret;
+
+	switch (type) {
+	case MEM_CGROUP_DIRTY_BYTES:
+		/* This function does all necessary parse...reuse it */
+		ret = res_counter_memparse_write_strategy(buffer, &val);
+		if (ret)
+			break;
+		memcg->dirty_param.dirty_bytes = val;
+		memcg->dirty_param.dirty_ratio  = 0;
+		break;
+	case MEM_CGROUP_DIRTY_BACKGROUND_BYTES:
+		ret = res_counter_memparse_write_strategy(buffer, &val);
+		if (ret)
+			break;
+		memcg->dirty_param.dirty_background_bytes = val;
+		memcg->dirty_param.dirty_background_ratio = 0;
+		break;
+	default:
+		BUG();
+		break;
+	}
+	return ret;
+}
+
+static int
 mem_cgroup_dirty_write(struct cgroup *cgrp, struct cftype *cft, u64 val)
 {
 	struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp);
@@ -4338,18 +4373,10 @@ mem_cgroup_dirty_write(struct cgroup *cgrp, struct cftype *cft, u64 val)
 		memcg->dirty_param.dirty_ratio = val;
 		memcg->dirty_param.dirty_bytes = 0;
 		break;
-	case MEM_CGROUP_DIRTY_BYTES:
-		memcg->dirty_param.dirty_bytes = val;
-		memcg->dirty_param.dirty_ratio  = 0;
-		break;
 	case MEM_CGROUP_DIRTY_BACKGROUND_RATIO:
 		memcg->dirty_param.dirty_background_ratio = val;
 		memcg->dirty_param.dirty_background_bytes = 0;
 		break;
-	case MEM_CGROUP_DIRTY_BACKGROUND_BYTES:
-		memcg->dirty_param.dirty_background_bytes = val;
-		memcg->dirty_param.dirty_background_ratio = 0;
-		break;
 	default:
 		BUG();
 		break;
@@ -4429,7 +4456,7 @@ static struct cftype mem_cgroup_files[] = {
 	{
 		.name = "dirty_bytes",
 		.read_u64 = mem_cgroup_dirty_read,
-		.write_u64 = mem_cgroup_dirty_write,
+		.write_string = mem_cgroup_dirty_write_string,
 		.private = MEM_CGROUP_DIRTY_BYTES,
 	},
 	{
@@ -4441,7 +4468,7 @@ static struct cftype mem_cgroup_files[] = {
 	{
 		.name = "dirty_background_bytes",
 		.read_u64 = mem_cgroup_dirty_read,
-		.write_u64 = mem_cgroup_dirty_write,
+		.write_u64 = mem_cgroup_dirty_write_string,
 		.private = MEM_CGROUP_DIRTY_BACKGROUND_BYTES,
 	},
 };

-- 
	Three Cheers,
	Balbir
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00/10] memcg: per cgroup dirty page accounting, Greg Thelen, (Sun Oct 3, 11:57 pm)
[PATCH 07/10] memcg: add dirty limits to mem_cgroup, Greg Thelen, (Sun Oct 3, 11:58 pm)
Re: [PATCH 01/10] memcg: add page_cgroup flags for dirty p ..., KAMEZAWA Hiroyuki, (Mon Oct 4, 11:20 pm)
Re: [PATCH 02/10] memcg: document cgroup dirty memory inte ..., KAMEZAWA Hiroyuki, (Mon Oct 4, 11:48 pm)
Re: [PATCH 03/10] memcg: create extensible page stat updat ..., KAMEZAWA Hiroyuki, (Mon Oct 4, 11:51 pm)
Re: [PATCH 04/10] memcg: disable local interrupts in lock_ ..., KAMEZAWA Hiroyuki, (Mon Oct 4, 11:54 pm)
Re: [PATCH 06/10] memcg: add kernel calls for memcg dirty ..., KAMEZAWA Hiroyuki, (Mon Oct 4, 11:55 pm)
Re: [PATCH 07/10] memcg: add dirty limits to mem_cgroup, KAMEZAWA Hiroyuki, (Tue Oct 5, 12:07 am)
Re: [PATCH 08/10] memcg: add cgroupfs interface to memcg d ..., KAMEZAWA Hiroyuki, (Tue Oct 5, 12:13 am)
Re: [PATCH 09/10] writeback: make determine_dirtyable_memo ..., KAMEZAWA Hiroyuki, (Tue Oct 5, 12:15 am)
Re: [PATCH 05/10] memcg: add dirty page accounting infrast ..., KAMEZAWA Hiroyuki, (Tue Oct 5, 12:22 am)
Re: [PATCH 10/10] memcg: check memcg dirty limits in page ..., KAMEZAWA Hiroyuki, (Tue Oct 5, 12:29 am)
Re: [PATCH 08/10] memcg: add cgroupfs interface to memcg d ..., KAMEZAWA Hiroyuki, (Tue Oct 5, 12:31 am)
Re: [PATCH 08/10] memcg: add cgroupfs interface to memcg d ..., Balbir Singh, (Wed Oct 6, 6:30 am)
Re: [PATCH 07/10] memcg: add dirty limits to mem_cgroup, KAMEZAWA Hiroyuki, (Wed Oct 6, 5:13 pm)
Re: [PATCH 07/10] memcg: add dirty limits to mem_cgroup, KAMEZAWA Hiroyuki, (Wed Oct 6, 5:48 pm)
[PATCH] memcg: reduce lock time at move charge (Was Re: [P ..., KAMEZAWA Hiroyuki, (Wed Oct 6, 11:21 pm)
[PATCH] memcg: lock-free clear page writeback (Was Re: [P ..., KAMEZAWA Hiroyuki, (Wed Oct 6, 11:24 pm)
Re: [PATCH] memcg: reduce lock time at move charge (Was Re ..., Daisuke Nishimura, (Thu Oct 7, 12:28 am)
Re: [PATCH] memcg: reduce lock time at move charge (Was Re ..., KAMEZAWA Hiroyuki, (Thu Oct 7, 12:42 am)
Re: [PATCH] memcg: lock-free clear page writeback (Was Re ..., KAMEZAWA Hiroyuki, (Thu Oct 7, 2:05 am)
Re: [PATCH v2] memcg: reduce lock time at move charge (Was ..., KAMEZAWA Hiroyuki, (Thu Oct 7, 10:12 pm)
Re: [PATCH 07/10] memcg: add dirty limits to mem_cgroup, KAMEZAWA Hiroyuki, (Mon Oct 11, 5:55 pm)
Re: [PATCH v2] memcg: reduce lock time at move charge (Was ..., KAMEZAWA Hiroyuki, (Mon Oct 11, 8:42 pm)
Re: [PATCH v2] memcg: reduce lock time at move charge (Was ..., Daisuke Nishimura, (Mon Oct 11, 8:56 pm)
Re: [PATCH v2] memcg: reduce lock time at move charge (Was ..., KAMEZAWA Hiroyuki, (Mon Oct 11, 10:01 pm)
[PATCH v4] memcg: reduce lock time at move charge, KAMEZAWA Hiroyuki, (Mon Oct 11, 10:48 pm)
Re: [PATCH v4] memcg: reduce lock time at move charge, Daisuke Nishimura, (Mon Oct 11, 11:23 pm)
Re: [PATCH 07/10] memcg: add dirty limits to mem_cgroup, Greg Thelen, (Tue Oct 12, 12:32 am)
Re: [PATCH 07/10] memcg: add dirty limits to mem_cgroup, KAMEZAWA Hiroyuki, (Tue Oct 12, 1:38 am)
Re: [PATCH 00/10] memcg: per cgroup dirty page accounting, KAMEZAWA Hiroyuki, (Sun Oct 17, 10:56 pm)