Thread (44 messages) 44 messages, 6 authors, 2011-09-28

Re: [PATCH v3 4/7] per-cgroup tcp buffers control

From: KAMEZAWA Hiroyuki <hidden>
Date: 2011-09-28 01:10:27
Also in: linux-mm, lkml

On Mon, 26 Sep 2011 22:53:05 -0300
Glauber Costa [off-list ref] wrote:
On 09/26/2011 07:59 AM, KAMEZAWA Hiroyuki wrote:
quoted
On Sun, 18 Sep 2011 21:56:42 -0300
Glauber Costa[off-list ref]  wrote:
quoted
With all the infrastructure in place, this patch implements
per-cgroup control for tcp memory pressure handling.

Signed-off-by: Glauber Costa<redacted>
CC: David S. Miller<davem@davemloft.net>
CC: Hiroyouki Kamezawa<redacted>
CC: Eric W. Biederman<redacted>
a comment below.
quoted
+int tcp_init_cgroup(struct proto *prot, struct cgroup *cgrp,
+		    struct cgroup_subsys *ss)
+{
+	struct mem_cgroup *cg = mem_cgroup_from_cont(cgrp);
+	unsigned long limit;
+
+	cg->tcp_memory_pressure = 0;
+	atomic_long_set(&cg->tcp_memory_allocated, 0);
+	percpu_counter_init(&cg->tcp_sockets_allocated, 0);
+
+	limit = nr_free_buffer_pages() / 8;
+	limit = max(limit, 128UL);
+
+	cg->tcp_prot_mem[0] = sysctl_tcp_mem[0];
+	cg->tcp_prot_mem[1] = sysctl_tcp_mem[1];
+	cg->tcp_prot_mem[2] = sysctl_tcp_mem[2];
+
Then, the parameter doesn't inherit parent's one ?

I think sockets_populate should pass 'parent' and


I think you should have a function

     mem_cgroup_should_inherit_parent_settings(parent)

(This is because you made this feature as a part of memcg.
  please provide expected behavior.)

Thanks,
-Kame
Kame: Another look into this:

sysctl_tcp_mem is a global value, unless you have different namespaces.
So it is either global anyway, or should come from the namespace, not 
the parent.

Now, the goal here is to set the maximum possible value for those 
fields. That, indeed, should come from the parent.

That's my understanding...
Hmm, I may misunderstand something. If this isn't a value you don't want to limit
by memcg's kmem_limit, it's ok.
Maybe memcg should just take care of kmem_limit.

Thanks,
-Kame
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help