On Wed, Jun 05, 2013 at 03:28:27PM +0800, Hillf Danton wrote: > On Tue, Jun 4, 2013 at 1:07 PM, Minchan Kim <minchan@xxxxxxxxxx> wrote: > > On Tue, Jun 04, 2013 at 09:17:26AM +0800, Hillf Danton wrote: > >> On Tue, Jun 4, 2013 at 4:02 AM, Dave Hansen <dave@xxxxxxxx> wrote: > >> > +/* > >> > + * pages come in here (via remove_list) locked and leave unlocked > >> > + * (on either ret_pages or free_pages) > >> > + * > >> > + * We do this batching so that we free batches of pages with a > >> > + * single mapping->tree_lock acquisition/release. This optimization > >> > + * only makes sense when the pages on remove_list all share a > >> > + * page_mapping(). If this is violated you will BUG_ON(). > >> > + */ > >> > +static int __remove_mapping_batch(struct list_head *remove_list, > >> > + struct list_head *ret_pages, > >> > + struct list_head *free_pages) > >> > +{ > >> > + int nr_reclaimed = 0; > >> > + struct address_space *mapping; > >> > + struct page *page; > >> > + LIST_HEAD(need_free_mapping); > >> > + > >> > + if (list_empty(remove_list)) > >> > + return 0; > >> > + > >> > + mapping = page_mapping(lru_to_page(remove_list)); > >> > + spin_lock_irq(&mapping->tree_lock); > >> > + while (!list_empty(remove_list)) { > >> > + page = lru_to_page(remove_list); > >> > + BUG_ON(!PageLocked(page)); > >> > + BUG_ON(page_mapping(page) != mapping); > >> > + list_del(&page->lru); > >> > + > >> > + if (!__remove_mapping(mapping, page)) { > >> > + unlock_page(page); > >> > + list_add(&page->lru, ret_pages); > >> > + continue; > >> > + } > >> > + list_add(&page->lru, &need_free_mapping); > >> > + } > >> > + spin_unlock_irq(&mapping->tree_lock); > >> > + > >> While reclaiming pages, can we open ears upon IRQ controller, > >> if the page list length is over 10, or even 20? > > > > At the moment, it implicitly could be bounded by SWAP_CLUSTER_MAX and > > Could we reclaim a THP currently? You mean that we could have (512 * SWAP_CLUSTER_MAX) pages in page_list as worst case? Yes but in that case, we drain batch_for_mapping_rm by [6/6] so THP page couldn't be a problem, IMO. -- Kind regards, Minchan Kim -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>