From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
"nishimura@mxp.nes.nec.co.jp" <nishimura@mxp.nes.nec.co.jp>,
"xemul@openvz.org" <xemul@openvz.org>,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Dave Hansen <haveblue@us.ibm.com>,
ryov@valinux.co.jp
Subject: Re: [PATCH 6/12] memcg optimize percpu stat
Date: Fri, 26 Sep 2008 15:23:11 +0530 [thread overview]
Message-ID: <48DCB107.1020307@linux.vnet.ibm.com> (raw)
In-Reply-To: <20080925151823.62bf6bd6.kamezawa.hiroyu@jp.fujitsu.com>
KAMEZAWA Hiroyuki wrote:
> Some obvious optimization to memcg.
>
> I found mem_cgroup_charge_statistics() is a little big (in object) and
> does unnecessary address calclation.
> This patch is for optimization to reduce the size of this function.
>
> And res_counter_charge() is 'likely' to success.
>
> Changelog v3->v4:
> - merged with an other leaf patch.
>
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
> mm/memcontrol.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
> Index: mmotm-2.6.27-rc7+/mm/memcontrol.c
> ===================================================================
> --- mmotm-2.6.27-rc7+.orig/mm/memcontrol.c
> +++ mmotm-2.6.27-rc7+/mm/memcontrol.c
> @@ -66,11 +66,10 @@ struct mem_cgroup_stat {
> /*
> * For accounting under irq disable, no need for increment preempt count.
> */
> -static void __mem_cgroup_stat_add_safe(struct mem_cgroup_stat *stat,
> +static inline void __mem_cgroup_stat_add_safe(struct mem_cgroup_stat_cpu *stat,
> enum mem_cgroup_stat_index idx, int val)
> {
> - int cpu = smp_processor_id();
> - stat->cpustat[cpu].count[idx] += val;
> + stat->count[idx] += val;
> }
>
> static s64 mem_cgroup_read_stat(struct mem_cgroup_stat *stat,
> @@ -237,18 +236,21 @@ static void mem_cgroup_charge_statistics
> {
> int val = (charge)? 1 : -1;
> struct mem_cgroup_stat *stat = &mem->stat;
> + struct mem_cgroup_stat_cpu *cpustat;
>
> VM_BUG_ON(!irqs_disabled());
> +
> + cpustat = &stat->cpustat[smp_processor_id()];
> if (PageCgroupCache(pc))
> - __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_CACHE, val);
> + __mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_CACHE, val);
> else
> - __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_RSS, val);
> + __mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_RSS, val);
>
> if (charge)
> - __mem_cgroup_stat_add_safe(stat,
> + __mem_cgroup_stat_add_safe(cpustat,
> MEM_CGROUP_STAT_PGPGIN_COUNT, 1);
> else
> - __mem_cgroup_stat_add_safe(stat,
> + __mem_cgroup_stat_add_safe(cpustat,
> MEM_CGROUP_STAT_PGPGOUT_COUNT, 1);
> }
>
> @@ -609,7 +611,7 @@ static int mem_cgroup_charge_common(stru
> css_get(&memcg->css);
> }
>
> - while (res_counter_charge(&mem->res, PAGE_SIZE)) {
> + while (unlikely(res_counter_charge(&mem->res, PAGE_SIZE))) {
> if (!(gfp_mask & __GFP_WAIT))
> goto out;
>
>
Looks good to me
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>
--
Balbir
WARNING: multiple messages have this Message-ID (diff)
From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
"nishimura@mxp.nes.nec.co.jp" <nishimura@mxp.nes.nec.co.jp>,
"xemul@openvz.org" <xemul@openvz.org>,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Dave Hansen <haveblue@us.ibm.com>,
ryov@valinux.co.jp
Subject: Re: [PATCH 6/12] memcg optimize percpu stat
Date: Fri, 26 Sep 2008 15:23:11 +0530 [thread overview]
Message-ID: <48DCB107.1020307@linux.vnet.ibm.com> (raw)
In-Reply-To: <20080925151823.62bf6bd6.kamezawa.hiroyu@jp.fujitsu.com>
KAMEZAWA Hiroyuki wrote:
> Some obvious optimization to memcg.
>
> I found mem_cgroup_charge_statistics() is a little big (in object) and
> does unnecessary address calclation.
> This patch is for optimization to reduce the size of this function.
>
> And res_counter_charge() is 'likely' to success.
>
> Changelog v3->v4:
> - merged with an other leaf patch.
>
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
> mm/memcontrol.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
> Index: mmotm-2.6.27-rc7+/mm/memcontrol.c
> ===================================================================
> --- mmotm-2.6.27-rc7+.orig/mm/memcontrol.c
> +++ mmotm-2.6.27-rc7+/mm/memcontrol.c
> @@ -66,11 +66,10 @@ struct mem_cgroup_stat {
> /*
> * For accounting under irq disable, no need for increment preempt count.
> */
> -static void __mem_cgroup_stat_add_safe(struct mem_cgroup_stat *stat,
> +static inline void __mem_cgroup_stat_add_safe(struct mem_cgroup_stat_cpu *stat,
> enum mem_cgroup_stat_index idx, int val)
> {
> - int cpu = smp_processor_id();
> - stat->cpustat[cpu].count[idx] += val;
> + stat->count[idx] += val;
> }
>
> static s64 mem_cgroup_read_stat(struct mem_cgroup_stat *stat,
> @@ -237,18 +236,21 @@ static void mem_cgroup_charge_statistics
> {
> int val = (charge)? 1 : -1;
> struct mem_cgroup_stat *stat = &mem->stat;
> + struct mem_cgroup_stat_cpu *cpustat;
>
> VM_BUG_ON(!irqs_disabled());
> +
> + cpustat = &stat->cpustat[smp_processor_id()];
> if (PageCgroupCache(pc))
> - __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_CACHE, val);
> + __mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_CACHE, val);
> else
> - __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_RSS, val);
> + __mem_cgroup_stat_add_safe(cpustat, MEM_CGROUP_STAT_RSS, val);
>
> if (charge)
> - __mem_cgroup_stat_add_safe(stat,
> + __mem_cgroup_stat_add_safe(cpustat,
> MEM_CGROUP_STAT_PGPGIN_COUNT, 1);
> else
> - __mem_cgroup_stat_add_safe(stat,
> + __mem_cgroup_stat_add_safe(cpustat,
> MEM_CGROUP_STAT_PGPGOUT_COUNT, 1);
> }
>
> @@ -609,7 +611,7 @@ static int mem_cgroup_charge_common(stru
> css_get(&memcg->css);
> }
>
> - while (res_counter_charge(&mem->res, PAGE_SIZE)) {
> + while (unlikely(res_counter_charge(&mem->res, PAGE_SIZE))) {
> if (!(gfp_mask & __GFP_WAIT))
> goto out;
>
>
Looks good to me
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>
--
Balbir
--
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-09-26 9:53 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-25 6:11 [PATCH 0/12] memcg updates v5 KAMEZAWA Hiroyuki
2008-09-25 6:13 ` [PATCH 1/12] memcg avoid accounting special mappings not on LRU KAMEZAWA Hiroyuki
2008-09-26 8:25 ` Balbir Singh
2008-09-26 8:25 ` Balbir Singh
2008-09-26 9:17 ` KAMEZAWA Hiroyuki
2008-09-26 9:17 ` KAMEZAWA Hiroyuki
2008-09-26 9:32 ` Balbir Singh
2008-09-26 9:32 ` Balbir Singh
2008-09-26 9:55 ` KAMEZAWA Hiroyuki
2008-09-26 9:55 ` KAMEZAWA Hiroyuki
2008-09-25 6:14 ` [PATCH 2/12] memcg move charege() call to swapped-in page under lock_page() KAMEZAWA Hiroyuki
2008-09-26 8:36 ` Balbir Singh
2008-09-26 8:36 ` Balbir Singh
2008-09-26 9:18 ` KAMEZAWA Hiroyuki
2008-09-26 9:18 ` KAMEZAWA Hiroyuki
2008-09-25 6:15 ` [PATCH 3/12] memcg make root cgroup unlimited KAMEZAWA Hiroyuki
2008-09-26 8:41 ` Balbir Singh
2008-09-26 8:41 ` Balbir Singh
2008-09-26 9:21 ` KAMEZAWA Hiroyuki
2008-09-26 9:21 ` KAMEZAWA Hiroyuki
2008-09-26 9:29 ` Balbir Singh
2008-09-26 9:29 ` Balbir Singh
2008-09-26 9:59 ` KAMEZAWA Hiroyuki
2008-09-26 9:59 ` KAMEZAWA Hiroyuki
2008-09-25 6:16 ` [PATCH 4/12] memcg make page->mapping NULL before calling uncharge KAMEZAWA Hiroyuki
2008-09-26 9:47 ` Balbir Singh
2008-09-26 9:47 ` Balbir Singh
2008-09-26 10:07 ` KAMEZAWA Hiroyuki
2008-09-26 10:07 ` KAMEZAWA Hiroyuki
2008-09-25 6:17 ` [PATCH 5/12] memcg make page_cgroup->flags atomic KAMEZAWA Hiroyuki
2008-09-27 6:58 ` Balbir Singh
2008-09-27 6:58 ` Balbir Singh
2008-09-25 6:18 ` [PATCH 6/12] memcg optimize percpu stat KAMEZAWA Hiroyuki
2008-09-26 9:53 ` Balbir Singh [this message]
2008-09-26 9:53 ` Balbir Singh
2008-09-25 6:27 ` [PATCH 7/12] memcg add function to move account KAMEZAWA Hiroyuki
2008-09-26 7:30 ` Daisuke Nishimura
2008-09-26 7:30 ` Daisuke Nishimura
2008-09-26 9:24 ` KAMEZAWA Hiroyuki
2008-09-26 9:24 ` KAMEZAWA Hiroyuki
2008-09-27 7:56 ` Balbir Singh
2008-09-27 7:56 ` Balbir Singh
2008-09-27 8:35 ` kamezawa.hiroyu
2008-09-27 8:35 ` kamezawa.hiroyu
2008-09-25 6:29 ` [PATCH 8/12] memcg rewrite force empty to move account to root KAMEZAWA Hiroyuki
2008-09-25 6:32 ` [PATCH 9/12] memcg allocate all page_cgroup at boot KAMEZAWA Hiroyuki
2008-09-25 18:40 ` Dave Hansen
2008-09-25 18:40 ` Dave Hansen
2008-09-26 1:17 ` KAMEZAWA Hiroyuki
2008-09-26 1:17 ` KAMEZAWA Hiroyuki
2008-09-26 1:22 ` KAMEZAWA Hiroyuki
2008-09-26 1:22 ` KAMEZAWA Hiroyuki
2008-09-26 1:00 ` Daisuke Nishimura
2008-09-26 1:00 ` Daisuke Nishimura
2008-09-26 1:43 ` KAMEZAWA Hiroyuki
2008-09-26 1:43 ` KAMEZAWA Hiroyuki
2008-09-26 2:05 ` KAMEZAWA Hiroyuki
2008-09-26 2:05 ` KAMEZAWA Hiroyuki
2008-09-26 5:54 ` Daisuke Nishimura
2008-09-26 5:54 ` Daisuke Nishimura
2008-09-26 6:54 ` KAMEZAWA Hiroyuki
2008-09-26 6:54 ` KAMEZAWA Hiroyuki
2008-09-27 3:47 ` KAMEZAWA Hiroyuki
2008-09-27 3:47 ` KAMEZAWA Hiroyuki
2008-09-27 3:25 ` KAMEZAWA Hiroyuki
2008-09-27 3:25 ` KAMEZAWA Hiroyuki
2008-09-26 2:21 ` [PATCH(fixed) " KAMEZAWA Hiroyuki
2008-09-26 2:21 ` KAMEZAWA Hiroyuki
2008-09-26 2:25 ` [PATCH(fixed) 10/12] free page cgroup from LRU in lazy KAMEZAWA Hiroyuki
2008-09-26 2:25 ` KAMEZAWA Hiroyuki
2008-09-26 2:28 ` [PATCH(fixed) 11/12] free page cgroup from LRU in add KAMEZAWA Hiroyuki
2008-09-26 2:28 ` KAMEZAWA Hiroyuki
2008-10-01 4:03 ` [PATCH 9/12] memcg allocate all page_cgroup at boot Balbir Singh
2008-10-01 4:03 ` Balbir Singh
2008-10-01 5:07 ` KAMEZAWA Hiroyuki
2008-10-01 5:07 ` KAMEZAWA Hiroyuki
2008-10-01 5:30 ` Balbir Singh
2008-10-01 5:30 ` Balbir Singh
2008-10-01 5:41 ` KAMEZAWA Hiroyuki
2008-10-01 5:41 ` KAMEZAWA Hiroyuki
2008-10-01 6:12 ` KAMEZAWA Hiroyuki
2008-10-01 6:12 ` KAMEZAWA Hiroyuki
2008-10-01 6:26 ` Balbir Singh
2008-10-01 6:26 ` Balbir Singh
2008-10-01 5:32 ` KAMEZAWA Hiroyuki
2008-10-01 5:32 ` KAMEZAWA Hiroyuki
2008-10-01 5:59 ` Balbir Singh
2008-10-01 5:59 ` Balbir Singh
2008-10-01 6:17 ` KAMEZAWA Hiroyuki
2008-10-01 6:17 ` KAMEZAWA Hiroyuki
2008-09-25 6:33 ` [PATCH 10/12] memcg free page_cgroup from LRU in lazy KAMEZAWA Hiroyuki
2008-09-25 6:35 ` [PATCH 11/12] memcg add to " KAMEZAWA Hiroyuki
2008-09-25 6:36 ` [PATCH 12/12] memcg: fix race at charging swap-in KAMEZAWA Hiroyuki
2008-09-26 2:32 ` [PATCH 0/12] memcg updates v5 Daisuke Nishimura
2008-09-26 2:32 ` Daisuke Nishimura
2008-09-26 2:58 ` KAMEZAWA Hiroyuki
2008-09-26 2:58 ` KAMEZAWA Hiroyuki
2008-09-26 3:04 ` KAMEZAWA Hiroyuki
2008-09-26 3:04 ` KAMEZAWA Hiroyuki
2008-09-26 3:00 ` Daisuke Nishimura
2008-09-26 3:00 ` Daisuke Nishimura
2008-09-26 4:05 ` KAMEZAWA Hiroyuki
2008-09-26 4:05 ` KAMEZAWA Hiroyuki
2008-09-26 5:24 ` Daisuke Nishimura
2008-09-26 5:24 ` Daisuke Nishimura
2008-09-26 9:28 ` KAMEZAWA Hiroyuki
2008-09-26 9:28 ` KAMEZAWA Hiroyuki
2008-09-26 10:43 ` KAMEZAWA Hiroyuki
2008-09-26 10:43 ` KAMEZAWA Hiroyuki
2008-09-27 2:53 ` KAMEZAWA Hiroyuki
2008-09-27 2:53 ` KAMEZAWA Hiroyuki
2008-09-26 8:18 ` Balbir Singh
2008-09-26 8:18 ` Balbir Singh
2008-09-26 9:22 ` KAMEZAWA Hiroyuki
2008-09-26 9:22 ` KAMEZAWA Hiroyuki
2008-09-26 9:31 ` Balbir Singh
2008-09-26 9:31 ` Balbir Singh
2008-09-26 10:36 ` KAMEZAWA Hiroyuki
2008-09-26 10:36 ` KAMEZAWA Hiroyuki
2008-09-27 3:19 ` KAMEZAWA Hiroyuki
2008-09-27 3:19 ` KAMEZAWA Hiroyuki
2008-09-29 3:02 ` Balbir Singh
2008-09-29 3:02 ` Balbir Singh
2008-09-29 3:27 ` KAMEZAWA Hiroyuki
2008-09-29 3:27 ` 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=48DCB107.1020307@linux.vnet.ibm.com \
--to=balbir@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=haveblue@us.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 \
--cc=ryov@valinux.co.jp \
--cc=xemul@openvz.org \
/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.