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>
next prev parent 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