From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753595AbcFUCCI (ORCPT ); Mon, 20 Jun 2016 22:02:08 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:39448 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752810AbcFUCBr (ORCPT ); Mon, 20 Jun 2016 22:01:47 -0400 Subject: Re: [PATCH v2] more mapcount page as kpage could reduce total replacement times than fewer mapcount one in probability. To: References: <1465955818-101898-1-git-send-email-zhouxianrong@huawei.com> CC: , , , , , , , , , From: zhouxianrong Message-ID: <2460b794-92f0-d115-c729-bcfe33663e48@huawei.com> Date: Tue, 21 Jun 2016 09:57:54 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <1465955818-101898-1-git-send-email-zhouxianrong@huawei.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.142.145.228] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090204.57689F33.0004,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 3549d6633affd81948d7e99375446a10 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org hey hugh: could you please give me some suggestion about this ? On 2016/6/15 9:56, zhouxianrong@huawei.com wrote: > From: z00281421 > > more mapcount page as kpage could reduce total replacement times > than fewer mapcount one when ksmd scan and replace among > forked pages later. > > Signed-off-by: z00281421 > --- > mm/ksm.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/mm/ksm.c b/mm/ksm.c > index 4786b41..4d530af 100644 > --- a/mm/ksm.c > +++ b/mm/ksm.c > @@ -1094,6 +1094,14 @@ static struct page *try_to_merge_two_pages(struct rmap_item *rmap_item, > { > int err; > > + /* > + * select more mapcount page as kpage > + */ > + if (page_mapcount(page) < page_mapcount(tree_page)) { > + swap(page, tree_page); > + swap(rmap_item, tree_rmap_item); > + } > + > err = try_to_merge_with_ksm_page(rmap_item, page, NULL); > if (!err) { > err = try_to_merge_with_ksm_page(tree_rmap_item, >