From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752638AbdHAVFW (ORCPT ); Tue, 1 Aug 2017 17:05:22 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:57260 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752094AbdHAVFV (ORCPT ); Tue, 1 Aug 2017 17:05:21 -0400 Date: Tue, 1 Aug 2017 14:05:20 -0700 From: Andrew Morton To: Johannes Weiner Cc: Michal Hocko , Tetsuo Handa , Josef Bacik , Vladimir Davydov , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: Re: [PATCH 2/2] mm: rename global_page_state to global_zone_page_state Message-Id: <20170801140520.96835ef87fe41a448c05504b@linux-foundation.org> In-Reply-To: <20170801134256.5400-2-hannes@cmpxchg.org> References: <20170801134256.5400-1-hannes@cmpxchg.org> <20170801134256.5400-2-hannes@cmpxchg.org> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 1 Aug 2017 09:42:56 -0400 Johannes Weiner wrote: > global_page_state is error prone as a recent bug report pointed out [1]. > It only returns proper values for zone based counters as the enum it > gets suggests. We already have global_node_page_state so let's rename > global_page_state to global_zone_page_state to be more explicit here. > All existing users seems to be correct > $ git grep "global_page_state(NR_" | sed 's@.*(\(NR_[A-Z_]*\)).*@\1@' | sort | uniq -c > 2 NR_BOUNCE > 2 NR_FREE_CMA_PAGES > 11 NR_FREE_PAGES > 1 NR_KERNEL_STACK_KB > 1 NR_MLOCK > 2 NR_PAGETABLE > > This patch shouldn't introduce any functional change. Checkpatch gets a bit whiny. WARNING: line over 80 characters #127: FILE: mm/mmap.c:3517: + free_kbytes = global_zone_page_state(NR_FREE_PAGES) << (PAGE_SHIFT - 10); WARNING: line over 80 characters #136: FILE: mm/mmap.c:3538: + free_kbytes = global_zone_page_state(NR_FREE_PAGES) << (PAGE_SHIFT - 10); WARNING: line over 80 characters #145: FILE: mm/mmap.c:3582: + free_kbytes = global_zone_page_state(NR_FREE_PAGES) << (PAGE_SHIFT - 10); WARNING: line over 80 characters #157: FILE: mm/nommu.c:1965: + free_kbytes = global_zone_page_state(NR_FREE_PAGES) << (PAGE_SHIFT - 10); WARNING: line over 80 characters #166: FILE: mm/nommu.c:1986: + free_kbytes = global_zone_page_state(NR_FREE_PAGES) << (PAGE_SHIFT - 10); WARNING: line over 80 characters #187: FILE: mm/page-writeback.c:1408: + * global_zone_page_state() too often. So scale it near-sqrt to the safety margin Liveable with, but the code would be quite a bit neater if we had a helper function for this. We get things like: --- a/mm/mmap.c~mm-rename-global_page_state-to-global_zone_page_state-fix +++ a/mm/mmap.c @@ -3512,11 +3512,7 @@ void __init mmap_init(void) */ static int init_user_reserve(void) { - unsigned long free_kbytes; - - free_kbytes = global_zone_page_state(NR_FREE_PAGES) << (PAGE_SHIFT - 10); - - sysctl_user_reserve_kbytes = min(free_kbytes / 32, 1UL << 17); + sysctl_user_reserve_kbytes = min(global_free_kbytes() / 32, 1UL << 17); return 0; } subsys_initcall(init_user_reserve);