Messages in this thread |  | | Date | Fri, 28 Mar 2008 10:41:30 +0100 | | From | Jiri Slaby <> | | Subject | Re: [-mm] Add an owner to the mm_struct (v2) |
| |
On 03/28/2008 09:23 AM, Balbir Singh wrote: > This patch removes the mem_cgroup member from mm_struct and instead adds > an owner. This approach was suggested by Paul Menage. The advantage of > this approach is that, once the mm->owner is known, using the subsystem > id, the cgroup can be determined. It also allows several control groups > that are virtually grouped by mm_struct, to exist independent of the memory > controller i.e., without adding mem_cgroup's for each controller, > to mm_struct. > > The code initially assigns mm->owner to the task and then after the > thread group leader is identified. The mm->owner is changed to the thread > group leader of the task later at the end of copy_process. > > A new config option CONFIG_MM_OWNER is added and the memory resource > controller now depends on this config option. > > NOTE: This patch was developed on top of 2.6.25-rc5-mm1 and is applied on top > of the memory-controller-move-to-own-slab patch (which is already present > in the Andrew's patchset). > > These patches have been tested on a powerpc 64 bit box and on x86_64 box with > several microbenchmarks and some simple memory controller testing. > > Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> > --- > > include/linux/memcontrol.h | 14 ++++++++- > include/linux/mm_types.h | 6 ++-- > include/linux/sched.h | 19 ++++++++++++ > init/Kconfig | 13 ++++++++ > kernel/exit.c | 66 +++++++++++++++++++++++++++++++++++++++++++++ > kernel/fork.c | 26 +++++++++++++++++ > mm/memcontrol.c | 19 +++++++----- > 7 files changed, 151 insertions(+), 12 deletions(-) > > diff -puN include/linux/mm_types.h~memory-controller-add-mm-owner include/linux/mm_types.h > --- linux-2.6.25-rc5/include/linux/mm_types.h~memory-controller-add-mm-owner 2008-03-28 09:30:47.000000000 +0530 > +++ linux-2.6.25-rc5-balbir/include/linux/mm_types.h 2008-03-28 12:26:59.000000000 +0530 > @@ -227,8 +227,10 @@ struct mm_struct { > /* aio bits */ > rwlock_t ioctx_list_lock; > struct kioctx *ioctx_list; > -#ifdef CONFIG_CGROUP_MEM_RES_CTLR > - struct mem_cgroup *mem_cgroup; > +#ifdef CONFIG_MM_OWNER > + spinlock_t owner_lock; > + struct task_struct *owner; /* The thread group leader that */
Doesn't make sense to switch them (spinlock is unsigned int on x86, what's sizeof between and after?)?
|  |