Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965381Ab3GRVf1 (ORCPT ); Thu, 18 Jul 2013 17:35:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:18484 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965267Ab3GRVfU (ORCPT ); Thu, 18 Jul 2013 17:35:20 -0400 From: Naoya Horiguchi To: linux-mm@kvack.org Cc: Andrew Morton , Mel Gorman , Hugh Dickins , KOSAKI Motohiro , Andi Kleen , Hillf Danton , Michal Hocko , Rik van Riel , "Aneesh Kumar K.V" , linux-kernel@vger.kernel.org, Naoya Horiguchi Subject: [PATCH 8/8] prepare to remove /proc/sys/vm/hugepages_treat_as_movable Date: Thu, 18 Jul 2013 17:34:32 -0400 Message-Id: <1374183272-10153-9-git-send-email-n-horiguchi@ah.jp.nec.com> In-Reply-To: <1374183272-10153-1-git-send-email-n-horiguchi@ah.jp.nec.com> References: <1374183272-10153-1-git-send-email-n-horiguchi@ah.jp.nec.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4568 Lines: 117 Now hugepages are definitely movable. So allocating hugepages from ZONE_MOVABLE is natural and we have no reason to keep this parameter. In order to allow userspace to prepare for the removal, let's leave this sysctl handler as noop for a while. ChangeLog v3: - use WARN_ON_ONCE ChangeLog v2: - shift to noop function instead of completely removing the parameter - rename patch title Signed-off-by: Naoya Horiguchi --- Documentation/sysctl/vm.txt | 13 ++----------- mm/hugetlb.c | 17 ++++++----------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git v3.11-rc1.orig/Documentation/sysctl/vm.txt v3.11-rc1/Documentation/sysctl/vm.txt index 36ecc26..6e211a1 100644 --- v3.11-rc1.orig/Documentation/sysctl/vm.txt +++ v3.11-rc1/Documentation/sysctl/vm.txt @@ -200,17 +200,8 @@ fragmentation index is <= extfrag_threshold. The default value is 500. hugepages_treat_as_movable -This parameter is only useful when kernelcore= is specified at boot time to -create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages -are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero -value written to hugepages_treat_as_movable allows huge pages to be allocated -from ZONE_MOVABLE. - -Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge -pages pool can easily grow or shrink within. Assuming that applications are -not running that mlock() a lot of memory, it is likely the huge pages pool -can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value -into nr_hugepages and triggering page reclaim. +This parameter is obsolete and planned to be removed. The value has no effect +on kernel's behavior. ============================================================== diff --git v3.11-rc1.orig/mm/hugetlb.c v3.11-rc1/mm/hugetlb.c index 9575e8a..aab5aef 100644 --- v3.11-rc1.orig/mm/hugetlb.c +++ v3.11-rc1/mm/hugetlb.c @@ -34,7 +34,6 @@ #include "internal.h" const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL; -static gfp_t htlb_alloc_mask = GFP_HIGHUSER; unsigned long hugepages_treat_as_movable; int hugetlb_max_hstate __read_mostly; @@ -546,7 +545,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h, retry_cpuset: cpuset_mems_cookie = get_mems_allowed(); zonelist = huge_zonelist(vma, address, - htlb_alloc_mask, &mpol, &nodemask); + GFP_HIGHUSER_MOVABLE, &mpol, &nodemask); /* * A child process with MAP_PRIVATE mappings created by their parent * have no page reserves. This check ensures that reservations are @@ -562,7 +561,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h, for_each_zone_zonelist_nodemask(zone, z, zonelist, MAX_NR_ZONES - 1, nodemask) { - if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) { + if (cpuset_zone_allowed_softwall(zone, GFP_HIGHUSER_MOVABLE)) { page = dequeue_huge_page_node(h, zone_to_nid(zone)); if (page) { if (!avoid_reserve) @@ -719,7 +718,7 @@ static struct page *alloc_fresh_huge_page_node(struct hstate *h, int nid) return NULL; page = alloc_pages_exact_node(nid, - htlb_alloc_mask|__GFP_COMP|__GFP_THISNODE| + GFP_HIGHUSER_MOVABLE|__GFP_COMP|__GFP_THISNODE| __GFP_REPEAT|__GFP_NOWARN, huge_page_order(h)); if (page) { @@ -944,12 +943,12 @@ static struct page *alloc_buddy_huge_page(struct hstate *h, int nid) spin_unlock(&hugetlb_lock); if (nid == NUMA_NO_NODE) - page = alloc_pages(htlb_alloc_mask|__GFP_COMP| + page = alloc_pages(GFP_HIGHUSER_MOVABLE|__GFP_COMP| __GFP_REPEAT|__GFP_NOWARN, huge_page_order(h)); else page = alloc_pages_exact_node(nid, - htlb_alloc_mask|__GFP_COMP|__GFP_THISNODE| + GFP_HIGHUSER_MOVABLE|__GFP_COMP|__GFP_THISNODE| __GFP_REPEAT|__GFP_NOWARN, huge_page_order(h)); if (page && arch_prepare_hugepage(page)) { @@ -2128,11 +2127,7 @@ int hugetlb_treat_movable_handler(struct ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { - proc_dointvec(table, write, buffer, length, ppos); - if (hugepages_treat_as_movable) - htlb_alloc_mask = GFP_HIGHUSER_MOVABLE; - else - htlb_alloc_mask = GFP_HIGHUSER; + WARN_ON_ONCE("This knob is obsolete and has no effect. It is scheduled for removal.\n"); return 0; } -- 1.8.3.1 -- 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/