From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756344Ab1KWPIQ (ORCPT ); Wed, 23 Nov 2011 10:08:16 -0500 Received: from cantor2.suse.de ([195.135.220.15]:41600 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756177Ab1KWPIP (ORCPT ); Wed, 23 Nov 2011 10:08:15 -0500 Date: Wed, 23 Nov 2011 15:08:10 +0000 From: Mel Gorman To: Nai Xia Cc: Shaohua Li , Linux-MM , Andrea Arcangeli , Minchan Kim , Jan Kara , Andy Isaacson , Johannes Weiner , Rik van Riel , LKML Subject: Re: [PATCH 7/7] mm: compaction: Introduce sync-light migration for use by compaction Message-ID: <20111123150810.GO19415@suse.de> References: <1321900608-27687-1-git-send-email-mgorman@suse.de> <1321900608-27687-8-git-send-email-mgorman@suse.de> <1321945011.22361.335.camel@sli10-conroe> <20111123110041.GM19415@suse.de> <20111123134512.GN19415@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 23, 2011 at 10:35:37PM +0800, Nai Xia wrote: > On Wed, Nov 23, 2011 at 9:45 PM, Mel Gorman wrote: > > On Wed, Nov 23, 2011 at 09:05:08PM +0800, Nai Xia wrote: > >> > > >> > > >> > Where are you adding this check? > >> > > >> > If you mean in __unmap_and_move(), the check is unnecessary unless > >> > another subsystem starts using sync-light compaction. With this series, > >> > only direct compaction cares about MIGRATE_SYNC_LIGHT. If the page is > >> > >> But I am still a little bit confused that if MIGRATE_SYNC_LIGHT is only > >> used by direct compaction and  another mode can be used by it: > >> MIGRATE_ASYNC also does not write dirty pages, then why not also > >> do an (current->flags & PF_MEMALLOC) test before writing out pages, > > > > Why would it be necessary? > > Why would it be better than what is there now? > > I mean, if > MIGRATE_SYNC_LIGHT --> (current->flags & PF_MEMALLOC) and > MIGRATE_SYNC_LIGHT --> no dirty writeback, and (current->flags & PF_MEMALLOC) > --> (MIGRATE_SYNC_LIGHT || MIGRATE_ASYNC) > MIGRATE_ASYNC --> no dirty writeback, then > why not simply (current->flags & PF_MEMALLOC) ---> no dirty writeback > and keep the sync meaning as it was? > Ok, I see what you mean. Instead of making MIGRATE_SYNC_LIGHT part of the API, we could instead special case within migrate.c how to behave if MIGRATE_SYNC && PF_MEMALLOC. This would be functionally equivalent and satisfy THP users but I do not see it as being easier to understand or easier to maintain than updating the API. If someone in the future wanted to use migration without significant stalls without being PF_MEMALLOC, they would need to update the API like this. There are no users like this today but automatic NUMA migration might want to leverage something like MIGRATE_SYNC_LIGHT (http://comments.gmane.org/gmane.linux.kernel.mm/70239) -- Mel Gorman SUSE Labs