From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-gg0-f175.google.com (mail-gg0-f175.google.com [209.85.161.175]) by kanga.kvack.org (Postfix) with ESMTP id 905E86B0036 for ; Thu, 9 Jan 2014 02:33:06 -0500 (EST) Received: by mail-gg0-f175.google.com with SMTP id c2so98107ggn.34 for ; Wed, 08 Jan 2014 23:33:06 -0800 (PST) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com. [32.97.110.151]) by mx.google.com with ESMTPS id g6si4494119qab.39.2014.01.08.23.33.04 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 08 Jan 2014 23:33:05 -0800 (PST) Received: from /spool/local by e33.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 9 Jan 2014 00:33:04 -0700 Received: from b03cxnp07027.gho.boulder.ibm.com (b03cxnp07027.gho.boulder.ibm.com [9.17.130.14]) by d03dlp02.boulder.ibm.com (Postfix) with ESMTP id 0E4593E40026 for ; Thu, 9 Jan 2014 00:33:02 -0700 (MST) Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by b03cxnp07027.gho.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s097WoA97602622 for ; Thu, 9 Jan 2014 08:32:50 +0100 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s097X1Pk009789 for ; Thu, 9 Jan 2014 00:33:01 -0700 Date: Thu, 9 Jan 2014 15:32:59 +0800 From: Han Pingtian Subject: Re: [RFC] mm: show message when updating min_free_kbytes in thp Message-ID: <20140109073259.GK4106@localhost.localdomain> References: <20140101002935.GA15683@localhost.localdomain> <52C5AA61.8060701@intel.com> <20140103033303.GB4106@localhost.localdomain> <52C6FED2.7070700@intel.com> <20140105003501.GC4106@localhost.localdomain> <20140106164604.GC27602@dhcp22.suse.cz> <20140108101611.GD27937@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140108101611.GD27937@dhcp22.suse.cz> Sender: owner-linux-mm@kvack.org List-ID: To: linux-kernel@vger.kernel.org Cc: Mel Gorman , Andrew Morton , linux-mm@kvack.org, Michal Hocko , Dave Hansen , David Rientjes On Wed, Jan 08, 2014 at 11:16:11AM +0100, Michal Hocko wrote: > On Wed 08-01-14 16:20:01, Han Pingtian wrote: > > On Mon, Jan 06, 2014 at 05:46:04PM +0100, Michal Hocko wrote: > > > On Sun 05-01-14 08:35:01, Han Pingtian wrote: > > > [...] > > > > From f4d085a880dfae7638b33c242554efb0afc0852b Mon Sep 17 00:00:00 2001 > > > > From: Han Pingtian > > > > Date: Fri, 3 Jan 2014 11:10:49 +0800 > > > > Subject: [PATCH] mm: show message when raising min_free_kbytes in THP > > > > > > > > min_free_kbytes may be raised during THP's initialization. Sometimes, > > > > this will change the value being set by user. Showing message will > > > > clarify this confusion. > > > > > > I do not have anything against informing about changing value > > > set by user but this will inform also when the default value is > > > updated. Is this what you want? Don't you want to check against > > > user_min_free_kbytes? (0 if not set by user) > > > > > > > To use user_min_free_kbytes in mm/huge_memory.c, we need a > > > > extern int user_min_free_kbytes; > > The variable is not defined as static so you can use it outside of > mm/page_alloc.c. > > > in somewhere? Where should we put it? I guess it is mm/internal.h, > > right? > > I do not think this has to be globaly visible though. Why not just > extern declaration in mm/huge_memory.c? > This is the new patch, please review. Thanks. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754001AbaAIHdJ (ORCPT ); Thu, 9 Jan 2014 02:33:09 -0500 Received: from e37.co.us.ibm.com ([32.97.110.158]:38683 "EHLO e37.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751204AbaAIHdG (ORCPT ); Thu, 9 Jan 2014 02:33:06 -0500 Date: Thu, 9 Jan 2014 15:32:59 +0800 From: Han Pingtian To: linux-kernel@vger.kernel.org Cc: Mel Gorman , Andrew Morton , linux-mm@kvack.org, Michal Hocko , Dave Hansen , David Rientjes Subject: Re: [RFC] mm: show message when updating min_free_kbytes in thp Message-ID: <20140109073259.GK4106@localhost.localdomain> Mail-Followup-To: linux-kernel@vger.kernel.org, Mel Gorman , Andrew Morton , linux-mm@kvack.org, Michal Hocko , Dave Hansen , David Rientjes References: <20140101002935.GA15683@localhost.localdomain> <52C5AA61.8060701@intel.com> <20140103033303.GB4106@localhost.localdomain> <52C6FED2.7070700@intel.com> <20140105003501.GC4106@localhost.localdomain> <20140106164604.GC27602@dhcp22.suse.cz> <20140108101611.GD27937@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140108101611.GD27937@dhcp22.suse.cz> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14010907-7164-0000-0000-000004F5C25C Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 08, 2014 at 11:16:11AM +0100, Michal Hocko wrote: > On Wed 08-01-14 16:20:01, Han Pingtian wrote: > > On Mon, Jan 06, 2014 at 05:46:04PM +0100, Michal Hocko wrote: > > > On Sun 05-01-14 08:35:01, Han Pingtian wrote: > > > [...] > > > > From f4d085a880dfae7638b33c242554efb0afc0852b Mon Sep 17 00:00:00 2001 > > > > From: Han Pingtian > > > > Date: Fri, 3 Jan 2014 11:10:49 +0800 > > > > Subject: [PATCH] mm: show message when raising min_free_kbytes in THP > > > > > > > > min_free_kbytes may be raised during THP's initialization. Sometimes, > > > > this will change the value being set by user. Showing message will > > > > clarify this confusion. > > > > > > I do not have anything against informing about changing value > > > set by user but this will inform also when the default value is > > > updated. Is this what you want? Don't you want to check against > > > user_min_free_kbytes? (0 if not set by user) > > > > > > > To use user_min_free_kbytes in mm/huge_memory.c, we need a > > > > extern int user_min_free_kbytes; > > The variable is not defined as static so you can use it outside of > mm/page_alloc.c. > > > in somewhere? Where should we put it? I guess it is mm/internal.h, > > right? > > I do not think this has to be globaly visible though. Why not just > extern declaration in mm/huge_memory.c? > This is the new patch, please review. Thanks. >>From b8db4f157a17d6d8652cc9cff024a192c3ee0779 Mon Sep 17 00:00:00 2001 From: Han Pingtian Date: Thu, 9 Jan 2014 15:24:26 +0800 Subject: [PATCH] mm: show message when raising min_free_kbytes in THP min_free_kbytes may be raised during THP's initialization. Sometimes, this will change the value being set by user. Showing message will clarify this confusion. Only show this message when changing the value set by user according to Michal Hocko's suggestion. Showing the old value of min_free_kbytes according to Dave Hansen's suggestion. This will give user the chance to restore old value of min_free_kbytes. Signed-off-by: Han Pingtian --- mm/huge_memory.c | 9 ++++++++- mm/page_alloc.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 7de1bf8..e0e4e29 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -100,6 +100,7 @@ static struct khugepaged_scan khugepaged_scan = { .mm_head = LIST_HEAD_INIT(khugepaged_scan.mm_head), }; +extern int user_min_free_kbytes; static int set_recommended_min_free_kbytes(void) { @@ -130,8 +131,14 @@ static int set_recommended_min_free_kbytes(void) (unsigned long) nr_free_buffer_pages() / 20); recommended_min <<= (PAGE_SHIFT-10); - if (recommended_min > min_free_kbytes) + if (recommended_min > min_free_kbytes) { + if (user_min_free_kbytes >= 0) + pr_info("raising min_free_kbytes from %d to %lu " + "to help transparent hugepage allocations\n", + min_free_kbytes, recommended_min); + min_free_kbytes = recommended_min; + } setup_per_zone_wmarks(); return 0; } diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 9ea62b2..a9dcfd8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -205,7 +205,7 @@ static char * const zone_names[MAX_NR_ZONES] = { }; int min_free_kbytes = 1024; -int user_min_free_kbytes; +int user_min_free_kbytes = -1; static unsigned long __meminitdata nr_kernel_pages; static unsigned long __meminitdata nr_all_pages; -- 1.7.7.6