Messages in this thread Patch in this message | | | Date | Wed, 16 Dec 2009 08:53:05 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | Re: [mmotm][PATCH 1/5] clean up mm_counter |
| |
On Wed, 16 Dec 2009 08:25:29 +0900 Minchan Kim <minchan.kim@gmail.com> wrote:
> On Tue, 15 Dec 2009 18:11:16 +0900 > KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote: > > > From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > > > > Now, per-mm statistics counter is defined by macro in sched.h > > > > This patch modifies it to > > - defined in mm.h as inlinf functions > > - use array instead of macro's name creation. > > > > This patch is for reducing patch size in future patch to modify > > implementation of per-mm counter. > > > > Changelog: 2009/12/14 > > - added a struct rss_stat instead of bare counters. > > - use memset instead of for() loop. > > - rewrite macros into static inline functions. > > > > Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > > --- > > fs/proc/task_mmu.c | 4 - > > include/linux/mm.h | 104 +++++++++++++++++++++++++++++++++++++++++++++++ > > include/linux/mm_types.h | 33 +++++++++----- > > include/linux/sched.h | 54 ------------------------ > > kernel/fork.c | 3 - > > kernel/tsacct.c | 1 > > mm/filemap_xip.c | 2 > > mm/fremap.c | 2 > > mm/memory.c | 56 +++++++++++++++---------- > > mm/oom_kill.c | 4 - > > mm/rmap.c | 10 ++-- > > mm/swapfile.c | 2 > > 12 files changed, 174 insertions(+), 101 deletions(-) > > > > Index: mmotm-2.6.32-Dec8-pth/include/linux/mm.h > > =================================================================== > > --- mmotm-2.6.32-Dec8-pth.orig/include/linux/mm.h > > +++ mmotm-2.6.32-Dec8-pth/include/linux/mm.h > > @@ -868,6 +868,110 @@ extern int mprotect_fixup(struct vm_area > > */ > > int __get_user_pages_fast(unsigned long start, int nr_pages, int write, > > struct page **pages); > > +/* > > + * per-process(per-mm_struct) statistics. > > + */ > > +#if USE_SPLIT_PTLOCKS > > +/* > > + * The mm counters are not protected by its page_table_lock, > > + * so must be incremented atomically. > > + */ > > +static inline void set_mm_counter(struct mm_struct *mm, int member, long value) > > +{ > > + atomic_long_set(&mm->rss_stat.count[member], value); > > +} > > I can't find mm->rss_stat in this patch. > Maybe it's part of next patch.
It's in mm_types.h
@@ -223,11 +233,6 @@ struct mm_struct { * by mmlist_lock */ - /* Special counters, in some configurations protected by the - * page_table_lock, in other configurations by being atomic. - */ - mm_counter_t _file_rss; - mm_counter_t _anon_rss; unsigned long hiwater_rss; /* High-watermark of RSS usage */ unsigned long hiwater_vm; /* High-water virtual memory usage */ @@ -240,6 +245,12 @@ struct mm_struct { unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */ + /* + * Special counters, in some configurations protected by the + * page_table_lock, in other configurations by being atomic. + */ + struct mm_rss_stat rss_stat; + struct linux_binfmt *binfmt;
Moved to some bytes higher address for avoiding false sharing storm of mmap_sem..
> Otherwise, Looks good to me. > > Reviewed-by: Minchan Kim <minchan.kim@gmail.com> >
Thank you for all your help for this series.
Regards, -Kame
| |