linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Michal Hocko <mhocko@suse.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Greg Thelen <gthelen@google.com>,
	Michel Lespinasse <walken@google.com>, Tejun Heo <tj@kernel.org>,
	Hugh Dickins <hughd@google.com>,
	Roman Gushchin <klamm@yandex-team.ru>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org, Rik van Riel <riel@redhat.com>
Subject: Re: [PATCH 1/4] memcg, mm: introduce lowlimit reclaim
Date: Tue, 6 May 2014 15:55:31 -0400	[thread overview]
Message-ID: <20140506195531.GL19914@cmpxchg.org> (raw)
In-Reply-To: <20140506183001.GB30921@dhcp22.suse.cz>

On Tue, May 06, 2014 at 08:30:01PM +0200, Michal Hocko wrote:
> On Tue 06-05-14 12:51:50, Johannes Weiner wrote:
> > On Tue, May 06, 2014 at 06:12:56PM +0200, Michal Hocko wrote:
> > > On Tue 06-05-14 11:21:12, Johannes Weiner wrote:
> > > > On Tue, May 06, 2014 at 04:32:42PM +0200, Michal Hocko wrote:
> [...]
> > > > > The strongest point was made by Rik when he claimed that memcg is not
> > > > > aware of memory zones and so one memcg with lowlimit larger than the
> > > > > size of a zone can eat up that zone without any way to free it.
> > > > 
> > > > But who actually cares if an individual zone can be reclaimed?
> > > > 
> > > > Userspace allocations can fall back to any other zone.  Unless there
> > > > are hard bindings, but hopefully nobody binds a memcg to a node that
> > > > is smaller than that memcg's guarantee. 
> > > 
> > > The protected group might spill over to another group and eat it when
> > > another group would be simply pushed out from the node it is bound to.
> > 
> > I don't really understand the point you're trying to make.
> 
> I was just trying to show a case where individual zone matters. To make
> it more specific consider 2 groups A (with low-limit 60% RAM) and B
> (say with low-limit 10% RAM) and bound to a node X (25% of RAM). Now
> having 70% of RAM reserved for guarantee makes some sense, right? B is
> not over-committing the node it is bound to. Yet the A's allocations
> might make pressure on X regardless that the whole system is still doing
> good. This can lead to a situation where X gets depleted and nothing
> would be reclaimable leading to an OOM condition.

Once you assume control of memory *placement* in the system like this,
you can not also pretend to be clueless and have unreclaimable memory
of this magnitude spread around into nodes used by other bound tasks.

If we were to actively support such configurations, we should be doing
direct NUMA balancing and migrate these pages out of node X when B
needs to allocate.  That would fix the problem for all unevictable
memory, not just memcg guarantees, and would prefer node-offloading
over swapping in cases where swap is available.

But really, this whole scenario sounds contrived to me.  And there is
nothing specific about memcg guarantees in there.

> I can imagine that most people would rather see the lowlimit break than
> OOM. And if there is somebody who really wants OOM even under such
> condition then why not, I would be happy to add a knob which would allow
> that. But I feel that the default behavior should be the least explosive
> one...

Memcgs being node-agnostic is a reason *for* doing hard guarantees,
not against it.  If I set up guarantees on a NUMA system balanced by
the kernel, I want them to be honored, and not have my guaranteed
memory reclaimed randomly due to kernel-internal placement decisions.

> > > > And while the pages are not
> > > > reclaimable, they are still movable, so the NUMA balancer is free to
> > > > correct any allocation mistakes later on.
> > > 
> > > Do we want to depend on NUMA balancer, though?
> > 
> > You're missing my point.
> > 
> > This is about which functionality of the system is actually impeded by
> > having large portions of a zone unreclaimable.  Freeing pages in a
> > zone is means to an end, not an end in itself.
> > 
> > We wouldn't depend on the NUMA balancer to "free" a zone, I'm just
> > saying that the NUMA balancer would be unaffected by a zone full of
> > unreclaimable pages, as long as they are movable.
> 
> Agreed. I wasn't objecting to that part. I was merely noticing that we
> do not want to depend on NUMA balancer to fix up placements later just
> because they are unreclaimable due to restrictions defined outside of
> the NUMA scope.

