From: Glauber Costa <glommer@parallels.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-kernel@vger.kernel.org, paul@paulmenage.org,
lizf@cn.fujitsu.com, ebiederm@xmission.com, davem@davemloft.net,
gthelen@google.com, netdev@vger.kernel.org, linux-mm@kvack.org,
kirill@shutemov.name, avagin@parallels.com, devel@openvz.org,
eric.dumazet@gmail.com, cgroups@vger.kernel.org
Subject: Re: [PATCH v7 00/10] Request for Inclusion: per-cgroup tcp memory pressure
Date: Mon, 5 Dec 2011 07:09:51 -0200 [thread overview]
Message-ID: <4EDC8A5F.8040402@parallels.com> (raw)
In-Reply-To: <20111205110619.ecc538a0.kamezawa.hiroyu@jp.fujitsu.com>
On 12/05/2011 12:06 AM, KAMEZAWA Hiroyuki wrote:
> On Fri, 2 Dec 2011 16:04:08 -0200
> Glauber Costa<glommer@parallels.com> wrote:
>
>> On 11/30/2011 12:11 AM, KAMEZAWA Hiroyuki wrote:
>>> On Tue, 29 Nov 2011 21:56:51 -0200
>>> Glauber Costa<glommer@parallels.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> This patchset implements per-cgroup tcp memory pressure controls. It did not change
>>>> significantly since last submission: rather, it just merges the comments Kame had.
>>>> Most of them are style-related and/or Documentation, but there are two real bugs he
>>>> managed to spot (thanks)
>>>>
>>>> Please let me know if there is anything else I should address.
>>>>
>>>
>>> After reading all codes again, I feel some strange. Could you clarify ?
>>>
>>> Here.
>>> ==
>>> +void sock_update_memcg(struct sock *sk)
>>> +{
>>> + /* right now a socket spends its whole life in the same cgroup */
>>> + if (sk->sk_cgrp) {
>>> + WARN_ON(1);
>>> + return;
>>> + }
>>> + if (static_branch(&memcg_socket_limit_enabled)) {
>>> + struct mem_cgroup *memcg;
>>> +
>>> + BUG_ON(!sk->sk_prot->proto_cgroup);
>>> +
>>> + rcu_read_lock();
>>> + memcg = mem_cgroup_from_task(current);
>>> + if (!mem_cgroup_is_root(memcg))
>>> + sk->sk_cgrp = sk->sk_prot->proto_cgroup(memcg);
>>> + rcu_read_unlock();
>>> ==
>>>
>>> sk->sk_cgrp is set to a memcg without any reference count.
>>>
>>> Then, no check for preventing rmdir() and freeing memcgroup.
>>>
>>> Is there some css_get() or mem_cgroup_get() somewhere ?
>>>
>>
>> There were a css_get in the first version of this patchset. It was
>> removed, however, because it was deemed anti-intuitive to prevent rmdir,
>> since we can't know which sockets are blocking it, or do anything about
>> it. Or did I misunderstand something ?
>>
>
> Maybe I misuderstood. Thank you. Ok, there is no css_get/put and
> rmdir() is allowed. But, hmm....what's guarding threads from stale
> pointer access ?
>
> Does a memory cgroup which is pointed by sk->sk_cgrp always exist ?
>
If I am not mistaken, yes, it will. (Ok, right now it won't)
Reason is a cgroup can't be removed if it is empty.
To make it empty, you need to move the tasks away.
So the sockets will be moved away as well when you do it. So right now
they are not, so it would then probably be better to increase a
reference count with a comment saying that it is temporary.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-12-05 9:10 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-29 23:56 Glauber Costa
2011-11-29 23:56 ` [PATCH v7 01/10] Basic kernel memory functionality for the Memory Controller Glauber Costa
2011-11-30 0:48 ` KAMEZAWA Hiroyuki
2011-11-29 23:56 ` [PATCH v7 02/10] foundations of per-cgroup memory pressure controlling Glauber Costa
2011-11-30 0:43 ` KAMEZAWA Hiroyuki
2011-12-02 17:46 ` Glauber Costa
2011-12-05 1:59 ` KAMEZAWA Hiroyuki
2011-12-05 9:06 ` Glauber Costa
2011-11-29 23:56 ` [PATCH v7 03/10] socket: initial cgroup code Glauber Costa
2011-11-30 1:07 ` KAMEZAWA Hiroyuki
2011-11-29 23:56 ` [PATCH v7 04/10] tcp memory pressure controls Glauber Costa
2011-11-30 1:49 ` KAMEZAWA Hiroyuki
2011-12-02 17:57 ` Glauber Costa
2011-12-05 2:01 ` KAMEZAWA Hiroyuki
2011-11-29 23:56 ` [PATCH v7 05/10] per-netns ipv4 sysctl_tcp_mem Glauber Costa
2011-11-29 23:56 ` [PATCH v7 06/10] tcp buffer limitation: per-cgroup limit Glauber Costa
2011-11-30 2:00 ` KAMEZAWA Hiroyuki
2011-11-29 23:56 ` [PATCH v7 07/10] Display current tcp memory allocation in kmem cgroup Glauber Costa
2011-11-29 23:56 ` [PATCH v7 08/10] Display current tcp failcnt " Glauber Costa
2011-11-30 2:01 ` KAMEZAWA Hiroyuki
2011-11-29 23:57 ` [PATCH v7 09/10] Display maximum tcp memory allocation " Glauber Costa
2011-11-30 2:02 ` KAMEZAWA Hiroyuki
2011-11-29 23:57 ` [PATCH v7 10/10] Disable task moving when using kernel memory accounting Glauber Costa
2011-11-30 2:22 ` KAMEZAWA Hiroyuki
2011-12-02 18:11 ` Glauber Costa
2011-12-05 2:18 ` KAMEZAWA Hiroyuki
2011-12-05 9:18 ` Glauber Costa
2011-12-06 0:07 ` KAMEZAWA Hiroyuki
2011-11-30 2:11 ` [PATCH v7 00/10] Request for Inclusion: per-cgroup tcp memory pressure KAMEZAWA Hiroyuki
2011-12-02 18:04 ` Glauber Costa
2011-12-05 2:06 ` KAMEZAWA Hiroyuki
2011-12-05 9:09 ` Glauber Costa [this message]
2011-12-05 9:51 ` KAMEZAWA Hiroyuki
2011-12-05 10:28 ` Glauber Costa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EDC8A5F.8040402@parallels.com \
--to=glommer@parallels.com \
--cc=avagin@parallels.com \
--cc=cgroups@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=devel@openvz.org \
--cc=ebiederm@xmission.com \
--cc=eric.dumazet@gmail.com \
--cc=gthelen@google.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lizf@cn.fujitsu.com \
--cc=netdev@vger.kernel.org \
--cc=paul@paulmenage.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox