From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: Paul Menage <menage@google.com>
Cc: Pavel Emelianov <xemul@openvz.org>,
Hugh Dickins <hugh@veritas.com>,
Sudhir Kumar <skumar@linux.vnet.ibm.com>,
YAMAMOTO Takashi <yamamoto@valinux.co.jp>,
lizf@cn.fujitsu.com, linux-kernel@vger.kernel.org,
taka@valinux.co.jp, linux-mm@kvack.org,
David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [RFC][-mm] Add an owner to the mm_struct (v3)
Date: Tue, 01 Apr 2008 11:53:47 +0530 [thread overview]
Message-ID: <47F1D4F3.3040207@linux.vnet.ibm.com> (raw)
In-Reply-To: <6599ad830803312316m17f9e6f1mf7f068c0314a789e@mail.gmail.com>
Paul Menage wrote:
> On Mon, Mar 31, 2008 at 10:43 PM, Balbir Singh
> <balbir@linux.vnet.ibm.com> wrote:
>> -static struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
>> +struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
>> {
>> return container_of(task_subsys_state(p, mem_cgroup_subsys_id),
>> struct mem_cgroup, css);
>> }
>
> This should probably be inlined in the header file if it's needed
> outside this file.
I thought about it, but that also means we need to export struct mem_cgroup into
the header file
>> +static inline void mm_fork_init_owner(struct task_struct *p)
>> +{
>> +}
>
> I think this is stale.
>
Yes, it is stale now :)
>> +
>> +void mm_update_next_owner(struct mm_struct *mm)
>> +{
>> + struct task_struct *c, *g, *p = current;
>> +
>> + /*
>> + * This routine should not be called for init_task
>> + */
>> + BUG_ON(p == p->parent);
>
> I think (as you mentioned earlier) that we need an RCU critical
> section in this function, in order for the tasklist traversal to be
> safe.
>
> Maybe also BUG_ON(p != mm->owner) ?
>
Yes
>> + list_for_each_entry(c, &p->children, sibling) {
>> + if (c->mm && (c->mm == mm))
>
> Since mm != NULL, no need to test for c->mm since if it's NULL then c->mm != mm
>
OK
>> +assign_new_owner:
>> + BUG_ON(c == p);
>> + task_lock(c);
>> + if (c->mm != mm) {
>> + task_unlock(c);
>> + goto retry;
>> + }
>> + mm->owner = c;
>
> Here we'll want to call vm_cgroup_update_mm_owner(), to adjust the
> accounting. (Or if in future we end up with more than a couple of
> subsystems that want notification at this time, we'll want to call
> cgroup_update_mm_owner() and have it call any interested subsystems.
>
I don't think we need to adjust accounting, since only mm->owner is changing and
not the cgroup to which the task/mm belongs. Do we really need to notify? I
don't want to do any notifications under task_lock().
> Paul
--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL
WARNING: multiple messages have this Message-ID (diff)
From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: Paul Menage <menage@google.com>
Cc: Pavel Emelianov <xemul@openvz.org>,
Hugh Dickins <hugh@veritas.com>,
Sudhir Kumar <skumar@linux.vnet.ibm.com>,
YAMAMOTO Takashi <yamamoto@valinux.co.jp>,
lizf@cn.fujitsu.com, linux-kernel@vger.kernel.org,
taka@valinux.co.jp, linux-mm@kvack.org,
David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [RFC][-mm] Add an owner to the mm_struct (v3)
Date: Tue, 01 Apr 2008 11:53:47 +0530 [thread overview]
Message-ID: <47F1D4F3.3040207@linux.vnet.ibm.com> (raw)
In-Reply-To: <6599ad830803312316m17f9e6f1mf7f068c0314a789e@mail.gmail.com>
Paul Menage wrote:
> On Mon, Mar 31, 2008 at 10:43 PM, Balbir Singh
> <balbir@linux.vnet.ibm.com> wrote:
>> -static struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
>> +struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
>> {
>> return container_of(task_subsys_state(p, mem_cgroup_subsys_id),
>> struct mem_cgroup, css);
>> }
>
> This should probably be inlined in the header file if it's needed
> outside this file.
I thought about it, but that also means we need to export struct mem_cgroup into
the header file
>> +static inline void mm_fork_init_owner(struct task_struct *p)
>> +{
>> +}
>
> I think this is stale.
>
Yes, it is stale now :)
>> +
>> +void mm_update_next_owner(struct mm_struct *mm)
>> +{
>> + struct task_struct *c, *g, *p = current;
>> +
>> + /*
>> + * This routine should not be called for init_task
>> + */
>> + BUG_ON(p == p->parent);
>
> I think (as you mentioned earlier) that we need an RCU critical
> section in this function, in order for the tasklist traversal to be
> safe.
>
> Maybe also BUG_ON(p != mm->owner) ?
>
Yes
>> + list_for_each_entry(c, &p->children, sibling) {
>> + if (c->mm && (c->mm == mm))
>
> Since mm != NULL, no need to test for c->mm since if it's NULL then c->mm != mm
>
OK
>> +assign_new_owner:
>> + BUG_ON(c == p);
>> + task_lock(c);
>> + if (c->mm != mm) {
>> + task_unlock(c);
>> + goto retry;
>> + }
>> + mm->owner = c;
>
> Here we'll want to call vm_cgroup_update_mm_owner(), to adjust the
> accounting. (Or if in future we end up with more than a couple of
> subsystems that want notification at this time, we'll want to call
> cgroup_update_mm_owner() and have it call any interested subsystems.
>
I don't think we need to adjust accounting, since only mm->owner is changing and
not the cgroup to which the task/mm belongs. Do we really need to notify? I
don't want to do any notifications under task_lock().
> Paul
--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL
--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2008-04-01 6:36 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-01 5:43 [RFC][-mm] Add an owner to the mm_struct (v3) Balbir Singh
2008-04-01 5:43 ` Balbir Singh
2008-04-01 6:03 ` YAMAMOTO Takashi
2008-04-01 6:03 ` YAMAMOTO Takashi
2008-04-01 6:06 ` Paul Menage
2008-04-01 6:06 ` Paul Menage
2008-04-01 6:24 ` YAMAMOTO Takashi
2008-04-01 6:24 ` YAMAMOTO Takashi
2008-04-01 6:25 ` Balbir Singh
2008-04-01 6:25 ` Balbir Singh
2008-04-01 6:16 ` Paul Menage
2008-04-01 6:16 ` Paul Menage
2008-04-01 6:23 ` Balbir Singh [this message]
2008-04-01 6:23 ` Balbir Singh
2008-04-01 6:48 ` Paul Menage
2008-04-01 6:48 ` Paul Menage
2008-04-01 7:26 ` Balbir Singh
2008-04-01 7:26 ` Balbir Singh
2008-04-01 8:13 ` Balbir Singh
2008-04-01 8:13 ` Balbir Singh
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=47F1D4F3.3040207@linux.vnet.ibm.com \
--to=balbir@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=hugh@veritas.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lizf@cn.fujitsu.com \
--cc=menage@google.com \
--cc=rientjes@google.com \
--cc=skumar@linux.vnet.ibm.com \
--cc=taka@valinux.co.jp \
--cc=xemul@openvz.org \
--cc=yamamoto@valinux.co.jp \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.