All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: balbir@linux.vnet.ibm.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	"nishimura@mxp.nes.nec.co.jp" <nishimura@mxp.nes.nec.co.jp>
Subject: Re: [PATCH] memcg: remove trylock_page_cgroup
Date: Tue, 21 Apr 2009 20:41:04 -0700	[thread overview]
Message-ID: <20090421204104.faf9fc56.akpm@linux-foundation.org> (raw)
In-Reply-To: <20090422121641.eb84a07e.kamezawa.hiroyu@jp.fujitsu.com>

On Wed, 22 Apr 2009 12:16:41 +0900 KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:

> How about this ? worth to be tested, I think.
> -Kame
> ==
> From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> 
> Before synchronized-LRU patch, mem cgroup had its own LRU lock.
> And there was a code which does
> # assume mz as per zone struct of memcg. 
> 
>    spin_lock mz->lru_lock
> 	lock_page_cgroup(pc).
>    and
>    lock_page_cgroup(pc)
> 	spin_lock mz->lru_lock
> 
> because we cannot locate "mz" until we see pc->page_cgroup, we used
> trylock(). But now, we don't have mz->lru_lock. All cgroup
> uses zone->lru_lock for handling list. Moreover, manipulation of
> LRU depends on global LRU now and we can isolate page from LRU by
> very generic way.(isolate_lru_page()).
> So, this kind of trylock is not necessary now.
> 
> I thought I removed all trylock in synchronized-LRU patch but there
> is still one. This patch removes trylock used in memcontrol.c and
> its definition. If someone needs, he should add this again with enough
> reason.
> 
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> ---
>  include/linux/page_cgroup.h |    5 -----
>  mm/memcontrol.c             |    3 +--
>  2 files changed, 1 insertion(+), 7 deletions(-)
> 
> Index: mmotm-2.6.30-Apr21/include/linux/page_cgroup.h
> ===================================================================
> --- mmotm-2.6.30-Apr21.orig/include/linux/page_cgroup.h
> +++ mmotm-2.6.30-Apr21/include/linux/page_cgroup.h
> @@ -61,11 +61,6 @@ static inline void lock_page_cgroup(stru
>  	bit_spin_lock(PCG_LOCK, &pc->flags);
>  }
>  
> -static inline int trylock_page_cgroup(struct page_cgroup *pc)
> -{
> -	return bit_spin_trylock(PCG_LOCK, &pc->flags);
> -}
> -
>  static inline void unlock_page_cgroup(struct page_cgroup *pc)
>  {
>  	bit_spin_unlock(PCG_LOCK, &pc->flags);
> Index: mmotm-2.6.30-Apr21/mm/memcontrol.c
> ===================================================================
> --- mmotm-2.6.30-Apr21.orig/mm/memcontrol.c
> +++ mmotm-2.6.30-Apr21/mm/memcontrol.c
> @@ -1148,8 +1148,7 @@ static int mem_cgroup_move_account(struc
>  	from_mz =  mem_cgroup_zoneinfo(from, nid, zid);
>  	to_mz =  mem_cgroup_zoneinfo(to, nid, zid);
>  
> -	if (!trylock_page_cgroup(pc))
> -		return ret;
> +	lock_page_cgroup(pc);
>  
>  	if (!PageCgroupUsed(pc))
>  		goto out;

But we can't remove that nasty `while (loop--)' thing?

I expect that it will reliably fail if the caller is running as
SCHED_FIFO and the machine is single-CPU, or if we're trying to yield
to a SCHED_OTHER task which is pinned to this CPU, etc.  The cond_resched()
won't work.


WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: balbir@linux.vnet.ibm.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	"nishimura@mxp.nes.nec.co.jp" <nishimura@mxp.nes.nec.co.jp>
Subject: Re: [PATCH] memcg: remove trylock_page_cgroup
Date: Tue, 21 Apr 2009 20:41:04 -0700	[thread overview]
Message-ID: <20090421204104.faf9fc56.akpm@linux-foundation.org> (raw)
In-Reply-To: <20090422121641.eb84a07e.kamezawa.hiroyu@jp.fujitsu.com>

On Wed, 22 Apr 2009 12:16:41 +0900 KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:

> How about this ? worth to be tested, I think.
> -Kame
> ==
> From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> 
> Before synchronized-LRU patch, mem cgroup had its own LRU lock.
> And there was a code which does
> # assume mz as per zone struct of memcg. 
> 
>    spin_lock mz->lru_lock
> 	lock_page_cgroup(pc).
>    and
>    lock_page_cgroup(pc)
> 	spin_lock mz->lru_lock
> 
> because we cannot locate "mz" until we see pc->page_cgroup, we used
> trylock(). But now, we don't have mz->lru_lock. All cgroup
> uses zone->lru_lock for handling list. Moreover, manipulation of
> LRU depends on global LRU now and we can isolate page from LRU by
> very generic way.(isolate_lru_page()).
> So, this kind of trylock is not necessary now.
> 
> I thought I removed all trylock in synchronized-LRU patch but there
> is still one. This patch removes trylock used in memcontrol.c and
> its definition. If someone needs, he should add this again with enough
> reason.
> 
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> ---
>  include/linux/page_cgroup.h |    5 -----
>  mm/memcontrol.c             |    3 +--
>  2 files changed, 1 insertion(+), 7 deletions(-)
> 
> Index: mmotm-2.6.30-Apr21/include/linux/page_cgroup.h
> ===================================================================
> --- mmotm-2.6.30-Apr21.orig/include/linux/page_cgroup.h
> +++ mmotm-2.6.30-Apr21/include/linux/page_cgroup.h
> @@ -61,11 +61,6 @@ static inline void lock_page_cgroup(stru
>  	bit_spin_lock(PCG_LOCK, &pc->flags);
>  }
>  
> -static inline int trylock_page_cgroup(struct page_cgroup *pc)
> -{
> -	return bit_spin_trylock(PCG_LOCK, &pc->flags);
> -}
> -
>  static inline void unlock_page_cgroup(struct page_cgroup *pc)
>  {
>  	bit_spin_unlock(PCG_LOCK, &pc->flags);
> Index: mmotm-2.6.30-Apr21/mm/memcontrol.c
> ===================================================================
> --- mmotm-2.6.30-Apr21.orig/mm/memcontrol.c
> +++ mmotm-2.6.30-Apr21/mm/memcontrol.c
> @@ -1148,8 +1148,7 @@ static int mem_cgroup_move_account(struc
>  	from_mz =  mem_cgroup_zoneinfo(from, nid, zid);
>  	to_mz =  mem_cgroup_zoneinfo(to, nid, zid);
>  
> -	if (!trylock_page_cgroup(pc))
> -		return ret;
> +	lock_page_cgroup(pc);
>  
>  	if (!PageCgroupUsed(pc))
>  		goto out;

But we can't remove that nasty `while (loop--)' thing?

I expect that it will reliably fail if the caller is running as
SCHED_FIFO and the machine is single-CPU, or if we're trying to yield
to a SCHED_OTHER task which is pinned to this CPU, etc.  The cond_resched()
won't work.

--
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>

  reply	other threads:[~2009-04-22  3:44 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-15 12:05 [PATCH] Add file based RSS accounting for memory resource controller (v2) Balbir Singh
2009-04-15 12:05 ` Balbir Singh
2009-04-16  0:53 ` KAMEZAWA Hiroyuki
2009-04-16  0:53   ` KAMEZAWA Hiroyuki
2009-04-16  1:59   ` Balbir Singh
2009-04-16  1:59     ` Balbir Singh
2009-04-16  2:02     ` KAMEZAWA Hiroyuki
2009-04-16  2:02       ` KAMEZAWA Hiroyuki
2009-04-16  7:40       ` KAMEZAWA Hiroyuki
2009-04-16  7:40         ` KAMEZAWA Hiroyuki
2009-04-16  8:15         ` KAMEZAWA Hiroyuki
2009-04-16  8:15           ` KAMEZAWA Hiroyuki
2009-04-16 12:03           ` Balbir Singh
2009-04-16 12:03             ` Balbir Singh
2009-04-17  0:14             ` KAMEZAWA Hiroyuki
2009-04-17  0:14               ` KAMEZAWA Hiroyuki
2009-04-17  0:17               ` KAMEZAWA Hiroyuki
2009-04-17  0:17                 ` KAMEZAWA Hiroyuki
2009-04-17  1:40               ` Balbir Singh
2009-04-17  1:40                 ` Balbir Singh
2009-04-17  2:03                 ` KAMEZAWA Hiroyuki
2009-04-17  2:03                   ` KAMEZAWA Hiroyuki
2009-04-17  3:45                   ` Balbir Singh
2009-04-17  3:45                     ` Balbir Singh
2009-04-17  3:49                     ` KAMEZAWA Hiroyuki
2009-04-17  3:49                       ` KAMEZAWA Hiroyuki
2009-04-17  4:56                       ` Balbir Singh
2009-04-17  4:56                         ` Balbir Singh
2009-04-17  5:17                         ` KAMEZAWA Hiroyuki
2009-04-17  5:17                           ` KAMEZAWA Hiroyuki
2009-04-17  6:47                           ` Balbir Singh
2009-04-17  6:47                             ` Balbir Singh
2009-04-17  6:56                             ` KAMEZAWA Hiroyuki
2009-04-17  6:56                               ` KAMEZAWA Hiroyuki
2009-04-17 14:18                               ` [PATCH] Add file based RSS accounting for memory resource controller (v3) Balbir Singh
2009-04-17 14:18                                 ` Balbir Singh
2009-04-17 16:30                                 ` KAMEZAWA Hiroyuki
2009-04-17 16:30                                   ` KAMEZAWA Hiroyuki
2009-04-21  3:00                                   ` Balbir Singh
2009-04-21  3:00                                     ` Balbir Singh
2009-04-21 20:25                                 ` Andrew Morton
2009-04-21 20:25                                   ` Andrew Morton
2009-04-22  0:02                                   ` KAMEZAWA Hiroyuki
2009-04-22  0:02                                     ` KAMEZAWA Hiroyuki
2009-04-22  3:16                                     ` [PATCH] memcg: remove trylock_page_cgroup KAMEZAWA Hiroyuki
2009-04-22  3:16                                       ` KAMEZAWA Hiroyuki
2009-04-22  3:41                                       ` Andrew Morton [this message]
2009-04-22  3:41                                         ` Andrew Morton
2009-04-22  4:41                                         ` KAMEZAWA Hiroyuki
2009-04-22  4:41                                           ` KAMEZAWA Hiroyuki
2009-04-22  6:01                                           ` Andrew Morton
2009-04-22  6:01                                             ` Andrew Morton
2009-04-22  6:13                                             ` KAMEZAWA Hiroyuki
2009-04-22  6:13                                               ` KAMEZAWA Hiroyuki
2009-04-22  3:19                                     ` [PATCH] Add file based RSS accounting for memory resource controller (v3) Balbir Singh
2009-04-22  3:19                                       ` Balbir Singh
2009-04-16 12:14         ` [PATCH] Add file based RSS accounting for memory resource controller (v2) Balbir Singh
2009-04-16 12:14           ` Balbir Singh
2009-04-16 23:57           ` KAMEZAWA Hiroyuki
2009-04-16 23:57             ` KAMEZAWA Hiroyuki
2009-04-16  3:59     ` Bharata B Rao
2009-04-16  3:59       ` Bharata B Rao
2009-04-16  4:34       ` Balbir Singh
2009-04-16  4:34         ` Balbir Singh

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=20090421204104.faf9fc56.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nishimura@mxp.nes.nec.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.