Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755043Ab3CAUEj (ORCPT ); Fri, 1 Mar 2013 15:04:39 -0500 Received: from mail-pa0-f41.google.com ([209.85.220.41]:55749 "EHLO mail-pa0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754294Ab3CAUEe (ORCPT ); Fri, 1 Mar 2013 15:04:34 -0500 Date: Fri, 1 Mar 2013 12:03:53 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Ric Mason cc: Andrew Morton , Mel Gorman , Petr Holasek , Andrea Arcangeli , Izik Eidus , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 2/7] ksm: treat unstable nid like in stable tree In-Reply-To: <51303CAB.3080406@gmail.com> Message-ID: References: <51271A7D.6020305@gmail.com> <51303CAB.3080406@gmail.com> User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2275 Lines: 55 On Fri, 1 Mar 2013, Ric Mason wrote: > > I think the ksm implementation for num awareness is buggy. Sorry, I just don't understand your comments below, but will try to answer or question them as best I can. > > For page migratyion stuff, new page is allocated from node *which page is > migrated to*. Yes, by definition. > - when meeting a page from the wrong NUMA node in an unstable tree > get_kpfn_nid(page_to_pfn(page)) *==* page_to_nid(tree_page) I thought you were writing of the wrong NUMA node case, but now you emphasize "*==*", which means the right NUMA node. > How can say it's okay for comparisons, but not as a leaf for merging? Pages in the unstable tree are unstable (and it's not even accurate to say "pages in the unstable tree"), they and their content can change at any moment, so I cannot assert anything of them for sure. But if we suppose, as an approximation, that they are somewhat likely to remain stable (and the unstable tree would be useless without that assumption: it tends to work out), but subject to migration, then it makes sense to compare content, no matter what NUMA node it is on, in order to locate a page of the same content; but wrong to merge with that page if it's on the wrong NUMA node, if !merge_across_nodes tells us not to. > - when meeting a page from the wrong NUMA node in an stable tree > - meeting a normal page What does that line mean, and where does it fit in your argument? > - meeting a page which is ksm page before migration > get_kpfn_nid(stable_node->kpfn) != NUMA(stable_node->nid) can't capture > them since stable_node is for tree page in current stable tree. They are > always equal. When we meet a ksm page in the stable tree before it's migrated to another NUMA node, yes, it will be on the right NUMA node (because we were careful only to merge pages from the right NUMA node there), and that test will not capture them. It's for capturng a ksm page in the stable tree after it has been migrated to another NUMA node. Hugh -- 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/