All of lore.kernel.org
 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 v2 0/4] memcg: Low-limit reclaim
Date: Wed, 28 May 2014 11:28:54 -0400	[thread overview]
Message-ID: <20140528152854.GG2878@cmpxchg.org> (raw)
In-Reply-To: <20140528142144.GL9895@dhcp22.suse.cz>

On Wed, May 28, 2014 at 04:21:44PM +0200, Michal Hocko wrote:
> On Wed 28-05-14 09:49:05, Johannes Weiner wrote:
> > On Wed, May 28, 2014 at 02:10:23PM +0200, Michal Hocko wrote:
> > > Hi Andrew, Johannes,
> > > 
> > > On Mon 28-04-14 14:26:41, Michal Hocko wrote:
> > > > This patchset introduces such low limit that is functionally similar
> > > > to a minimum guarantee. Memcgs which are under their lowlimit are not
> > > > considered eligible for the reclaim (both global and hardlimit) unless
> > > > all groups under the reclaimed hierarchy are below the low limit when
> > > > all of them are considered eligible.
> > > > 
> > > > The previous version of the patchset posted as a RFC
> > > > (http://marc.info/?l=linux-mm&m=138677140628677&w=2) suggested a
> > > > hard guarantee without any fallback. More discussions led me to
> > > > reconsidering the default behavior and come up a more relaxed one. The
> > > > hard requirement can be added later based on a use case which really
> > > > requires. It would be controlled by memory.reclaim_flags knob which
> > > > would specify whether to OOM or fallback (default) when all groups are
> > > > bellow low limit.
> > > 
> > > It seems that we are not in a full agreement about the default behavior
> > > yet. Johannes seems to be more for hard guarantee while I would like to
> > > see the weaker approach first and move to the stronger model later.
> > > Johannes, is this absolutely no-go for you? Do you think it is seriously
> > > handicapping the semantic of the new knob?
> > 
> > Well we certainly can't start OOMing where we previously didn't,
> > that's called a regression and automatically limits our options.
> > 
> > Any unexpected OOMs will be much more acceptable from a new feature
> > than from configuration that previously "worked" and then stopped.
> 
> Yes and we are not talking about regressions, are we?
> 
> > > My main motivation for the weaker model is that it is hard to see all
> > > the corner case right now and once we hit them I would like to see a
> > > graceful fallback rather than fatal action like OOM killer. Besides that
> > > the usaceses I am mostly interested in are OK with fallback when the
> > > alternative would be OOM killer. I also feel that introducing a knob
> > > with a weaker semantic which can be made stronger later is a sensible
> > > way to go.
> > 
> > We can't make it stronger, but we can make it weaker. 
> 
> Why cannot we make it stronger by a knob/configuration option?

Why can't we make it weaker by a knob?  Why should we design the
default for unforeseeable cornercases rather than make the default
make sense for existing cases and give cornercases a fallback once
they show up?

> > Stronger is the simpler definition, it's simpler code,
> 
> The code is not really that much simpler. The one you have posted will
> not work I am afraid. I haven't tested it yet but I remember I had to do
> some tweaks to the reclaim path to not end up in an endless loop in the
> direct reclaim (http://marc.info/?l=linux-mm&m=138677140828678&w=2 and
> http://marc.info/?l=linux-mm&m=138677141328682&w=2).

That's just a result of do_try_to_free_pages being stupid and using
its own zonelist loop to check reclaimability by duplicating all the
checks instead of properly using returned state of shrink_zones().
Something that would be worth fixing regardless of memcg guarantees.

Or maybe we could add the guaranteed lru pages to sc->nr_scanned.

> > your usecases are fine with it,
> 
> my usecases do not overcommit low_limit on the available memory, so far
> so good, but once we hit a corner cases when limits are set properly but
> we end up not being able to reclaim anybody in a zone then OOM sounds
> too brutal.

What cornercases?

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

WARNING: multiple messages have this Message-ID (diff)
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 v2 0/4] memcg: Low-limit reclaim
Date: Wed, 28 May 2014 11:28:54 -0400	[thread overview]
Message-ID: <20140528152854.GG2878@cmpxchg.org> (raw)
In-Reply-To: <20140528142144.GL9895@dhcp22.suse.cz>

On Wed, May 28, 2014 at 04:21:44PM +0200, Michal Hocko wrote:
> On Wed 28-05-14 09:49:05, Johannes Weiner wrote:
> > On Wed, May 28, 2014 at 02:10:23PM +0200, Michal Hocko wrote:
> > > Hi Andrew, Johannes,
> > > 
> > > On Mon 28-04-14 14:26:41, Michal Hocko wrote:
> > > > This patchset introduces such low limit that is functionally similar
> > > > to a minimum guarantee. Memcgs which are under their lowlimit are not
> > > > considered eligible for the reclaim (both global and hardlimit) unless
> > > > all groups under the reclaimed hierarchy are below the low limit when
> > > > all of them are considered eligible.
> > > > 
> > > > The previous version of the patchset posted as a RFC
> > > > (http://marc.info/?l=linux-mm&m=138677140628677&w=2) suggested a
> > > > hard guarantee without any fallback. More discussions led me to
> > > > reconsidering the default behavior and come up a more relaxed one. The
> > > > hard requirement can be added later based on a use case which really
> > > > requires. It would be controlled by memory.reclaim_flags knob which
> > > > would specify whether to OOM or fallback (default) when all groups are
> > > > bellow low limit.
> > > 
> > > It seems that we are not in a full agreement about the default behavior
> > > yet. Johannes seems to be more for hard guarantee while I would like to
> > > see the weaker approach first and move to the stronger model later.
> > > Johannes, is this absolutely no-go for you? Do you think it is seriously
> > > handicapping the semantic of the new knob?
> > 
> > Well we certainly can't start OOMing where we previously didn't,
> > that's called a regression and automatically limits our options.
> > 
> > Any unexpected OOMs will be much more acceptable from a new feature
> > than from configuration that previously "worked" and then stopped.
> 
> Yes and we are not talking about regressions, are we?
> 
> > > My main motivation for the weaker model is that it is hard to see all
> > > the corner case right now and once we hit them I would like to see a
> > > graceful fallback rather than fatal action like OOM killer. Besides that
> > > the usaceses I am mostly interested in are OK with fallback when the
> > > alternative would be OOM killer. I also feel that introducing a knob
> > > with a weaker semantic which can be made stronger later is a sensible
> > > way to go.
> > 
> > We can't make it stronger, but we can make it weaker. 
> 
> Why cannot we make it stronger by a knob/configuration option?

Why can't we make it weaker by a knob?  Why should we design the
default for unforeseeable cornercases rather than make the default
make sense for existing cases and give cornercases a fallback once
they show up?

> > Stronger is the simpler definition, it's simpler code,
> 
> The code is not really that much simpler. The one you have posted will
> not work I am afraid. I haven't tested it yet but I remember I had to do
> some tweaks to the reclaim path to not end up in an endless loop in the
> direct reclaim (http://marc.info/?l=linux-mm&m=138677140828678&w=2 and
> http://marc.info/?l=linux-mm&m=138677141328682&w=2).

That's just a result of do_try_to_free_pages being stupid and using
its own zonelist loop to check reclaimability by duplicating all the
checks instead of properly using returned state of shrink_zones().
Something that would be worth fixing regardless of memcg guarantees.

Or maybe we could add the guaranteed lru pages to sc->nr_scanned.

> > your usecases are fine with it,
> 
> my usecases do not overcommit low_limit on the available memory, so far
> so good, but once we hit a corner cases when limits are set properly but
> we end up not being able to reclaim anybody in a zone then OOM sounds
> too brutal.

What cornercases?

  reply	other threads:[~2014-05-28 15:29 UTC|newest]

Thread overview: 196+ 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 ` Michal Hocko
2014-04-28 12:26 ` [PATCH 1/4] memcg, mm: introduce lowlimit reclaim Michal Hocko
2014-04-28 12:26   ` Michal Hocko
2014-04-30 22:55   ` Johannes Weiner
2014-04-30 22:55     ` Johannes Weiner
2014-05-02  9:36     ` Michal Hocko
2014-05-02  9:36       ` Michal Hocko
2014-05-02 12:07       ` Michal Hocko
2014-05-02 12:07         ` Michal Hocko
2014-05-02 13:01         ` Johannes Weiner
2014-05-02 13:01           ` Johannes Weiner
2014-05-02 14:15           ` Michal Hocko
2014-05-02 14:15             ` Michal Hocko
2014-05-02 15:04             ` Johannes Weiner
2014-05-02 15:04               ` Johannes Weiner
2014-05-02 15:11               ` Michal Hocko
2014-05-02 15:11                 ` Michal Hocko
2014-05-02 15:34                 ` Johannes Weiner
2014-05-02 15:34                   ` Johannes Weiner
2014-05-02 15:48                   ` Michal Hocko
2014-05-02 15:48                     ` Michal Hocko
2014-05-06 19:58                     ` Michal Hocko
2014-05-06 19:58                       ` Michal Hocko
2014-05-02 15:58       ` Johannes Weiner
2014-05-02 15:58         ` Johannes Weiner
2014-05-02 16:49         ` Michal Hocko
2014-05-02 16:49           ` Michal Hocko
2014-05-02 22:00           ` Johannes Weiner
2014-05-02 22:00             ` Johannes Weiner
2014-05-05 14:21             ` Michal Hocko
2014-05-05 14:21               ` Michal Hocko
2014-05-19 16:18               ` Michal Hocko
2014-05-19 16:18                 ` Michal Hocko
2014-06-11 15:15               ` Johannes Weiner
2014-06-11 15:15                 ` Johannes Weiner
2014-06-11 16:08                 ` Michal Hocko
2014-06-11 16:08                   ` Michal Hocko
2014-05-06 13:29             ` Johannes Weiner
2014-05-06 14:32               ` Michal Hocko
2014-05-06 14:32                 ` Michal Hocko
2014-05-06 15:21                 ` Johannes Weiner
2014-05-06 15:21                   ` Johannes Weiner
2014-05-06 16:12                   ` Michal Hocko
2014-05-06 16:12                     ` Michal Hocko
2014-05-06 16:51                     ` Johannes Weiner
2014-05-06 16:51                       ` Johannes Weiner
2014-05-06 18:30                       ` Michal Hocko
2014-05-06 18:30                         ` Michal Hocko
2014-05-06 19:55                         ` Johannes Weiner
2014-05-06 19:55                           ` Johannes Weiner
2014-04-28 12:26 ` [PATCH 2/4] memcg: Allow setting low_limit Michal Hocko
2014-04-28 12:26   ` Michal Hocko
2014-04-28 12:26 ` [PATCH 3/4] memcg, doc: clarify global vs. limit reclaims Michal Hocko
2014-04-28 12:26   ` Michal Hocko
2014-04-30 23:03   ` Johannes Weiner
2014-04-30 23:03     ` Johannes Weiner
2014-05-02  9:43     ` Michal Hocko
2014-05-02  9:43       ` Michal Hocko
2014-05-06 19:56       ` 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-28 12:26   ` Michal Hocko
2014-04-30 22:57   ` Johannes Weiner
2014-04-30 22:57     ` Johannes Weiner
2014-05-02  9:46     ` Michal Hocko
2014-05-02  9:46       ` Michal Hocko
2014-04-28 15:46 ` [PATCH v2 0/4] memcg: Low-limit reclaim Roman Gushchin
2014-04-28 15:46   ` Roman Gushchin
2014-04-29  7:42   ` Greg Thelen
2014-04-29  7:42     ` Greg Thelen
2014-04-29 10:50     ` Roman Gushchin
2014-04-29 10:50       ` Roman Gushchin
2014-04-29 12:54       ` Michal Hocko
2014-04-29 12:54         ` Michal Hocko
2014-04-30 21:52 ` Andrew Morton
2014-04-30 21:52   ` Andrew Morton
2014-04-30 22:49   ` Johannes Weiner
2014-04-30 22:49     ` Johannes Weiner
2014-05-02 12:03   ` Michal Hocko
2014-05-02 12:03     ` Michal Hocko
2014-04-30 21:59 ` Andrew Morton
2014-04-30 21:59   ` Andrew Morton
2014-05-02 11:22   ` Michal Hocko
2014-05-02 11:22     ` Michal Hocko
2014-05-28 12:10 ` Michal Hocko
2014-05-28 12:10   ` Michal Hocko
2014-05-28 13:49   ` Johannes Weiner
2014-05-28 13:49     ` Johannes Weiner
2014-05-28 14:21     ` Michal Hocko
2014-05-28 14:21       ` Michal Hocko
2014-05-28 15:28       ` Johannes Weiner [this message]
2014-05-28 15:28         ` Johannes Weiner
2014-05-28 15:54         ` Michal Hocko
2014-05-28 15:54           ` Michal Hocko
2014-05-28 16:33           ` Johannes Weiner
2014-05-28 16:33             ` Johannes Weiner
2014-06-03 11:07             ` Michal Hocko
2014-06-03 11:07               ` Michal Hocko
2014-06-03 14:22               ` Johannes Weiner
2014-06-03 14:22                 ` Johannes Weiner
2014-06-04 14:46                 ` Michal Hocko
2014-06-04 14:46                   ` Michal Hocko
2014-06-04 15:44                   ` Johannes Weiner
2014-06-04 15:44                     ` Johannes Weiner
2014-06-04 19:18                     ` Hugh Dickins
2014-06-04 19:18                       ` Hugh Dickins
2014-06-04 21:45                       ` Johannes Weiner
2014-06-04 21:45                         ` Johannes Weiner
2014-06-05 14:51                         ` Michal Hocko
2014-06-05 14:51                           ` Michal Hocko
2014-06-05 16:10                           ` Johannes Weiner
2014-06-05 16:10                             ` Johannes Weiner
2014-06-05 16:43                             ` Michal Hocko
2014-06-05 16:43                               ` Michal Hocko
2014-06-05 18:23                               ` Johannes Weiner
2014-06-05 18:23                                 ` Johannes Weiner
2014-06-06 14:44                                 ` Michal Hocko
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                                     ` Michal Hocko
2014-06-06 14:46                                     ` [PATCH 2/2] memcg: Allow hard guarantee mode for low limit reclaim Michal Hocko
2014-06-06 14:46                                       ` Michal Hocko
2014-06-06 15:29                                       ` Tejun Heo
2014-06-06 15:29                                         ` Tejun Heo
2014-06-06 15:34                                         ` Tejun Heo
2014-06-06 15:34                                           ` Tejun Heo
2014-06-09  8:30                                         ` Michal Hocko
2014-06-09  8:30                                           ` Michal Hocko
2014-06-09 13:54                                           ` Tejun Heo
2014-06-09 13:54                                             ` Tejun Heo
2014-06-09 22:52                                       ` Greg Thelen
2014-06-09 22:52                                         ` Greg Thelen
2014-06-10 16:57                                         ` Johannes Weiner
2014-06-10 16:57                                           ` Johannes Weiner
2014-06-10 22:16                                           ` Greg Thelen
2014-06-10 22:16                                             ` Greg Thelen
2014-06-11  7:57                                           ` Michal Hocko
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                                               ` Michal Hocko
2014-06-11  8:00                                               ` [PATCH 2/2] memcg: Allow guarantee reclaim Michal Hocko
2014-06-11  8:00                                                 ` Michal Hocko
2014-06-11 15:36                                                 ` Johannes Weiner
2014-06-11 15:36                                                   ` Johannes Weiner
2014-06-12 13:22                                                   ` Michal Hocko
2014-06-12 13:22                                                     ` Michal Hocko
2014-06-12 13:56                                                     ` Johannes Weiner
2014-06-12 13:56                                                       ` Johannes Weiner
2014-06-12 14:22                                                       ` Michal Hocko
2014-06-12 14:22                                                         ` Michal Hocko
2014-06-12 16:17                                                         ` Tejun Heo
2014-06-12 16:17                                                           ` Tejun Heo
2014-06-16 12:59                                                           ` Michal Hocko
2014-06-16 12:59                                                             ` Michal Hocko
2014-06-16 13:57                                                             ` Tejun Heo
2014-06-16 13:57                                                               ` Tejun Heo
2014-06-16 14:04                                                               ` Michal Hocko
2014-06-16 14:04                                                                 ` Michal Hocko
2014-06-16 14:12                                                                 ` Tejun Heo
2014-06-16 14:12                                                                   ` Tejun Heo
2014-06-16 14:29                                                                   ` Michal Hocko
2014-06-16 14:29                                                                     ` Michal Hocko
2014-06-16 14:40                                                                     ` Tejun Heo
2014-06-16 14:40                                                                       ` Tejun Heo
2014-06-12 16:51                                                         ` Johannes Weiner
2014-06-12 16:51                                                           ` Johannes Weiner
2014-06-16 13:22                                                           ` Michal Hocko
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 15:20                                                 ` Johannes Weiner
2014-06-11 16:14                                                 ` Michal Hocko
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 12:31                                               ` Tejun Heo
2014-06-11 14:11                                               ` Michal Hocko
2014-06-11 14:11                                                 ` Michal Hocko
2014-06-11 15:34                                                 ` Tejun Heo
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 19:36                         ` Tejun Heo
2014-06-05 14:32                     ` Michal Hocko
2014-06-05 14:32                       ` Michal Hocko
2014-06-05 15:43                       ` Johannes Weiner
2014-06-05 15:43                         ` Johannes Weiner
2014-06-05 16:09                         ` Michal Hocko
2014-06-05 16:09                           ` Michal Hocko
2014-06-05 16:46                           ` Johannes Weiner
2014-06-05 16:46                             ` Johannes Weiner
2014-05-28 16:17         ` Greg Thelen
2014-05-28 16:17           ` Greg Thelen
2014-06-03 11:09           ` Michal Hocko
2014-06-03 11:09             ` Michal Hocko
2014-06-03 14:01             ` Greg Thelen
2014-06-03 14:44               ` Michal Hocko
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=20140528152854.GG2878@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 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.