Again, this is not a new problem.  Solve it if you want to, but don't
design a new userspace ABI around a limitation in NUMA node reclaim.

> > So who exactly cares about the ability to reclaim individual zones and
> > how is it a new type of problem compared to existing unreclaimable but
> > movable memory?
> 
> The low limit makes the current situation different. Page allocator
> simply cannot make the best decisions on the placement because it
> doesn't have any idea to which group the page gets charged to and
> therefore whether it gets protected or not. NUMA balancing can help
> to reduce this issues but I do not think it can handle the problem
> itself.

It depends on the task, not on the group.

You can turn your argument upside down: if you fail guarantees just
because a single zone is otherwise unreclaimable, then page allocator
placement ends up dictating which page is guaranteed memory and which
is not.  This really makes no sense to me.

--
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:[~2014-05-06 19:55 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-28 12:26 [PATCH v2 0/4] memcg: Low-limit reclaim Michal Hocko
2014-04-28 12:26 ` [PATCH 1/4] memcg, mm: introduce lowlimit reclaim Michal Hocko
2014-04-30 22:55   ` Johannes Weiner
2014-05-02  9:36     ` Michal Hocko
2014-05-02 12:07       ` Michal Hocko
2014-05-02 13:01         ` Johannes Weiner
2014-05-02 14:15           ` Michal Hocko
2014-05-02 15:04             ` Johannes Weiner
2014-05-02 15:11               ` Michal Hocko
2014-05-02 15:34                 ` Johannes Weiner
2014-05-02 15:48                   ` Michal Hocko
2014-05-06 19:58                     ` Michal Hocko
2014-05-02 15:58       ` Johannes Weiner
2014-05-02 16:49         ` Michal Hocko
2014-05-02 22:00           ` Johannes Weiner
2014-05-05 14:21             ` Michal Hocko
2014-05-19 16:18               ` Michal Hocko
2014-06-11 15:15               ` Johannes Weiner
2014-06-11 16:08                 ` Michal Hocko
2014-05-06 13:29             ` Johannes Weiner
2014-05-06 14:32               ` Michal Hocko
2014-05-06 15:21                 ` Johannes Weiner
2014-05-06 16:12                   ` Michal Hocko
2014-05-06 16:51                     ` Johannes Weiner
2014-05-06 18:30                       ` Michal Hocko
2014-05-06 19:55                         ` Johannes Weiner [this message]
2014-04-28 12:26 ` [PATCH 2/4] memcg: Allow setting low_limit Michal Hocko
2014-04-28 12:26 ` [PATCH 3/4] memcg, doc: clarify global vs. limit reclaims Michal Hocko
2014-04-30 23:03   ` Johannes Weiner
2014-05-02  9:43     ` Michal Hocko
2014-05-06 19:56       ` Michal Hocko
2014-04-28 12:26 ` [PATCH 4/4] memcg: Document memory.low_limit_in_bytes Michal Hocko
2014-04-30 22:57   ` Johannes Weiner
2014-05-02  9:46     ` Michal Hocko
2014-04-28 15:46 ` [PATCH v2 0/4] memcg: Low-limit reclaim Roman Gushchin
2014-04-29  7:42   ` Greg Thelen
2014-04-29 10:50     ` Roman Gushchin
2014-04-29 12:54       ` Michal Hocko
2014-04-30 21:52 ` Andrew Morton
2014-04-30 22:49   ` Johannes Weiner
2014-05-02 12:03   ` Michal Hocko
2014-04-30 21:59 ` Andrew Morton
2014-05-02 11:22   ` Michal Hocko
2014-05-28 12:10 ` Michal Hocko
2014-05-28 13:49   ` Johannes Weiner
2014-05-28 14:21     ` Michal Hocko
2014-05-28 15:28       ` Johannes Weiner
2014-05-28 15:54         ` Michal Hocko
2014-05-28 16:33           ` Johannes Weiner
2014-06-03 11:07             ` Michal Hocko
2014-06-03 14:22               ` Johannes Weiner
2014-06-04 14:46                 ` Michal Hocko
2014-06-04 15:44                   ` Johannes Weiner
2014-06-04 19:18                     ` Hugh Dickins
2014-06-04 21:45                       ` Johannes Weiner
2014-06-05 14:51                         ` Michal Hocko
2014-06-05 16:10                           ` Johannes Weiner
2014-06-05 16:43                             ` Michal Hocko
2014-06-05 18:23                               ` Johannes Weiner
2014-06-06 14:44                                 ` Michal Hocko
2014-06-06 14:46                                   ` [PATCH 1/2] mm, memcg: allow OOM if no memcg is eligible during direct reclaim Michal Hocko
2014-06-06 14:46                                     ` [PATCH 2/2] memcg: Allow hard guarantee mode for low limit reclaim Michal Hocko
2014-06-06 15:29                                       ` Tejun Heo
2014-06-06 15:34                                         ` Tejun Heo
2014-06-09  8:30                                         ` Michal Hocko
2014-06-09 13:54                                           ` Tejun Heo
2014-06-09 22:52                                       ` Greg Thelen
2014-06-10 16:57                                         ` Johannes Weiner
2014-06-10 22:16                                           ` Greg Thelen
2014-06-11  7:57                                           ` Michal Hocko
2014-06-11  8:00                                             ` [PATCH 1/2] mm, memcg: allow OOM if no memcg is eligible during direct reclaim Michal Hocko
2014-06-11  8:00                                               ` [PATCH 2/2] memcg: Allow guarantee reclaim Michal Hocko
2014-06-11 15:36                                                 ` Johannes Weiner
2014-06-12 13:22                                                   ` Michal Hocko
2014-06-12 13:56                                                     ` Johannes Weiner
2014-06-12 14:22                                                       ` Michal Hocko
2014-06-12 16:17                                                         ` Tejun Heo
2014-06-16 12:59                                                           ` Michal Hocko
2014-06-16 13:57                                                             ` Tejun Heo
2014-06-16 14:04                                                               ` Michal Hocko
2014-06-16 14:12                                                                 ` Tejun Heo
2014-06-16 14:29                                                                   ` Michal Hocko
2014-06-16 14:40                                                                     ` Tejun Heo
2014-06-12 16:51                                                         ` Johannes Weiner
2014-06-16 13:22                                                           ` Michal Hocko
2014-06-11 15:20                                               ` [PATCH 1/2] mm, memcg: allow OOM if no memcg is eligible during direct reclaim Johannes Weiner
2014-06-11 16:14                                                 ` Michal Hocko
2014-06-11 12:31                                             ` [PATCH 2/2] memcg: Allow hard guarantee mode for low limit reclaim Tejun Heo
2014-06-11 14:11                                               ` Michal Hocko
2014-06-11 15:34                                                 ` Tejun Heo
2014-06-05 19:36                       ` [PATCH v2 0/4] memcg: Low-limit reclaim Tejun Heo
2014-06-05 14:32                     ` Michal Hocko
2014-06-05 15:43                       ` Johannes Weiner
2014-06-05 16:09                         ` Michal Hocko
2014-06-05 16:46                           ` Johannes Weiner
2014-05-28 16:17         ` Greg Thelen
2014-06-03 11:09           ` Michal Hocko
2014-06-03 14:01             ` Greg Thelen
2014-06-03 14:44               ` Michal Hocko

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=20140506195531.GL19914@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=akpm@linux-foundation.org \
    --cc=gthelen@google.com \
    --cc=hughd@google.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=klamm@yandex-team.ru \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.cz \
    --cc=riel@redhat.com \
    --cc=tj@kernel.org \
    --cc=walken@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox