From mboxrd@z Thu Jan 1 00:00:00 1970 From: yamamoto-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org (YAMAMOTO Takashi) Subject: Re: [RFC] [PATCH] memory controller background reclamation Date: Mon, 26 Nov 2007 11:47:10 +0900 (JST) Message-ID: <20071126024710.8F4ED1CF411@siro.lan> References: <47464D04.2030906@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Return-path: In-Reply-To: Your message of "Fri, 23 Nov 2007 09:16:12 +0530" <47464D04.2030906-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: balbir-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org Cc: containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org, minoura-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org List-Id: containers.vger.kernel.org hi, > > --- linux-2.6.24-rc2-mm1-kame-pd/kernel/res_counter.c.BACKUP 2007-11-14 16:05:52.000000000 +0900 > > +++ linux-2.6.24-rc2-mm1-kame-pd/kernel/res_counter.c 2007-11-22 15:14:32.000000000 +0900 > > @@ -17,6 +17,8 @@ void res_counter_init(struct res_counter > > { > > spin_lock_init(&counter->lock); > > counter->limit = (unsigned long long)LLONG_MAX; > > + counter->high_watermark = (unsigned long long)LLONG_MAX; > > + counter->low_watermark = (unsigned long long)LLONG_MAX; > > Should low watermark also be LLONG_MAX? what else do you suggest? 0? currently it doesn't matter much because low_watermark is not used at all as far as high_watermark is LLONG_MAX. > > +static void > > +mem_cgroup_reclaim(struct work_struct *work) > > +{ > > + struct mem_cgroup * const mem = > > + container_of(work, struct mem_cgroup, reclaim_work); > > + int batch_count = 128; /* XXX arbitrary */ > > Could we define and use something like MEM_CGROUP_BATCH_COUNT for now? > Later we could consider and see if it needs to be tunable. numbers are > hard to read in code. although i don't think it makes sense, i can do so if you prefer. > > + > > + for (; batch_count > 0; batch_count--) { > > + if (res_counter_below_low_watermark(&mem->res)) > > + break; > > Shouldn't we also check to see that we start reclaim in background only > when we are above the high watermark? i don't understand what you mean. can you explain? highwatermark is checked by mem_cgroup_charge_common before waking these threads. > I'll start some tests on these patches. thanks. YAMAMOTO Takashi