[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <da621335371fccd6cfb3d8d7c0c2bf3a.squirrel@webmail-b.css.fujitsu.com>
Date: Sat, 7 Nov 2009 04:03:17 +0900 (JST)
From: "KAMEZAWA Hiroyuki" <kamezawa.hiroyu@...fujitsu.com>
To: "Christoph Lameter" <cl@...ux-foundation.org>
Cc: "KAMEZAWA Hiroyuki" <kamezawa.hiroyu@...fujitsu.com>,
"Dave Jones" <davej@...hat.com>,
"hugh.dickins@...cali.co.uk" <hugh.dickins@...cali.co.uk>,
linux-mm@...ck.org, linux-kernel@...r.kernel.org,
akpm@...ux-foundation.org, "Tejun Heo" <tj@...nel.org>
Subject: Re: [MM] Make mm counters per cpu instead of atomic V2
Christoph Lameter wrote:
> On Fri, 6 Nov 2009, KAMEZAWA Hiroyuki wrote:
>
>> BTW, can't we have single-thread-mode for this counter ?
>> Usual program's read-side will get much benefit.....
>
> Thanks for the measurements.
>
> A single thread mode would be good. Ideas on how to add that would be
> appreciated.
>
Maybe there are some ways....At brief thought....
==
struct usage_counter {
long rss;
long file;
}
struct mm_struct {
....
atomic_long_t rss; /* only updated when usage_counter is NULL */
atomic_long_t file; /* only updated when usage_counter is NULL */
struct usage_counter *usage; /* percpu counter used when
multi-threaded */
.....
}
And allocate mm->usage only when the first CLONE_THREAD is specified.
if (mm->usage)
access per cpu
else
atomic_long_xxx
and read operation will be
val = atomic_read(mm->rss);
if (mm->usage)
for_each_possible_cpu()....
==
Does "if" seems too costly ?
If this idea is bad, I think moving mm_counter to task_struct from
mm_struct and doing slow-sync is an idea instead of percpu.
for example
struct task_struct {
....
mm_counter_t temp_counter;
....
};
struct mm_struct {
.....
atomic_long_t rss;
atomic_long_t file;
};
And adds temp_counter's value to mm_struct at some good point....before
sleep ?
kswapd and reclaim routine can update mm_struct's counter, directly.
Readers just read mm_struct's counter.
Thanks,
-Kame
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists