linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
To: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Cc: YAMAMOTO Takashi <yamamoto@valinux.co.jp>,
	a.p.zijlstra@chello.nl, dhaval@linux.vnet.ibm.com,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	ebiederm@xmission.com, containers@lists.osdl.org,
	akpm@linux-foundation.org, xemul@openvz.org, menage@google.com,
	balbir@linux.vnet.ibm.com
Subject: Re: [-mm PATCH 6/9] Memory controller add per container LRU and reclaim (v4)
Date: Wed, 08 Aug 2007 00:00:11 +0530	[thread overview]
Message-ID: <46B8BA33.7020800@linux.vnet.ibm.com> (raw)
In-Reply-To: <46AF314C.7030404@linux.vnet.ibm.com>


Vaidyanathan Srinivasan wrote:
> 
> YAMAMOTO Takashi wrote:
>>> +unsigned long mem_container_isolate_pages(unsigned long nr_to_scan,
>>> +					struct list_head *dst,
>>> +					unsigned long *scanned, int order,
>>> +					int mode, struct zone *z,
>>> +					struct mem_container *mem_cont,
>>> +					int active)
>>> +{
>>> +	unsigned long nr_taken = 0;
>>> +	struct page *page;
>>> +	unsigned long scan;
>>> +	LIST_HEAD(mp_list);
>>> +	struct list_head *src;
>>> +	struct meta_page *mp;
>>> +
>>> +	if (active)
>>> +		src = &mem_cont->active_list;
>>> +	else
>>> +		src = &mem_cont->inactive_list;
>>> +
>>> +	for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) {
>>> +		mp = list_entry(src->prev, struct meta_page, lru);
>> what prevents another thread from freeing mp here?
> 
> mem_cont->lru_lock protects the list and validity of mp.  If we hold
> mem_cont->lru_lock for this entire loop, then we preserve the validity
> of mp.  However that will be holding up container charge and uncharge.
> 
> This entire routing is called with zone->lru_lock held by the caller.
>  So within a zone, this routine is serialized.
> 
> However page uncharge may race with isolate page.  But will that lead
> to any corruption of the list?  We may be holding the lock for too
> much time just to be on the safe side.
> 
> Please allow us some time to verify whether this is indeed inadequate
> locking that will lead to corruption of the list.

I did few runs and checked for ref_cnt on meta_page and there seems to
be a race between isolate pages and uncharge.  We will probably have
to increase the ref_cnt on meta_page while we are isolating it.  I am
trying to see if we can solve the problem by manipulating the ref_cnt
on the meta_page.

--Vaidy

> Thanks for pointing out this situation.
> --Vaidy
> 
>>> +		spin_lock(&mem_cont->lru_lock);
>>> +		if (mp)
>>> +			page = mp->page;
>>> +		spin_unlock(&mem_cont->lru_lock);
>>> +		if (!mp)
>>> +			continue;
>> YAMAMOTO Takashi
>> _______________________________________________
>> Containers mailing list
>> Containers@lists.linux-foundation.org
>> https://lists.linux-foundation.org/mailman/listinfo/containers
>>
> _______________________________________________
> Containers mailing list
> Containers@lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/containers
> 

--
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>

  reply	other threads:[~2007-08-07 18:32 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-27 20:09 [-mm PATCH 0/9] Memory controller introduction (v4) Balbir Singh
2007-07-27 20:09 ` [-mm PATCH 1/9] Memory controller resource counters (v4) Balbir Singh
2007-07-27 20:09 ` [-mm PATCH 2/9] Memory controller containers setup (v4) Balbir Singh
2007-07-27 20:10 ` [-mm PATCH 3/9] Memory controller accounting " Balbir Singh
2007-07-27 20:10 ` [-mm PATCH 4/9] Memory controller memory accounting (v4) Balbir Singh
2007-07-31  3:38   ` YAMAMOTO Takashi
2007-07-31 12:44     ` Vaidyanathan Srinivasan
2007-08-15  8:44       ` YAMAMOTO Takashi
2007-08-15 10:02         ` Balbir Singh
2007-07-27 20:10 ` [-mm PATCH 5/9] Memory controller task migration (v4) Balbir Singh
2007-07-27 20:10 ` [-mm PATCH 6/9] Memory controller add per container LRU and reclaim (v4) Balbir Singh
2007-07-30 13:37   ` Dhaval Giani
2007-07-30 13:59     ` Peter Zijlstra
2007-07-30 14:28     ` Gautham R Shenoy
2007-07-31  5:14   ` YAMAMOTO Takashi
2007-07-31 12:55     ` Vaidyanathan Srinivasan
2007-08-07 18:30       ` Vaidyanathan Srinivasan [this message]
2007-07-27 20:10 ` [-mm PATCH 7/9] Memory controller OOM handling (v4) Balbir Singh
2007-07-27 20:11 ` [-mm PATCH 8/9] Memory controller add switch to control what type of pages to limit (v4) Balbir Singh
2007-08-13  0:33   ` YAMAMOTO Takashi
2007-08-13  5:38     ` Balbir Singh
2007-08-13  6:04       ` YAMAMOTO Takashi
2007-08-13  6:17         ` Balbir Singh
2007-07-27 20:11 ` [-mm PATCH 9/9] Memory controller make page_referenced() container aware (v4) Balbir Singh
2007-08-08  3:51 ` [-mm PATCH 0/9] Memory controller introduction (v4) KAMEZAWA Hiroyuki
2007-08-08  7:51   ` KAMEZAWA Hiroyuki
2007-08-10  4:49     ` Vaidyanathan Srinivasan

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=46B8BA33.7020800@linux.vnet.ibm.com \
    --to=svaidy@linux.vnet.ibm.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=containers@lists.osdl.org \
    --cc=dhaval@linux.vnet.ibm.com \
    --cc=ebiederm@xmission.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=menage@google.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox