Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755797Ab2HVDeW (ORCPT ); Tue, 21 Aug 2012 23:34:22 -0400 Received: from LGEMRELSE6Q.lge.com ([156.147.1.121]:56432 "EHLO LGEMRELSE6Q.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753389Ab2HVDeU (ORCPT ); Tue, 21 Aug 2012 23:34:20 -0400 X-AuditID: 9c930179-b7cc4ae00000134d-c6-5034533959ac Date: Wed, 22 Aug 2012 12:34:41 +0900 From: Minchan Kim To: qiuxishi Cc: akpm@linux-foundation.org, lliubbo@gmail.com, jiang.liu@huawei.com, mgorman@suse.de, kamezawa.hiroyu@jp.fujitsu.com, mhocko@suse.cz, linux-mm@kvack.org, linux-kernel@vger.kernel.org, qiuxishi@huawei.com, wujianguo@huawei.com, bessel.wang@huawei.com, guohanjun@huawei.com, chenkeping@huawei.com, yinghai@kernel.org, wency@cn.fujitsu.com Subject: Re: [PATCH] memory-hotplug: fix a drain pcp bug when offline pages Message-ID: <20120822033441.GB24667@bbox> References: <50337B15.2090701@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <50337B15.2090701@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Brightmail-Tracker: AAAAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2905 Lines: 76 Hello Xishi, On Tue, Aug 21, 2012 at 08:12:05PM +0800, qiuxishi wrote: > From: Xishi Qiu > > When offline a section, we move all the free pages and pcp into MIGRATE_ISOLATE list first. > start_isolate_page_range() > set_migratetype_isolate() > drain_all_pages(), > > Here is a problem, it is not sure that pcp will be moved into MIGRATE_ISOLATE list. They may > be moved into MIGRATE_MOVABLE list because page_private() maybe 2. So when finish migrating > pages, the free pages from pcp may be allocated again, and faild in check_pages_isolated(). > drain_all_pages() > drain_local_pages() > drain_pages() > free_pcppages_bulk() > __free_one_page(page, zone, 0, page_private(page)); > > If we add move_freepages_block() after drain_all_pages(), it can not sure that all the pcp > will be moved into MIGRATE_ISOLATE list when the system works on high load. The free pages > which from pcp may immediately be allocated again. > > I think the similar bug described in http://marc.info/?t=134250882300003&r=1&w=2 Yes. I reported the problem a few month ago but it's not real bug in practice but found by my eyes during looking the code so I wanted to confirm the problem. Do you find that problem in real practice? or just code review? Anyway, I don't like your approach which I already considered because it hurts hotpath while the race is really unlikely. Get_pageblock_migratetype is never trivial. We should avoid the overhead in hotpath and move into memory-hotplug itself. Do you see my patch in https://patchwork.kernel.org/patch/1225081/ ? > > > Signed-off-by: Xishi Qiu > --- > mm/page_alloc.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index d0723b2..501f6de 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -673,7 +673,8 @@ static void free_pcppages_bulk(struct zone *zone, int count, > /* must delete as __free_one_page list manipulates */ > list_del(&page->lru); > /* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */ > - __free_one_page(page, zone, 0, page_private(page)); > + __free_one_page(page, zone, 0, > + get_pageblock_migratetype(page)); > trace_mm_page_pcpu_drain(page, 0, page_private(page)); > } while (--to_free && --batch_free && !list_empty(list)); > } > -- 1.7.6.1 . > > > > . > > -- > 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: email@kvack.org -- Kind regards, Minchan Kim -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/