From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from psmtp.com (na3sys010amx194.postini.com [74.125.245.194]) by kanga.kvack.org (Postfix) with SMTP id 4A9A66B0036 for ; Mon, 26 Aug 2013 09:37:07 -0400 (EDT) Received: by mail-pd0-f173.google.com with SMTP id p10so3458603pdj.18 for ; Mon, 26 Aug 2013 06:37:06 -0700 (PDT) Date: Mon, 26 Aug 2013 21:36:58 +0800 From: larmbr Subject: [PATCH RESEND] mm/vmscan : use vmcan_swappiness( ) basing on MEMCG config to elimiate unnecessary runtime cost Message-ID: <20130826133658.GA357@larmbr-lcx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Sender: owner-linux-mm@kvack.org List-ID: To: linux-mm@kvack.org Cc: hannes@cmpxchg.org, mhocko@suse.cz, bsingharora@gmail.com, kamezawa.hiroyu@jp.fujitsu.com, akpm@linux-foundation.org, mgorman@suse.de, riel@redhat.com, nasa4836@gmail.com, linux-kernel@vger.kernel.org Currently, we get the vm_swappiness via vmscan_swappiness(), which calls global_reclaim() to check if this is a global reclaim. Besides, the current implementation of global_reclaim() always returns true for the !CONFIG_MEGCG case, and judges the other case by checking whether scan_control->target_mem_cgroup is null or not. Thus, we could just use two versions of vmscan_swappiness() based on MEMCG Kconfig , to eliminate the unnecessary run-time cost for the !CONFIG_MEMCG at all, and to squash all memcg-related checking into the CONFIG_MEMCG version. Signed-off-by: Zhan Jianyu --- mm/memcontrol.c | 6 +++++- mm/vmscan.c | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index c5792a5..1290320 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1525,9 +1525,13 @@ static unsigned long mem_cgroup_margin(struct mem_cgroup *memcg) int mem_cgroup_swappiness(struct mem_cgroup *memcg) { - struct cgroup *cgrp = memcg->css.cgroup; + struct cgroup *cgrp; + + if (!memcg) + return vm_swappiness; /* root ? */ + cgrp = memcg->css.cgroup; if (cgrp->parent == NULL) return vm_swappiness; diff --git a/mm/vmscan.c b/mm/vmscan.c index 2cff0d4..1de652d 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1742,12 +1742,17 @@ static unsigned long shrink_list(enum lru_list lru, unsigned long nr_to_scan, return shrink_inactive_list(nr_to_scan, lruvec, sc, lru); } +#ifdef CONFIG_MEMCG static int vmscan_swappiness(struct scan_control *sc) { - if (global_reclaim(sc)) - return vm_swappiness; return mem_cgroup_swappiness(sc->target_mem_cgroup); } +#else +static int vmscan_swappiness(struct scan_control *sc) +{ + return vm_swappiness; +} +#endif enum scan_balance { SCAN_EQUAL, -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org