From: Li Zefan <lizf@cn.fujitsu.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"balbir@linux.vnet.ibm.com" <balbir@linux.vnet.ibm.com>,
"xemul@openvz.org" <xemul@openvz.org>,
"yamamoto@valinux.co.jp" <yamamoto@valinux.co.jp>,
"hugh@veritas.com" <hugh@veritas.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [RFC/PATCH 4/6] memcg: shmem reclaim helper
Date: Wed, 14 May 2008 16:15:49 +0800 [thread overview]
Message-ID: <482A9FB5.4020202@cn.fujitsu.com> (raw)
In-Reply-To: <20080514171025.2f0fb1ca.kamezawa.hiroyu@jp.fujitsu.com>
KAMEZAWA Hiroyuki wrote:
> A new call, mem_cgroup_shrink_usage() is added for shmem handling
> and removing not usual usage of mem_cgroup_charge/uncharge.
>
> Now, shmem calls mem_cgroup_charge() just for reclaim some pages from
> mem_cgroup. In general, shmem is used by some process group and not for
> global resource (like file caches). So, it's reasonable to reclaim pages from
> mem_cgroup where shmem is mainly used.
>
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
> ---
> mm/memcontrol.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> Index: linux-2.6.26-rc2/mm/memcontrol.c
> ===================================================================
> --- linux-2.6.26-rc2.orig/mm/memcontrol.c
> +++ linux-2.6.26-rc2/mm/memcontrol.c
> @@ -783,6 +783,30 @@ static void mem_cgroup_drop_all_pages(st
> }
>
> /*
> + * A call to try to shrink memory usage under specified resource controller.
> + * This is typically used for page reclaiming for shmem for reducing side
> + * effect of page allocation from shmem, which is used by some mem_cgroup.
> + */
> +int mem_cgroup_shrink_usage(struct mm_struct *mm, gfp_t gfp_mask)
> +{
> + struct mem_cgroup *mem;
> + int progress = 0;
> + int retry = MEM_CGROUP_RECLAIM_RETRIES;
> +
> + rcu_read_lock();
> + mem = mem_cgroup_from_task(rcu_dereference(mm->owner));
> + css_get(&mem->css);
> + rcu_read_unlock();
> +
> + while(!progress && --retry) {
> + progress = try_to_free_mem_cgroup_pages(mem, gfp_mask);
> + }
This is wrong. How about:
do {
...
} while (!progress && --retry);
> + if (!retry)
> + return -ENOMEM;
> + return 0;
> +}
> +
> +/*
> * This routine traverse page_cgroup in given list and drop them all.
> * *And* this routine doesn't reclaim page itself, just removes page_cgroup.
> */
WARNING: multiple messages have this Message-ID (diff)
From: Li Zefan <lizf@cn.fujitsu.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"balbir@linux.vnet.ibm.com" <balbir@linux.vnet.ibm.com>,
"xemul@openvz.org" <xemul@openvz.org>,
"yamamoto@valinux.co.jp" <yamamoto@valinux.co.jp>,
"hugh@veritas.com" <hugh@veritas.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [RFC/PATCH 4/6] memcg: shmem reclaim helper
Date: Wed, 14 May 2008 16:15:49 +0800 [thread overview]
Message-ID: <482A9FB5.4020202@cn.fujitsu.com> (raw)
In-Reply-To: <20080514171025.2f0fb1ca.kamezawa.hiroyu@jp.fujitsu.com>
KAMEZAWA Hiroyuki wrote:
> A new call, mem_cgroup_shrink_usage() is added for shmem handling
> and removing not usual usage of mem_cgroup_charge/uncharge.
>
> Now, shmem calls mem_cgroup_charge() just for reclaim some pages from
> mem_cgroup. In general, shmem is used by some process group and not for
> global resource (like file caches). So, it's reasonable to reclaim pages from
> mem_cgroup where shmem is mainly used.
>
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
> ---
> mm/memcontrol.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> Index: linux-2.6.26-rc2/mm/memcontrol.c
> ===================================================================
> --- linux-2.6.26-rc2.orig/mm/memcontrol.c
> +++ linux-2.6.26-rc2/mm/memcontrol.c
> @@ -783,6 +783,30 @@ static void mem_cgroup_drop_all_pages(st
> }
>
> /*
> + * A call to try to shrink memory usage under specified resource controller.
> + * This is typically used for page reclaiming for shmem for reducing side
> + * effect of page allocation from shmem, which is used by some mem_cgroup.
> + */
> +int mem_cgroup_shrink_usage(struct mm_struct *mm, gfp_t gfp_mask)
> +{
> + struct mem_cgroup *mem;
> + int progress = 0;
> + int retry = MEM_CGROUP_RECLAIM_RETRIES;
> +
> + rcu_read_lock();
> + mem = mem_cgroup_from_task(rcu_dereference(mm->owner));
> + css_get(&mem->css);
> + rcu_read_unlock();
> +
> + while(!progress && --retry) {
> + progress = try_to_free_mem_cgroup_pages(mem, gfp_mask);
> + }
This is wrong. How about:
do {
...
} while (!progress && --retry);
> + if (!retry)
> + return -ENOMEM;
> + return 0;
> +}
> +
> +/*
> * This routine traverse page_cgroup in given list and drop them all.
> * *And* this routine doesn't reclaim page itself, just removes page_cgroup.
> */
--
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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2008-05-14 8:17 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-14 8:02 [RFC/PATCH 0/6] memcg: peformance improvement at el. v3 KAMEZAWA Hiroyuki
2008-05-14 8:02 ` KAMEZAWA Hiroyuki
2008-05-14 8:04 ` [RFC/PATCH 1/6] memcg: drop_pages at force_empty KAMEZAWA Hiroyuki
2008-05-14 8:04 ` KAMEZAWA Hiroyuki
2008-05-14 8:07 ` [RFC/PATCH 2/6] memcg: remove refcnt KAMEZAWA Hiroyuki
2008-05-14 8:07 ` KAMEZAWA Hiroyuki
2008-05-15 1:42 ` Li Zefan
2008-05-15 1:42 ` Li Zefan
2008-05-15 1:57 ` KAMEZAWA Hiroyuki
2008-05-15 1:57 ` KAMEZAWA Hiroyuki
2008-05-15 3:34 ` KAMEZAWA Hiroyuki
2008-05-15 3:34 ` KAMEZAWA Hiroyuki
2008-05-14 8:08 ` [RFC/PATCH 3/6] memcg: handle swapcache KAMEZAWA Hiroyuki
2008-05-14 8:08 ` KAMEZAWA Hiroyuki
2008-05-14 8:10 ` [RFC/PATCH 4/6] memcg: shmem reclaim helper KAMEZAWA Hiroyuki
2008-05-14 8:10 ` KAMEZAWA Hiroyuki
2008-05-14 8:15 ` Li Zefan [this message]
2008-05-14 8:15 ` Li Zefan
2008-05-14 8:25 ` KAMEZAWA Hiroyuki
2008-05-14 8:25 ` KAMEZAWA Hiroyuki
2008-05-14 8:23 ` Li Zefan
2008-05-14 8:23 ` Li Zefan
2008-05-14 8:32 ` KAMEZAWA Hiroyuki
2008-05-14 8:32 ` KAMEZAWA Hiroyuki
2008-05-14 8:11 ` [RFC/PATCH 5/6] memcg: optimize branch KAMEZAWA Hiroyuki
2008-05-14 8:11 ` KAMEZAWA Hiroyuki
2008-05-14 8:13 ` [RFC/PATCH 6/6] memcg: remove redundant check at charge KAMEZAWA Hiroyuki
2008-05-14 8:13 ` KAMEZAWA Hiroyuki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=482A9FB5.4020202@cn.fujitsu.com \
--to=lizf@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=hugh@veritas.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=xemul@openvz.org \
--cc=yamamoto@valinux.co.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.