All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ying Han <yinghan@google.com>
To: Zhu Yanhai <zhu.yanhai@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Pavel Emelyanov <xemul@openvz.org>,
	Balbir Singh <balbir@linux.vnet.ibm.com>,
	Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
	Li Zefan <lizf@cn.fujitsu.com>, Mel Gorman <mel@csn.ul.ie>,
	Christoph Lameter <cl@linux.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Rik van Riel <riel@redhat.com>, Hugh Dickins <hughd@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Tejun Heo <tj@kernel.org>, Michal Hocko <mhocko@suse.cz>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dave Hansen <dave@linux.vnet.ibm.com>,
	linux-mm@kvack.org
Subject: Re: [PATCH V3 2/7] Add per memcg reclaim watermarks
Date: Thu, 14 Apr 2011 10:43:33 -0700	[thread overview]
Message-ID: <BANLkTimmBpbRvs-7oyhQoP32kTJz4Pe6Lg@mail.gmail.com> (raw)
In-Reply-To: <BANLkTimR+Tn+AccUt3dxqXhSVA8tUp_xDg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4011 bytes --]

On Thu, Apr 14, 2011 at 1:24 AM, Zhu Yanhai <zhu.yanhai@gmail.com> wrote:

> Hi Ying,
>
> 2011/4/13 Ying Han <yinghan@google.com>:
> > +static void setup_per_memcg_wmarks(struct mem_cgroup *mem)
> > +{
> > +       u64 limit;
> > +       unsigned long wmark_ratio;
> > +
> > +       wmark_ratio = get_wmark_ratio(mem);
> > +       limit = mem_cgroup_get_limit(mem);
>
> mem_cgroup_get_limit doesn't return the correct limit for you,
> actually it's only for OOM killer.
> You should use
> limit = res_counter_read_u64(&mem->res, RES_LIMIT) directly.
> Otherwise in the box which has swapon, you will get a huge
> number here.
> e.g.
>  [root@zyh-fedora a]# echo 500m > memory.limit_in_bytes
> [root@zyh-fedora a]# cat memory.limit_in_bytes
> 524288000
> [root@zyh-fedora a]# cat memory.reclaim_wmarks
> low_wmark 9114218496
> high_wmark 9114218496
>

thank you~ will fix it next post.

--Ying

>
> Regards,
> Zhu Yanhai
>
>
> > +       if (wmark_ratio == 0) {
> > +               res_counter_set_low_wmark_limit(&mem->res, limit);
> > +               res_counter_set_high_wmark_limit(&mem->res, limit);
> > +       } else {
> > +               unsigned long low_wmark, high_wmark;
> > +               unsigned long long tmp = (wmark_ratio * limit) / 100;
> > +
> > +               low_wmark = tmp;
> > +               high_wmark = tmp - (tmp >> 8);
> > +               res_counter_set_low_wmark_limit(&mem->res, low_wmark);
> > +               res_counter_set_high_wmark_limit(&mem->res, high_wmark);
> > +       }
> > +}
> > +
> >  /*
> >  * Following LRU functions are allowed to be used without PCG_LOCK.
> >  * Operations are called by routine of global LRU independently from
> memcg.
> > @@ -1195,6 +1219,16 @@ static unsigned int get_swappiness(struct
> mem_cgroup *memcg)
> >        return memcg->swappiness;
> >  }
> >
> > +static unsigned long get_wmark_ratio(struct mem_cgroup *memcg)
> > +{
> > +       struct cgroup *cgrp = memcg->css.cgroup;
> > +
> > +       VM_BUG_ON(!cgrp);
> > +       VM_BUG_ON(!cgrp->parent);
> > +
> > +       return memcg->wmark_ratio;
> > +}
> > +
> >  static void mem_cgroup_start_move(struct mem_cgroup *mem)
> >  {
> >        int cpu;
> > @@ -3205,6 +3239,7 @@ static int mem_cgroup_resize_limit(struct
> mem_cgroup *memcg,
> >                        else
> >                                memcg->memsw_is_minimum = false;
> >                }
> > +               setup_per_memcg_wmarks(memcg);
> >                mutex_unlock(&set_limit_mutex);
> >
> >                if (!ret)
> > @@ -3264,6 +3299,7 @@ static int mem_cgroup_resize_memsw_limit(struct
> mem_cgroup *memcg,
> >                        else
> >                                memcg->memsw_is_minimum = false;
> >                }
> > +               setup_per_memcg_wmarks(memcg);
> >                mutex_unlock(&set_limit_mutex);
> >
> >                if (!ret)
> > @@ -4521,6 +4557,22 @@ static void __init enable_swap_cgroup(void)
> >  }
> >  #endif
> >
> > +int mem_cgroup_watermark_ok(struct mem_cgroup *mem,
> > +                               int charge_flags)
> > +{
> > +       long ret = 0;
> > +       int flags = CHARGE_WMARK_LOW | CHARGE_WMARK_HIGH;
> > +
> > +       VM_BUG_ON((charge_flags & flags) == flags);
> > +
> > +       if (charge_flags & CHARGE_WMARK_LOW)
> > +               ret = res_counter_check_under_low_wmark_limit(&mem->res);
> > +       if (charge_flags & CHARGE_WMARK_HIGH)
> > +               ret =
> res_counter_check_under_high_wmark_limit(&mem->res);
> > +
> > +       return ret;
> > +}
> > +
> >  static int mem_cgroup_soft_limit_tree_init(void)
> >  {
> >        struct mem_cgroup_tree_per_node *rtpn;
> > --
> > 1.7.3.1
> >
> > --
> > 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/ .
> > Fight unfair telecom internet charges in Canada: sign
> http://stopthemeter.ca/
> > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
> >
>

[-- Attachment #2: Type: text/html, Size: 5481 bytes --]

  reply	other threads:[~2011-04-14 17:43 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-13  7:03 [PATCH V3 0/7] memcg: per cgroup background reclaim Ying Han
2011-04-13  7:03 ` [PATCH V3 1/7] Add kswapd descriptor Ying Han
2011-04-13  7:03 ` [PATCH V3 2/7] Add per memcg reclaim watermarks Ying Han
2011-04-13  8:25   ` KAMEZAWA Hiroyuki
2011-04-13 18:40     ` Ying Han
2011-04-14  0:27       ` KAMEZAWA Hiroyuki
2011-04-14  8:24   ` Zhu Yanhai
2011-04-14 17:43     ` Ying Han [this message]
2011-04-13  7:03 ` [PATCH V3 3/7] New APIs to adjust per-memcg wmarks Ying Han
2011-04-13  8:30   ` KAMEZAWA Hiroyuki
2011-04-13 18:46     ` Ying Han
2011-04-13  7:03 ` [PATCH V3 4/7] Infrastructure to support per-memcg reclaim Ying Han
2011-04-14  3:57   ` Zhu Yanhai
2011-04-14  6:32     ` Ying Han
2011-04-13  7:03 ` [PATCH V3 5/7] Per-memcg background reclaim Ying Han
2011-04-13  8:58   ` KAMEZAWA Hiroyuki
2011-04-13 22:45     ` Ying Han
2011-04-13  7:03 ` [PATCH V3 6/7] Enable per-memcg " Ying Han
2011-04-13  9:05   ` KAMEZAWA Hiroyuki
2011-04-13 21:20     ` Ying Han
2011-04-14  0:30       ` KAMEZAWA Hiroyuki
2011-04-13  7:03 ` [PATCH V3 7/7] Add some per-memcg stats Ying Han
2011-04-13  7:47 ` [PATCH V3 0/7] memcg: per cgroup background reclaim KAMEZAWA Hiroyuki
2011-04-13 17:53   ` Ying Han
2011-04-14  0:14     ` KAMEZAWA Hiroyuki
2011-04-14 17:38       ` Ying Han
2011-04-14 21:59         ` Ying Han

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=BANLkTimmBpbRvs-7oyhQoP32kTJz4Pe6Lg@mail.gmail.com \
    --to=yinghan@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=cl@linux.com \
    --cc=dave@linux.vnet.ibm.com \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-mm@kvack.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mel@csn.ul.ie \
    --cc=mhocko@suse.cz \
    --cc=nishimura@mxp.nes.nec.co.jp \
    --cc=riel@redhat.com \
    --cc=tj@kernel.org \
    --cc=xemul@openvz.org \
    --cc=zhu.yanhai@gmail.com \
    /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.